⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpnetwork.m

📁 此程序是用matlab编写的神经网络bp算法的一个简单例子
💻 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 + -