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

📄 pso-matlab programe.txt

📁 一种混沌粒子群算法源程序。并附带几个测试函数。非常实用!
💻 TXT
字号:
% m is the number of particle
% n is the dimension of variable
% x is a m*n matrix
% pbx is a m*n matrix
% v is a m*n matrix
% gbx is a l*n matrix
% pbf is a m*l matrix
% gbf is a number
%clear all

n=2;
m=50;
c1=2;
c2=2;
w=1;
vmax=0.5;
%随机m个粒子
x=-1+2*rand(m,n);
v=0.5*rand(m,n);
%适应值计算
for i=1:m
  f(i)=obf_pso(x(i,;),n); 
 end
%找出个体极值和全局极值
pbx=x;
pbf=f;
[gbf i]=min(pbf);
gbx=pbx(i,:);
for i=1:m;
v(i,:)=w*v(i,:)+c1*rand*(pbx(i,:)-x(i,:))+c2*rand*(gbx-x(i,:));
for j=1:n
  if v(i,j)>vmax
    v(i,j)=vmax;
elseif v(i,j)<-vmax
   v(i,j)=-vmax;
  end
end
  x(i,:)=x(i,:)+v(i,:);
end
%开始循环迭代
% for k=1:1000
 k=0;
while abs(gbf)>0.00001
   for i=1:m
   f(i)=obf_pso(x(i,:),n);
end
for i=1:m
   if f(i)<pbf(i)
           pbf(i)=f(i);
           pbx(i,:)=x(i,:);
    end
end
[gbf i]=min(pbf);
gbx=pbx(i,:);
for i=1:m
  v(i,:)=w*v(i,:)+c1*rand*(pbx(i,:)-x(i,:))+c2*rand*(gbx-x(i,:));
 for j=1:n
   if v(i,j)>vmax
      v(i,j)=vmax;
else if v(i,j)<-vmax
        v(i,j)=-vmax;
     end
end
x(i,:)=x(i,:)+v(i,:);
  end
  k=k+1;
end
gbx %最优解
gbf %最优值
k%迭代次数


function f=obf_pso(y,n)
%不同的目标函数值
f=y(1)^2+y(2)^2;
% f=100*(y(1)*y(1)-y(2))^2+y(1)^2;
% f=sin(sqrt(y(1)^2+y(2)^2)^2-0.5)/(1+0.001*(y(1)^2+y(2)^2))^2+0.5;
% f=y(1)^2+2*y(2)^2-0.3*cos(3*pi*y(1))-0.4*cos(pi*y(2))+0.7;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -