[toc]
姓名:杨成宇泽
学号:23020221154177
编写程序实现论文“一种多尺度协同变异的粒子群优化算法”(哈尔滨工程大学陶新民等,《软件学报》,2012年07期)的部分测试实验。
- 至少编程实现传统
$PSO$ 算法和论文所提出的$MAEPSO$ 算法。 - 至少测试论文中的三个
$Benchmark$ 函数。
粒子群算法($Particle\ Swarm\ Optimization$,简称$PSO$)是一种基于群体智能的优化算法,但存在早熟和收敛慢的问题。针对此问题,论文提出一种多尺度协同变异的自适应粒子群算法($multiscale\ cooperative\ mutatingly\ selfadaptive\ escape\ PSO$,简称
实现了两个类:PSO、MAEPSO。
PSO类:
MAEPSO类:
-
算法流程:
-
算法具体实现:
本次实验均采用论文中的初始化数据:采用线性下降惯性权重,w 在[0.95,0.4]之间随迭代数线性递减;c1 = 1.4,c2 = 1.4,K1 = 5,K2 = 10,M = 5,初始方差 σ0 为优化变量的范围,Td = 0.5,种群规模均为 20,函数维度为 30,每次运行 6000 代。
使用六个 Benchmark 测试函数对算法进行测试。
单模态函数:
| Tablet | Quadric | Rosenbrock | |
|---|---|---|---|
| PSO | 1.71891e-13 | 3.88775 | 1.8355 |
| MAEPSO | 0.905183 | 8010.73 | 3129.71 |
多模态函数:
| Griewank | Rastrigrin | Schaffers_f7 | |
|---|---|---|---|
| PSO | 0.0221267 | 84.5712 | 5.27423 |
| MAEPSO | 0.133841 | 81.4548 | 2.1986 |
从上表中可以看出,实现的具体细节还是有些问题的,导致算法未能达到预期目标,目前我也在一直寻找问题的原因。
而我在实验中观察到,MAEPSO的执行时间远远大于标准的PSO算法,这或许是因为MAEPSO中需要更复杂的变量。
从实验数据中也可以看出,PSO算法在解决问题的过程中确实容易出现早熟的现象,尤其是多模态函数的情况下。








