当前位置:   article > 正文

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

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

目录

1.程序功能描述

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

3.核心程序

4.本算法原理

4.1 粒子群优化算法 (PSO)

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

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

5.完整程序


1.程序功能描述

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

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

MATLAB2022A版本运行

3.核心程序

  1. ...........................................................................
  2. for t=1:tmax
  3. t
  4. time(t) = t;
  5. w = 0.5;
  6. for i=1:Pop
  7. if t > 1
  8. %N
  9. x(1,i) = x_(1,i);
  10. x_best(1,i) = x_best_(1,i);
  11. %I
  12. y(1,i) = y_(1,i);
  13. y_best(1,i) = y_best_(1,i);
  14. end
  15. %N
  16. %速度1设置
  17. 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));
  18. %更新
  19. x(1,i) = x(1,i) + va(1,i);
  20. %变量1的限制
  21. if x(1,i) >= max1
  22. x(1,i) = max1;
  23. end
  24. if x(1,i) <= min1
  25. x(1,i) = min1;
  26. end
  27. %I
  28. %速度2设置
  29. 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));
  30. %更新
  31. y(1,i) = y(1,i) + vb(1,i);
  32. %变量2的限制
  33. if y(1,i) >= max2
  34. y(1,i) = max2;
  35. end
  36. if y(1,i) <= min2
  37. y(1,i) = min2;
  38. end
  39. [BsJ,x(1,i),y(1,i)] = func_fitness(x(1,i),y(1,i));
  40. if BsJ<BsJi(i)
  41. BsJi(i) = BsJ;
  42. x_best(1,i) = x(1,i);
  43. y_best(1,i) = y(1,i);
  44. end
  45. if BsJi(i)<minJi
  46. minJi = BsJi(i);
  47. Tx_best = x(1,i);
  48. Ty_best = y(1,i);
  49. end
  50. %反向
  51. %反向学习
  52. %N
  53. x_(1,i) = (max1+min1)-x(1,i);
  54. x_best_(1,i) = (max1+min1)-x_best(1,i);
  55. %I
  56. y_(1,i) = (max2+min2)-y(1,i);
  57. y_best_(1,i) = (max2+min2)-y_best(1,i);
  58. [BsJ,x(1,i),y(1,i)] = func_fitness(x_(1,i),y_(1,i));
  59. if BsJ<BsJi(i)
  60. BsJi(i) = BsJ;
  61. x_best(1,i) = x_(1,i);
  62. y_best(1,i) = y_(1,i);
  63. end
  64. if BsJi(i)<minJi
  65. minJi = BsJi(i);
  66. Tx_best = x_(1,i);
  67. Ty_best = y_(1,i);
  68. end
  69. end
  70. Jibest(t) = minJi;
  71. end
  72. Tx_best
  73. Ty_best
  74. figure;
  75. plot(Jibest,'b','linewidth',1);
  76. xlabel('迭代次数');
  77. ylabel('J');
  78. grid on
  79. save R2.mat Jibest
  80. 06_042m

4.本算法原理

4.1 粒子群优化算法 (PSO)

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

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

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

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

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

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

5.完整程序

VVV

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/482481
推荐阅读
相关标签
  

闽ICP备14008679号