[关闭]
@wuqi0616 2017-06-22T10:55:07.000000Z 字数 9293 阅读 1205

PSO -

三轴运动平台


预 matlab 辨识离散时间序列模型

  1. MATLAB命令窗输入
  2. load data;(载入待辨识数据)
  3. ident;(输入辨识箱gui调用函数)

此处输入图片的描述

1 PSO的理论

三原则:
- Collision avoidance
- Velocity Matching
- Flock Centering

更新策略:

acceleration parameter :reflect the weighting of stochastic acceleration terms that pull each particle towards pbest and gbest positions.

PSO的优点:
high speed of convergence
PSO的缺点:
traps in local optimum (high dimensional problem)
convergence rate decreased when reaching a near optimal solution

PSO以往改进的策略

此处输入图片的描述

2 SPSO(标准PSO)实验结果

代码:

  1. %% 清除上次程序
  2. clear ; clc; format long;
  3. %% 设置随机数
  4. % ctime = datestr(now, 30);
  5. % tseed = str2num(ctime((15 - 5) : end)) ;
  6. rand('seed', 0);
  7. %% 程序计时
  8. tic ;
  9. %% 导入数据
  10. load matlab; clear y;
  11. %% 参数配置
  12. c1 = 2 ; %学习因子1
  13. c2 = 2 ; %学习因子2
  14. wmax = 0.7 ; wmin = 0.7 ;
  15. Dimension=4; %搜索维度
  16. Size=40; %种群大小
  17. Tmax=1000; %最大迭代次数
  18. Xmax=[5,5,5,5]; %位置上界
  19. Xmin=[-5,-5,-5,-5]; %位置下界
  20. Vmax=Xmax-Xmin; %速度上界
  21. Vmin=Xmin-Xmax; %速度下界
  22. Position=zeros(Dimension,Size);
  23. Velocity=zeros(Dimension,Size);
  24. fz=zeros(Size,1);
  25. fitness_p=zeros(Size,1);
  26. Best_fitness=zeros(Tmax,1);
  27. %% 初始化粒子位置与速度
  28. for i=1:Dimension
  29. for j=1:Size
  30. Position(i,j)=Xmin(i)+(Xmax(i)-Xmin(i))*rand;
  31. Velocity(i,j)=Vmin(i)+(Vmax(i)-Vmin(i))*rand;
  32. end
  33. end
  34. Pbest_position=Position;%粒子的历史最优位置,初始值为粒子的起始位置,存储每个粒子的历史最优位置
  35. % Gbest_position=Position(:,1);%全局最优的那个粒子所在位置,初始值认为是第1个粒子
  36. for k=1:Size
  37. Pos=Position(:,k);
  38. fz(k)=fitness(y2,u,Pos,Dimension);
  39. end
  40. [Gbest_Fitness,I]=min(fz);%求出所有适应值中最小的那个适应值,并获得该粒子的位置
  41. Gbest_position=Position(:,I);%取最小适应值的那个粒子的位置,即I
  42. %% 主循环,迭代
  43. for itrtn=1:Tmax
  44. time(itrtn)=itrtn;
  45. Weight= wmax - (wmax - wmin) / Tmax * itrtn ;
  46. for i=1:Size
  47. Velocity(:,i)=Weight*Velocity(:,i)+c1*rand*(Pbest_position(:,i)-Position(:,i))+c2*rand*(Gbest_position-Position(:,i));
  48. end
  49. % 限制速度边界
  50. for i=1:Size
  51. for row=1:Dimension
  52. if Velocity(row,i)>Vmax(row)
  53. Velocity(row,i)=Vmax(row);
  54. elseif Velocity(row,i)<Vmin(row)
  55. Velocity(row,i)=Vmin(row);
  56. else
  57. end
  58. end
  59. end
  60. Position=Position+Velocity;
  61. %限制位置边界
  62. for i=1:Size
  63. for row=1:Dimension
  64. if Position(row,i)>Xmax(row)
  65. Position(row,i)=Xmax(row);
  66. elseif Position(row,i)<Xmin(row)
  67. Position(row,i)=Xmin(row);
  68. else
  69. end
  70. end
  71. end
  72. %% 更新个体最优值、全局最优值
  73. for i=1:Size
  74. P_position=Position(:,i);%取一个粒子的位置
  75. fitness_p(i)=fitness(y2,u,P_position,Dimension);
  76. if fitness_p(i)< fz(i) %粒子的适应值比运动之前的适应值要好,更新原来的适应值
  77. Pbest_position(:,i)=Position(:,i);
  78. fz(i)=fitness_p(i);
  79. end
  80. if fz(i)<Gbest_Fitness
  81. Gbest_Fitness=fz(i);
  82. end
  83. end
  84. [Gbest_Fitness_new,I]=min(fz);%更新后的所有粒子的适应值,取最小的那个,并求出其编号
  85. Best_fitness(itrtn)=Gbest_Fitness_new; %记录每一代的最好适应值
  86. Gbest_position=Pbest_position(:,I);%最好适应值对应的个体所在位置
  87. end
  88. plot(time,Best_fitness);
  89. xlabel('迭代的次数');ylabel('适应度值P_g');
  90. %% 显示计算结果
  91. disp('*************************************************************')
  92. disp('函数的全局最优位置为:')
  93. Solution=Gbest_position
  94. disp('最后得到的优化极值为:')
  95. fitness(y2,u,Solution,Dimension)
  96. disp('*************************************************************')
  97. %% 计时
  98. toc;

