通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

[4.1 粒子群优化算法 (PSO)](#4.1 粒子群优化算法 (PSO))

[4.2 反向学习粒子群优化算法 (OPSO)](#4.2 反向学习粒子群优化算法 (OPSO))

[4.3 多策略改进反向学习粒子群优化算法 (MSO-PSO)](#4.3 多策略改进反向学习粒子群优化算法 (MSO-PSO))

5.完整程序


1.程序功能描述

分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法.对比其优化收敛曲线。

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

3.核心程序

...........................................................................
for t=1:tmax
    t
    time(t) = t;
    w       = 0.5;
    for i=1:Pop
        if t > 1
            %N
            x(1,i)         = x_(1,i);
            x_best(1,i)    = x_best_(1,i);
            %I
            y(1,i)         = y_(1,i);
            y_best(1,i)    = y_best_(1,i);
        end
        %N
        %速度1设置
        va(1,i) = w*va(1,i) + c1*rand(1)*(x_best(1,i)-x(1,i)) + c2*rand(1)*(Tx_best-x(1,i));
        %更新
        x(1,i)  = x(1,i) + va(1,i);
        %变量1的限制
        if x(1,i) >= max1
           x(1,i) = max1;
        end
        if x(1,i) <= min1
           x(1,i) = min1;
        end                             

        %I
        %速度2设置
        vb(1,i) = w*vb(1,i) + c1*rand(1)*(y_best(1,i)-y(1,i)) + c2*rand(1)*(Ty_best-y(1,i));
        %更新
        y(1,i)  = y(1,i) + vb(1,i);
        %变量2的限制
        if y(1,i) >= max2
           y(1,i) = max2;
        end
        if y(1,i) <= min2
           y(1,i) = min2;
        end                            

       [BsJ,x(1,i),y(1,i)] = func_fitness(x(1,i),y(1,i));  
        
        if BsJ<BsJi(i)
           BsJi(i)        = BsJ;
           x_best(1,i)    = x(1,i);
           y_best(1,i)    = y(1,i);
        end
        if BsJi(i)<minJi
           minJi      = BsJi(i);
           Tx_best    = x(1,i);
           Ty_best    = y(1,i);
        end
        %反向
        %反向学习
        %N
        x_(1,i)         = (max1+min1)-x(1,i);
        x_best_(1,i)    = (max1+min1)-x_best(1,i);
        %I
        y_(1,i)         = (max2+min2)-y(1,i);
        y_best_(1,i)    = (max2+min2)-y_best(1,i);
 
       [BsJ,x(1,i),y(1,i)] = func_fitness(x_(1,i),y_(1,i));
 
        if BsJ<BsJi(i)
           BsJi(i)        = BsJ;
           x_best(1,i)    = x_(1,i);
           y_best(1,i)    = y_(1,i);
        end
        if BsJi(i)<minJi
           minJi      = BsJi(i);
           Tx_best    = x_(1,i);
           Ty_best    = y_(1,i);
        end
    end
    Jibest(t) = minJi;
end
Tx_best
Ty_best
figure;
plot(Jibest,'b','linewidth',1);
xlabel('迭代次数');
ylabel('J');
grid on
 
save R2.mat Jibest

06_042m

4.本算法原理

4.1 粒子群优化算法 (PSO)

粒子群优化算法模拟鸟群或鱼群的社会行为,通过迭代搜索最优解。在n维搜索空间中,每一个粒子代表一个潜在解,并具有速度和位置属性。在每次迭代过程中,粒子根据自身的历史最优位置(个体极值pi​)和全局最优位置(全局极值g)更新自己的速度和位置。

4.2 反向学习粒子群优化算法 (OPSO)

反向学习PSO是在传统PSO基础上引入了反向学习机制,当搜索过程陷入局部最优时,通过回溯过去的最优解来调整粒子的速度和方向,从而增加跳出局部最优的可能性。

改进要点: RL-PSO会在适当的时候启用反向学习阶段,此时速度更新会参考历史最优位置而非当前最优位置,具体数学表达式因不同实现方式而异,但一般包含对过去优良解的记忆和利用。

4.3 多策略改进反向学习粒子群优化算法 (MSO-PSO)

MSO-PSO融合了多种策略并结合反向学习的思想,进一步增强算法的全局搜索能力和收敛速度。例如,可能结合自适应权重调整、动态邻域搜索、精英保留策略等。

5.完整程序

VVV

相关推荐
顶呱呱程序3 小时前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
简简单单做算法5 小时前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
其实吧315 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
Matlab程序猿小助手1 天前
【MATLAB源码-第208期】基于matlab的改进A*算法和传统A*算法对比仿真;改进点:1.无斜穿障碍物顶点2.删除中间多余节点,减少转折。
开发语言·嵌入式硬件·算法·matlab·机器人
IT猿手1 天前
基于卷积神经网络(CNN)的时间序列预测,15个输入1个输出,可以更改数据集,MATLAB代码
人工智能·深度学习·神经网络·算法·matlab·cnn
其实吧31 天前
基于MATLAB的运动车辆跟踪检测系统
开发语言·matlab
梦里水乡8571 天前
基于MATLAB的农业病虫害识别研究
开发语言·matlab
墨痕_7772 天前
论文阅读笔记Dense Passage Retrieval for Open-Domain Question Answering
matlab
真的是我22 天前
基于MATLAB课程设计-图像处理完整版
图像处理·人工智能·计算机视觉·matlab
顶呱呱程序3 天前
2-140 基于Solidworks和Matlab Simulink Simscape仿真的机器人手臂仿真
开发语言·matlab·机器人·simulink·simscape·机器人手臂仿真