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

📄 pso.m

📁 采用标准群粒子优化计算方法
💻 M
字号:
%粒子群速度与位置更新(PSO算法的核心部分)

%计算完适应值后寻找当前全局最优位置
if best_fitness>min(pop(:,4*D+1))                       %pop(:,4*D+1)为个体最优解适应值
    best_fitness=min(pop(:,4*D+1));                     %全局最优粒子适应值更新
    position_gbest=find(pop(:,4*D+1)==best_fitness);    %在pop数组中找到全局最优解
    
    gbest(:)=pop(position_gbest(1),2*D+1:3*D);             %全局最优粒子的位置
   
end

best_in_history(exetime)=best_fitness;             %记录历史全局最优解适应值


%更新粒子速度
for i=1:popsize  
    for j=1:D
        %pop(i,D+j)=w*pop(i,D+j)+c1*rand*(pop(i,2*D+j)-pop(i,j))+c2*rand*(gbest(j)-pop(i,j)); %更新速度分量,Global_PSO
        
        pop(i,D+j)=w*pop(i,D+j)+c1*rand*(pop(i,2*D+j)-pop(i,j))+c2*rand*(pop(i,3*D+j)-pop(i,j)); %更新速度分量,Local_PSO
        
        if abs(pop(i,D+j))>max_velocity  %速度限制
            if pop(i,D+j)>0
                pop(i,D+j)=max_velocity;
            else
                pop(i,D+j)=-max_velocity;
            end
        end
        
        pop(i,j)=pop(i,j)+pop(i,D+j);%更新位置分量
         
        if pop(i,j)>x_max   %位置限制
            pop(i,j)=x_max;
        else if pop(i,j)<x_min
                pop(i,j)=x_min;
            end
        end
        
    end
end








⌨️ 快捷键说明

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