📄 bpnetwork.m
字号:
clear
for m=1:20
d=250;
w=1;
for i=1:d %初始化
for j=1:2 %随机产生x及v的初始值并将x值赋予pbest
x(i,j)=rand;
v(i,j)=rand;
pbest(i,j)=x(i,j);
end
end
r1=0.6;r2=1.6;r3=1.8;r4=2;r5=2.2;r6=2.4;r7=2.6;
z1=(220/38.5)^2;z2=(220/35.8)^2;z3=(220/35.3)^2;z4=(220/34.5)^2;
z5=(220/34)^2;z6=(220/33.5)^2;z7=(220/32.9)^2;
zp1=z1+z2+z3+z4+z5+z6+z7;
zp2=z1^2+z2^2+z3^2+z4^2+z5^2+z6^2+z7^2;
zp3=z1*r1+z2*r2+z3*r3+z4*r4+z5*r5+z6*r6+z7*r7;
zp4=z1*(r1^2)+z2*(r2^2)+z3*(r3^2)+z4*(r4^2)+z5*(r5^2)+z6*(r6^2)+z7*(r7^2);
br4=0.6^4+1.6^4+1.8^4+2^4+2.2^4+2.4^4+2.6^4;
br3=0.6^3+1.6^3+1.8^3+2^3+2.2^3+2.4^3+2.6^3;
br2=0.6^2+1.6^2+1.8^2+2^2+2.2^2+2.4^2+2.6^2;
br1=0.6+1.6+1.8+2+2.2+2.4+2.6;
x0=5.18;x2=x0^2;x3=x0^3;x4=x0^4;
zd=br4+7*x4-2*x2*zp1+zp2+2*x2*br2-2*zp4;
for i=1:d %计算相应的个体极值
yr=x(i,1); %取出每一行的两个值即每个粒子所含的元素
yx=x(i,2);
z4=7*(yr^4)+4*br1*(yr^3)+(6*br2+2*7*x2-2*zp1)*(yr^2)+(4*br3+4*br1*x2-4*zp3)*yr+7*(yx^4)+...
4*7*x0*(yx^3)+(6*7*x2-2*zp1+2*br2)*(yx^2)+(4*7*x3-4*zp1*x0+4*x0*br2)*yx+...
2*7*(yx^2)*(yr^2)+4*br1*yr*(yx^2)+4*7*x0*yx*(yr^2)+8*x0*br1*yx*yr+zd;
f(i,:)=z4; %将结果存入一矩阵中,m*1,列向量
p(i,:)=z4;
end
g=min(f); %取出个体极值最好的位置并赋给gbest
for m=1:d %找出使得目标函数最小的粒子序号
if (f(m,:)==g)
r=m;
end
end
gbest=x(r,:); %将使得目标函数取得最小的位置x第r个粒子的元素赋给gbest
%进入循环
for k=1:300
z=x(:);
if(min(z)<0)
break;
end
w=0.96*w;
if(w<0.01)
break;
end
c1=2;
c2=2;
r1=rand;
r2=rand;
for i=1:d %对粒子的位置及速度的更新
for j=1:2
v(i,j)=w*v(i,j)+c1*r1*(pbest(i,j)-x(i,j))+c2*r2*(gbest(:,j)-x(i,j));
x(i,j)=x(i,j)+0.1*v(i,j);
end
end
for i=1:d %计算相应的个体极值
yr=x(i,1); %取出每一行的两个值即每个粒子所含的元素
yx=x(i,2);
z4=7*yr^4+4*br1*yr^3+(6*br2+2*7*x2-2*zp1)*yr^2+(4*br3+4*br1*x2-4*zp3)*yr+7*yx^4+...
4*7*x0*yx^3+(6*7*x2-2*zp1+2*br2)*yx^2+(4*7*x3-4*zp1*x0+4*x0*br2)*yx+...
2*7*yx^2*yr^2+4*br1*yr*yx^2+4*7*x0*yx*yr^2+8*x0*br1*yx*yr+zd; %计算的个体极值结果
f(i,:)=z4; %将结果存入一矩阵中,m*1,列向量
if(f(i,:)<p(i,:))
p(i,:)=f(i,:);
pbest(i,:)=x(i,:);
end
end
for(i=1:d)
if(min(f(i,:))<g)
g=min(f(i,:));
end
end
for m=1:d %找出使得目标函数最小的粒子序号
if (f(m,:)==g)
r=m;
end
gbest=x(r,:); %将使得目标函数取得最小的位置x第r个粒子的元素赋给gbest
end
pp(k)=g;
gbest;
w;
end
sx=sqrt((0.6+gbest(1,1))^2+(5.18+gbest(1,2))^2);
gbest
g
cosx=(0.6+gbest(1,1))/sx
k
plot(pp)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -