PSO CODE for more than one Equation
显示 更早的评论
Hello! I have done the given problem 198x + 199y + 187z +201w = 200(aproximately equal or equal) Subject to, (x,y,z,w=[0 1].) through PSO(Particle Swarm Optimization)... the whole code for solving one such equation is given below.... next my problem is to solve multiple equation through PSO... Now I have to optimize it for obj_fun having multiple values to calculate. suppose
{
162x + 163y + 161z +164w = 163;
155x + 157y + 157z +154w = 155;
158x + 159y + 157z +156w = 157;
201x + 200y + 203z +201w = 200;
108x + 107y + 107z +109w = 107;....... }
and so on .....suppose hunderds of such equations that i have to solve.. Code given below, is only for one equation... plz help me how to optimize the given code for multiple equations.... so the i could get the best particles for each equation....
Thanks in anticipatiion..........
{%Initialization of PSO parameters
wmax=0.9;
wmin=0.4;
itmax=200; %Maximum iteration number
c1=1.4;
c2=1.4;
for iter=1:itmax
W(iter)=wmax-((wmax-wmin)/itmax)*iter;
end
%**********************************************************
%Initialization of positions of agents
%Initialize Swarm Particles
a=0;
b=5;
N=20;
D=4;
abc(1:4,1)=0;
abc(1:4,2)=1;
lbound=abc(:,1);
ubound=abc(:,2);
for i=1:N
for j=1:D
x(i,j)=rand*(ubound(j)-lbound(j))+lbound(j);
end
end
%Initialization of velocities of agents
%Between -5 , +5, (which can also be started from zero)
m=0;
n=1;
V=m+(n-m)*rand(N,D,1);
%**********************************************************
%Function to be minimized.
for i=1:N;
F(i,1,1)=abs(200-((x(i,1,1)*198) + (x(i,2,1)*199) +(x(i,3,1)*187)+ (x(i,4,1)*201)));
end
%**********************************************************
[C,I]=min(abs(F(:,1,1)));
B(1,1,1)=C;
XX(1,1,1)=I;
gbest(1,1,1)=x(I,1,1);
gbest(1,2,1)=x(I,2,1);
gbest(1,3,1)=x(I,3,1);
gbest(1,4,1)=x(I,4,1);
%********************************************************
%Matrix composed of gbest vector
for p=1:N
for r=1:D
G(p,r,1)=gbest(1,r,1);
end
end
Fbest(1,1,1)=abs(200-((G(1,1,1)*198) + (G(1,2,1)*199) +(G(1,3,1)*187)+ (G(1,4,1)*201)));
for i=1:N;
pbest(i,:,1)=x(i,:,1);
end
V(:,:,2)=W(1)*V(:,:,1)+c1*rand*(pbest(:,:,1)-x(:,:,1))+c2*rand*(G(:,:,1)-x(:,:,1));
x(:,:,2)=x(:,:,1)+V(:,:,2);
Fb(1,1,1)=abs(200-((gbest(1,1,1)*198) + (gbest(1,2,1)*199) +(gbest(1,3,1)*187)+ (gbest(1,4,1)*201)));
%******************************************************
for j=2:itmax-1
% Calculation of new positions
for i=1:N;
F(i,1,j)=abs(200-((x(i,1,j)*198) + (x(i,2,j)*199) +(x(i,3,j)*187)+ (x(i,4,j)*201)));
end
[C,I]=min(abs(F(:,:,j)));
B(1,1,j)=C;
gbest(1,1,j)=x(I,1,j);
gbest(1,2,j)=x(I,2,j);
gbest(1,3,j)=x(I,3,j);
gbest(1,4,j)=x(I,4,j);
Fb(1,1,j)=abs(200-((gbest(1,1,j)*198) + (gbest(1,2,j)*199) +(gbest(1,3,j)*187)+ (gbest(1,4,j)*201)));
[C,I]=min(Fb(1,1,:));
if Fb(1,1,j)<=C
gbest(1,1,j)=gbest(1,1,j);
gbest(1,2,j)=gbest(1,2,j);
gbest(1,3,j)=gbest(1,3,j);
gbest(1,4,j)=gbest(1,4,j);
else
gbest(1,1,j)=gbest(1,1,I);
gbest(1,2,j)=gbest(1,2,I);
gbest(1,3,j)=gbest(1,3,I);
gbest(1,4,j)=gbest(1,4,I);
end
%Matrix composed of gbest vector
for p=1:N
for r=1:D
G(p,r,j)=gbest(1,r,j);
end
end
Fbest(1,1,j)=abs(200-((G(1,1,j)*198) + (G(1,2,j)*199) +(G(1,3,j)*187)+ (G(1,4,j)*201)));
for i=1:N;
[C,I]=min(F(i,1,:));
if F(i,1,j)<=C
pbest(i,:,j)=x(i,:,j);
else
pbest(i,:,j)=x(i,:,I);
end
end
V(:,:,j+1)=W(j)*V(:,:,j)+c1*rand*(pbest(:,:,j)-x(:,:,j))+c2*rand*(G(:,:,j)-x(:,:,j));
x(:,:,j+1)=x(:,:,j)+V(:,:,j+1);
end
4 个评论
Krishna Kumar
2011-6-28
What do you mean by PSO- particle swarm or something else. If you want a code, better use file exchange, and use Answers for clarifying your queries.
Talat
2011-6-28
Krishna Kumar
2011-6-28
Get code in FEX, or if you know PSO make a code yourselves and post your difficulties here. You can get some PSO codes over Internet easily.
Talat
2011-6-28
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Particle Swarm 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!