for j=1:1:vartotal
t1=selfangle(i,j)-angle(i,j);
if t1<-pi
t1=t1+2*pi;
end
if t1>pi
t1=t1-2*pi;
end
t2=gloangle(1,j)-angle(i,j);
if t2<-pi
t2=t2+2*pi;
end
if t2>pi
t2=t2-2*pi;
end
dangle(i,j)=inertia*dangle(i,j)+selfw*rand*t1+globalw*rand*t2;
angle(i,j)=angle(i,j)+dangle(i,j); %移动后的相位
chrom(i,1,j)=cos(angle(i,j)); %移动后的位置
chrom(i,2,j)=sin(angle(i,j)); %移动后的位置
%解空间变换
chromx(i,1,j)=0.5*(varrange(j,2)*(1+chrom(i,1,j))+varrange(j,1)*(1-chrom(i,1,j)));
chromx(i,2,j)=0.5*(varrange(j,2)*(1+chrom(i,2,j))+varrange(j,1)*(1-chrom(i,2,j)));
end
for j=1:1:2
fitness(i,j)=-chromx(i,j,1)*sin((abs(chromx(i,j,2)+1-chromx(i,j,1)))^0.5)*cos((abs(chromx(i,j,2)+1+c
hromx(i,j,1)))^0.5)
-(chromx(i,j,2)+1)*cos((abs(chromx(i,j,2)+1-chromx(i,j,1)))^0.5)*sin((abs(chromx(i,j,2)+1+chromx(i
,j,1)))^0.5);%计算适应度
end
end
%---------粒子位置变异------------------------
for i=1:1:popsize
for j=1:1:vartotal
if rand
end
end
for j=1:1:2
fitness(i,j)=-chromx(i,j,1)*sin((abs(chromx(i,j,2)+1-chromx(i,j,1)))^0.5)*cos((abs(chromx(i,j,2)+1+c
hromx(i,j,1)))^0.5)
-(chromx(i,j,2)+1)*cos((abs(chromx(i,j,2)+1-chromx(i,j,1)))^0.5)*sin((abs(chromx(i,j,2)+1+chromx(i
,j,1)))^0.5);%计算适应度
end
end
%---------统计适应度----------------------------
minfit=fitness(1,1);
if fitness(1,1)>fitness(1,2)
minfit=fitness(1,2);
end
maxfit=fitness(1,2);bestchain=2;
if fitness(1,1)>fitness(1,2)
maxfit=fitness(1,1);bestchain=1;
end
minfitindex=1;maxfitindex=1;
avgfit=(fitness(1,1)+fitness(1,2))/(2*popsize);
for i=2:1:popsize
for j=1:1:2
if minfit>fitness(i,j)
minfit=fitness(i,j);minfitindex=i;
end
if maxfitt2
selfangle(i,:)=angle(i,:);
selfchrom(i,:,:)=chrom(i,:,:);
selfchromx(i,:,:)=chromx(i,:,:);
selffitness(i,:)=fitness(i,:);
end
end
%---------更新全局最优位置--------------------
if glofit511
break;
end %511.7077
end
%---------程序主循环结束-------------------------
bestresult=glofit;
iterationstep=gen;
bestresult
iterationstep
figure(1)
plot(iteration,result)