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

📄 adapting.m

📁 粒子群优化(PSO)标准算法
💻 M
字号:
%适值计算
% 测试函数为f(x,y)=100(x^2-y)^2+(1-x)^2, -2.048<x,y<2.048
% 将Lyapunov能量函数作为测试函数f(v1,v2,v3,v4,v5,v6,v7,v8,......,vn)=-0.5*2sigma(Wij*vi
% *vj)+sigma(bi*vi)

%计算适应值并赋值
w=1/8*[0 -2  2  2  2 -2  2  2
      -2  0 -2  2  2 -2 -2  2
       2 -2  0 -2  2 -2  2 -2
       2  2  2  0  2 -2  2 -2
      -2  2  2  2  0 -2  2  2
       2  2  2  2  2  0  2 -2
       2  2  2  2  2  2  0  2
       2  2  2  2  2  2  2  0];
b=zeros(1,n);
for i=1:popsize
    a=0;
    c=0;
    for k=1:n
        for l=1:n
            a=a+w(k,l)*pop(i,k)*pop(i,l);
            c=c+b(l)*pop(i,l);
        end        
    end
    pop(i,3*n+2)=-0.5*a+c;
    if pop(i,3*n+1)>pop(i,3*n+2)    %若当前适应值优于全局最优值,则进行全局最优信息的更新
       pop(i,3*n+1)=pop(i,3*n+2);          %适值更新
       pop(i,(2*n+1):(3*n))=pop(i,1:n);      %位置坐标更新
    end
end

%for i=1:popsize
%    pop(i,8)=100*(pop(i,1)^2-pop(i,2))^2+(1-pop(i,1))^2;
%    if pop(i,7)>pop(i,8)    %若当前适应值优于个体最优值,则进行个体最优信息的更新
%        pop(i,7)=pop(i,8);          %适值更新
%        pop(i,5:6)=pop(i,1:2);      %位置坐标更新
%    end
%end

%计算完适应值后寻找当前全局最优位置并记录其坐标
if best_fitness>min(pop(:,3*n+1))
    best_fitness=min(pop(:,3*n+1));     %全局最优值
    gbest(1:n)=pop(find(pop(:,3*n+1)==min(pop(:,3*n+1))),1:n);    %全局最优粒子的位置   
end

best_in_history(exetime)=best_fitness;  %记录当前全局最优

⌨️ 快捷键说明

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