此处输入图片的描述
因为适应度值一开始比较大,所以对适应度值取了对数显示,另外参数辨识结果如下:

  1. *************************************************************
  2. 函数的全局最优位置为:
  3. Solution =
  4. 1.257807729246555
  5. -0.257806797468069
  6. -0.000128262063525
  7. 0.000437879444396
  8. 最后得到的优化极值为:
  9. ans =
  10. 3.258610870353867
  11. *************************************************************

Simulink 模型搭建:
此处输入图片的描述
此处输入图片的描述
此处输入图片的描述
第一张拟合图参数是由工具箱拟合得到的,第二张图为SPSO拟合得到的,

3 SEPSO的概念(social emotional model - SEM)

cor kernel: Taking emotions into consideration,every individual in SEM updates strategy adaptively during program iterations.

三种情绪
- depressed
- calm
- passionate

SEPSO的算法步骤:
Step1: 在算法开始执行前,设置所有粒子的情绪指标为1,
Step2: 更新粒子的速度:


Step3: 在迭代的过程中,如果粒子没有达到个体最优适应值,它的情绪指标为:

如果该粒子达到了个体最优适应值,它的情绪指标为:

Step4:SEPSO 三种更新策略


flow chart of SEPSO algorithm:
此处输入图片的描述

这里我不是很理解SEPSO的三种更新策略,根据SPSO的更新策略,很容易就能理解其更新公式中每个粒子都朝向自己历史最优的位置和整个群落最优位置前进。而SEPSO的更新策略中,当该粒子属于积极情绪时,它的更新公式可以理解为朝着群落最优位置逼近;当该粒子属于沉稳和消极情绪时都出现了,这一项虽然体现出了该粒子与其他粒子之间的关系,但是它的物理意义是什么文献中没有提及,况且其数量级取决于粒子的数量L,如果粒子数量庞大,那么该值就会淹没公式中的其它两项起到决定性作用。实验中,由于粒子不可能次次都跑到历史最优位置而导致情绪不断下降,从而一直落入第一种情况(消极情绪),然而该情绪迭代公式下,粒子新位置和速度会超出位置、速度搜索范围而被固定在最远位置和最大速度,从而出现恶性循环。

4 CLPSO(Comprehensive Learning PSO)[10] 和其改进

综合学习策略的速度更新公式为:


其中:
:表示第i个粒子的第d维速度参数
:表示惯性权重
:表示粒子的学习因子
:表示第i个粒子的第d维对应的随机数,在0~1之间
:表示第i个粒子的第d维的位置参数
:表示第fi(d)个粒子的历史最优点的第d维参数

这里的可能代表着粒子群中任何一个粒子,也就是每个粒子都有向群落中其它粒子的历史最优解进行学习。传统的综合学习的策略是取决于一个随机的学习概率因子,对于群落中的每个粒子,CLPSO都会产生一个对应的学习概率,当需要更新该粒子的任何一维参数时,都采用随机生成一个随机数与进行比较,如果大于那么对应的该维参数就从自己的历史最优解学习;反之,如果小于那么该维参数将会向群落中其它粒子的历史最优点学习。
传统CLPSO中粒子相互学习的过程采用了竞标赛的选取过程:

此处输入图片的描述

CLPSO与SPSO的三大不同之处:

对于的选择问题,文献 10 给出了经验公式

其中:
:是群落中粒子的个数。

CLPSO算法流程图:
此处输入图片的描述

其中:
:为refreshing gap,它表示一个阈值(粒子有多少代没有比历史最优解优秀),文献 10 给出其经验值为7

5 UPSO(unified PSO)[11]

