gpt4 book ai didi

带 EC2 的 Matlab/Octave

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:41 29 4
gpt4 key购买 nike

我想在 EC2 上使用 Matlab,这基本上是一个令人尴尬的并行问题,所以我不一定需要并行工具箱。

在这里阅读博客:

http://aws.typepad.com/aws/2008/11/parallel-comput.html

白皮书的链接实际上会将您带到一个网页,其中显示该服务仅在美国和加拿大可用(我在英国),但您可以注册您的兴趣。

此外,许可证似乎有问题?如果我必须为每个 CPU 购买新的许可证,这对我来说是不可能的。

我的程序并没有真正使用任何像 lsqmin 这样的大型 MATLAB 函数,所以理论上它应该很容易转换为 Octave(我认为)。

如果由于上述任何原因无法将 Matlab 与 EC2 结合使用,谁能告诉我如何将 Octave 与 EC2 结合使用?

function [output]=DElambda(de,data,OF)

P1=zeros(de.d,de.nP);
Pu=zeros(de.d,de.nP);

for i=1:de.d
P1(i,:)=de.min(i,1)+(de.max(i,1)-de.min(i,1))*rand(de.nP,1);
end


P1(:,1:de.d)=diag(de.max);
P1(:,de.d+1:2*de.d)=diag(de.min);


for i=1:de.nP
betas(:,i)=NSS_betas(P1(:,i),data);
end

Params=vertcat(betas,P1);

Fbv=NaN(de.nG,1);
Fbest=realmax;



F=zeros(de.nP,1);
P=zeros(de.nP,1);


for i=1:de.nP

F(i)=OF(Params(:,i)',data);

P(i)=pen(P1(:,i),de,F(i));
F(i)=F(i)+P(i);


end

[Fbest indice] =min(F);
xbest=Params(:,indice);


Col=1:de.nP;

for g=1:de.nG
P0=P1;
rowS=randperm(de.nP)';
colS=randperm(4)';
RS=circshift(rowS,colS(1));
R1=circshift(rowS,colS(2));
R2=circshift(rowS,colS(3));
R3=circshift(rowS,colS(4));

%mutate
Pm=P0(:,R1)+de.F*(P0(:,R2)-P0(:,R3));
%extra mutation
if de.R>0
Pm=Pm+de.r*randn(de.d,de.nP);
end

%crossover
PmElements=rand(de.d,de.nP)<de.CR;
%mPv(MI)=mP(Mi);
if de.oneElementfromPm
Row=unidrnd(de.d,1,de.nP);
ExtraPmElements=sparse(Row,Col,1,de.d,de.nP);
PmElements=PmElements|ExtraPmElements;
end

P0_Elements=~PmElements;
Pu(:,RS)=P0(:,RS).*P0_Elements+PmElements.*Pm;
%%%need to add penalty!!!!!!!!!!!!
%select vector to enter next generation

for i=1:de.nP
betasPu(:,i)=NSS_betas(Pu(:,i),data);
end



ParamsPu=vertcat(betasPu,Pu);
flag=0;
for i=1:de.nP
%for j=1:dates
%Ftemp=feval(OF,Pu(:,i)',data,j);
Ftemp=OF(ParamsPu(:,i)',data);
%end
%Ftemp=OF(Pu(:,i),data);
Ptemp=pen(Pu(:,i),de,F(i));
Ftemp=Ftemp+Ptemp;

if Ftemp<=F(i);
P1(:,i)=Pu(:,i);
F(i)=Ftemp;
if Ftemp < Fbest
Fbest=Ftemp; xbest=ParamsPu(:,i); flag=1;
end
else
P1(:,i)=P0(:,i);
end
end

if flag
Fbv(g)=Fbest;
end

end

output.Fbest=Fbest; output.xbest=xbest; output.Fbv=Fbv;
end



function penVal=pen(mP,pso,vF)

minV=pso.min;
maxV=pso.max;
ww=pso.ww;

A=mP-maxV;
A=A+abs(A);

B=minV-mP;
B=B+abs(B);

C=ww*((mP(1,:)+mP(2,:))-abs(mP(1,:)+mP(2,:)));
penVal=ww*sum(A+B,1)*vF-C;


end

最佳答案

一个不需要额外许可的想法是部署 MATLAB Compiler Runtime (MCR) 在您的 EC2 实例上。然后使用 MATLAB Compiler创建代码的可执行文件并在这些 EC2 实例上运行它们。

The MCR is provided with MATLAB Compiler for distribution with your application and can be deployed royalty-free.

如果您想进一步采用这种方法,请考虑运行一个本地作业队列,在可用的 EC2 实例之间分配工作。 This似乎是一篇关于如何做到这一点的好文章。

关于带 EC2 的 Matlab/Octave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974139/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com