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

📄 pso.m

📁 基于混沌扰动算法来解决pso算法早熟问题
💻 M
字号:
clear all
clc
%N=3
k=0;
n=2;
m=25;
c1=2;
c2=2;
c=1;
w=0.729;
iter=1;
itermax=1500;
wmax=0.9;
wmin=0.1;
vmax=2;

x=-1+2*rand(m,n);
v=2*rand(m,n);

fid = fopen('1.txt', 'r');
data = fscanf(fid, '%f',21);    
fclose(fid);
 w=wmax-iter*(wmax-wmin)/itermax; 
for i=1:m
    [f(i) t]=huise(data,x(i,:));
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


while  abs(gbf)>0.001 && iter<=1500
     
    for i=1:m
        [f(i) t]=huise(data,x(i,:));
    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,:);
    
 %   if bianbie(f)<c
 %    [gbx gbf]=hundun(data,gbx);
 %   end
 
w=wmax-iter*(wmax-wmin)/itermax;

    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
iter=iter+1;
end

figure(1)
plotljz(data,t);
a=gbx(1)
b=gbx(2)
f=abs(gbf)
%t;

    

⌨️ 快捷键说明

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