统一粒子群策略的速度更新公式为:

其中:
:代表了迭代次数
:代表了整个群落最好粒子的角标(全局最优)
:代表了领域内最好粒子的角标(局部最优)
:(unification factor)联合因子,决定了两项等式的权重和影响程度。
:(constriction factor)收缩因子,控制速度的范围
:随机量,由均匀分布组成,

引入进化算法的变异因子,公式也可以改进为:

其中:
:是正态分布生成的随机数代表了变异因子

UPSO的核心思想:
传统标准PSO的算法速度更新策略采用让粒子同时向群落中全局历史最优粒子位置和自身历史最优位置学习,其中向全局历史最优粒子位置学习代表算法的探索能力(exploration),向自身历史最优位置学习代表算法挖掘能力(exploitation)。因为参考全局历史最优粒子位置,算法会快速收敛到特定位置,往往会收敛于局部最优解;而参考自身历史最优位置能够使得算法具有更好的挖掘能力,降低算法陷入局部最优解的概率。因此找到一个合适的因子能够权衡两者就是UPSO算法的核心思想。
文献11通过实验给出了参数的建议值:

0.6 2.833 2.833
0.729 2.05 2.05

在大量实验下,第一组参数的效果要好于第二组
另外:
- 在引入进化算法的变异因子情况下,并且的效果要好于
- 在不引入进化算法的变异因子情况下,数据显示的效果都能增强传统PSO算法

6 算法效果对比

SPSO N=2 N=3 N=4
a1 -1.180216286 -0.639023055 -0.817572776
a2 0.18021527 -0.452952629 -0.278681102
a3 / 0.09197423 -0.141702215
a4 / / 0.237955436
b1 -0.000191005 -0.000151685 0.000153011
b2 0.000532902 0.000351656 -0.000655469
b3 / 0.000329096 0.001589188
b4 / / -0.000733588
MSE 6.68E-04 6.35E-04 5.87E-04
UPSO N=2 N=3 N=4
a1 -1.180216246 0.055509731 0.047145491
a2 0.18021523 -0.106962951 -0.848271048
a3 / -0.948550468 -0.502905578
a4 / / 0.304029307
b1 -0.000191005 0.000823798 0.000110134
b2 0.000532902 -0.002478179 -0.000648701
b3 / 0.002907084 0.001744603
b4 / / -0.000397024
MSE 6.68E-04 6.97E-04 5.97E-04
MATLAB N=2 N=3 N=4
MSE 6.35E-04 6.98E-04 6.96E-04


[1] L. Zhang, et al., A new particle swarm optimization algorithm with adaptive inertia weight based on Bayesian techniques, Appl. Soft Comput. 28(2015) 138–149.
[2] M. Taherkhani, R. Safabakhsh, A novel stability-based adaptive inertia weight for particle swarm optimization, Appl. Soft Comput. 38 (2016) 281–295.
[3] Y. Lu, et al., Improved particle swarm optimization algorithm and its application in text feature selection, Appl. Soft Comput. 35 (2015) 629–636.
[4] J. Bai, et al., Modeling of enhanced VFAs production from wa
[5] S. Sun, J. Li, Parameter estimation of methanol transformation into olefins through improved particle swarm optimization with attenuation function, Chem. Eng. Res. Des. 92 (11) (2014) 2083–2094.
[6] D. González, S. Davis, Fitting of interatomic potentials without forces: a parallel particle swarm optimization algorithm, Comput. Phys. Commun. 185
(12) (2014) 3090–3093
[7] V. Fathi, G.A. Montazer, An improvement in RBF learning algorithm based on PSO for real time applications, Neurocomputing 111 (2013) 169–176
[8] F. Guan, L. Dai, M. Xia, Pretension optimization and verification test of double-ring deployable cable net antenna based on improved PSO, Aerosp. Sci.
Technol. 32 (1) (2014) 19–25.
[9] Y. Zhuang, et al., Infrared and visual image registration based on mutual information with a combined particle swarm optimization −Powell search
algorithm, Optik Int. J. Light Electron Opt. 127 (1) (2016) 188–191.
[10] J.J. Liang, A.K. Qin, P.N. Suganthan, S. Baskar, Comprehensive learning particle swarm optimizer for global optimization of multimodal functions, IEEE
Transactions on Evolutionary Computation 10 (3) (2006) 281–295.
[11] K. E. Parsopoulos and M. N. Vrahatis, “UPSO—A unified particle swarm optimization scheme,” in Lecture Series on Computational Sciences, 2004, pp. 868–873.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注