2. 上海交通大学 电子信息与电气工程学院, 上海 200240
2. School of Electronic Information and Electrical Engineering, Shanghai Jiao Tong University, Shanghai 200240, China
粒子群优化算法(Particle Swarm Optimization, PSO)是1995年 Kennedy和Eberhart提出的一种随机搜索算法[1], 它模仿鸟群和鱼群的群体觅食行为, 通过种群中个体之间的协同进化在解空间内搜索最优解. 种群中的每一个粒子被视为独立个体, 粒子通过自身的历史位置信息以及整个种群的位置信息来对当前的速度和位置进行相应地调整. 粒子群优化算法具有操作简单, 收敛速度快的优点, 因此受到国内外学者的广泛关注. 由于PSO的操作不关心优化函数是否具有可微、连续等性质, 所以应用PSO解决实际问题时更容易建模, 具有很强的实用性, 例如农业、电力系统、自动控制、车辆制造[2-5], 但是粒子群优化算法在解决复杂多峰问题时, 容易陷入局部最优解.
目前, 学者们采用多种改进方式来提高算法的全局搜索能力, 主要包括: (1) 改进拓扑结构. 如Eberhart和Kennedy在文献[6]中提出了局部版本的粒子群优化算法, 提出了环形拓扑结构, 保证了搜索过程中粒子的多样性. 靳雁霞等在文献[7]中, 提出环状全互联结构, 通过自适应逃逸机制, 防止算法陷入局部最优. 焦重阳等在文献[8]中, 提出混合拓扑结构, 结合全局与局部寻优, 将PSO应用于软件测试, 大大提高测试效果; (2) 算法参数的改进. Shi和Eberhart在文献[9]中为PSO的公式引入了惯性参数, 详细分析了PSO速度公式的意义, 从而在求解不同问题时可通过调整惯性参数来调节算法收敛速度和全局搜索能力, 改善了算法的性能. 董红斌等在文献[10]中, 通过粒子最大适应值和最小适应值的指数函数来动态调整算法中的惯性权重, 有利于算法跳出局部最优. (3) 自适应PSO. 如Gong 和Zhang在文献[11]中提出了自适应拓扑结构的改进, 使算法在不同阶段自适应地调整拓扑结构, 显著地提升了算法的精度. 曹玉莲等在文献[12]中, 提出基于拟熵的自适应局部搜索策略, 融合具有高效收敛性的传统局部搜索策略, 提出混合自适应粒子群算法, 提高算法性能. (4) 多种群. Geng 和 Zhu在文献[13]中提出了使用3个种群协同搜索的算法, 其中一个种群按照PSO搜索, 第2个种群搜索最优位置附近, 而第3个种群用于增强多样性. Yan等在文献[14]中使用多个子种群, 并用一个种群来优化PSO的参数. Liang在文献[15]中介绍了一种动态多种群PSO算法(DMSPSO), 通过重组策略使粒子归属的种群动态变化, 增强了算法的性能. 胡成玉等在文献[16]中, 提出了基于斥力势场的多粒子群算法. 但是上述算法未明确定义种群关系和种群交互策略, 寻优能力有限, 并且未与其他主流粒子群改进算法进行对比. 曾辉等在文献[17]中, 将自适应与多种群结合, 提出自适应多种群粒子群搜索方法, 但是该方法未对种群关系进行定义, 文中探测与开采的平衡十分依赖于调参, 搜索速度与精度的平衡未在实验结果中明确说明.
本文从种群关系和斥力因子的角度出发, 提出一种新的多种群粒子群优化算法SRB-PSO (Swarm-Relation-Based PSO), 使用多个种群分别按照PSO算法独立地搜索, 依据种群粒子的适应值判定两个种群间的关系, 定义了“统治”、“对等”和“被统治”3种关系, 算法根据种群间关系自适应采取种群间影响策略: (1) 通过在对等种群间使用斥力因子来维持不同种群在不同区域搜索, 从而增强了搜索的多样性, 有助于跳出局部最优值, 避免过早收敛; (2) 通过使被统治种群向统治它的种群收敛, 相比单纯的多种群算法, 提高了搜索的效率, 加快了收敛速度. 由于每个种群在独立搜索时仍然依照PSO算法进行搜索, 其他针对各种场景下单种群PSO算法的改进方法可以直接应用在各个种群上, 因此SRB-PSO算法具有良好的可扩展性. 本文最后通过实验将SRB-PSO与全局版本PSO和局部版本PSO对比, 结果表明, SRB-PSO在求解多峰问题时性能最优, 且求解单峰问题时优于局部版本的PSO.
1 全局和局部粒子群优化算法 1.1 全局版本的PSO粒子群优化算法使用一定数量的粒子在搜索空间中飞行, 每个粒子具有各自的速度, 并会记录各自的历史最优位置pbest以及整个种群的最优位置gbest. 每次迭代将计算粒子适应值, 更新最优位置, 然后按照式(1)更新粒子的速度, 并根据式(2)更新粒子的位置. 持续迭代直到满足终止条件, 终止条件可以是评估次数达到上限、迭代次数达到规定次数、最优解已满足需求. 算法的流程图如图1所示.
具体公式为:
$ \begin{split} {v_{id}} =& {v_{id}} + {c_1}\times{{rand{\rm{1}}}}()\times(pbes{t_{id}} - {x_{id}}) \\ & + {c_2}\times{{rand{\rm{2}}}}()\times(gbes{t_d} - {x_{id}}) \end{split} $ | (1) |
$ {x_{id}} = {x_{id}} + {v_{id}} $ | (2) |
式(1)是更新粒子速度的公式,
算法通过设定最大速度来限定粒子的速度范围, 它限制粒子在空间飞行的最大速度. 如果最大速度太大, 粒子更容易越过最优解, 降低了算法的搜索精度, 如果最大速度太小, 粒子不能进行更广泛的探索, 容易陷入局部最优解. 通常最大速度是根据求解空间大小乘以常数系数设定的, 当粒子更新后的速度大小超过最大速度时, 速度大小被设定为最大速度. 此外, 式(2)得到的粒子的新位置可能会超出搜索空间, 当粒子位置在某维度上超出边界时, 粒子在该维度的坐标被置为边界值.
文献[6]中为粒子群优化的速度公式引入了新的参数w, 速度更新公式对应修改为式(3).
$\begin{split} {v_{id}} =& {\rm{ }}w\times {v_{id}} + {c_1}\times {{rand{\rm{1}}}}()\times (pbes{t_{id}} - {x_{id}}) \\ & + {c_2}\times {{rand{\rm{2}}}}()\times (gbes{t_d} - {x_{id}}) \\ \end{split} $ | (3) |
文献[6]中指出, 粒子群优化算法的速度公式既体现了搜索空间中更广泛的区域, 又体现了向已知较优区域收敛以获得最优值, 参数的选取体现了对这两方面的权衡. 不同问题对扩展搜索空间和收敛能力的权衡通常是不同的, 因此, 相比式(1), 式(3)引入了惯性参数
Eberhart和Kennedy在文献[6]中详细介绍并测试了两个版本的粒子群优化算法, 分别为全局版本和局部版本的PSO. 全局版本即前文所述的算法, 粒子的速度受自身经验的调整和群体最优粒子的引导; 而局部版本中粒子的速度则受自身经验的调整和拓扑邻域最优粒子的引导. 这两种版本的算法的区别在于, 粒子间信息交互的拓扑结构不同. 全局版本中, 所有粒子构成一个完全图, 因此每个粒子都能获悉整个种群所经过的最优位置并受其引导, 而在局部版本中, 粒子并不能获悉整个种群所经过的最优位置, 而只能获悉它的邻域粒子所经过的最优位置, 比如, 1个粒子只有2个邻居, 则所有粒子构成一个环形的拓扑结构.
从局部版本使用的拓扑结构分析, 每个粒子仅能获知其邻域粒子经过的最优位置, 因此多数粒子并不会很快向全种群最优位置收敛, 而是在不同区域进行了相对独立的搜索, 从而保持了粒子的多样性. 全局版本的PSO具有更快的收敛速度, 相比之下, 使用环形拓扑结构的局部版本PSO尽管收敛速度慢, 却拥有更强的全局搜索能力, 更加不易陷入局部最优解.
2 基于种群关系的SRB-PSO算法尽管环形拓扑结构PSO相比传统PSO在全局搜索能力方面有了很大的改观, 但也存在着以下缺陷: 如果一些粒子在探索适应值很差的空间, 由于使用了环形拓扑结构, 粒子之间相对比较独立, 这些粒子在向好的区域收敛之前, 将在这个很差的空间进行大量的探索, 而这些探索是无意义的, 浪费了计算资源. 对于单峰问题, 环形拓扑结构使收敛速度慢了很多, 在相同计算量的情况下, 相比传统PSO, 算法的精度将会大幅下降; 此外, 环形拓扑结构带来的全局搜索能力增强也是有限的, 对很多带有大量局部最优的复杂多峰问题仍会陷入局部最优解.
针对以上缺陷, 本文提出了一种新的算法SRB-PSO, 使用多个种群, 分别按照PSO算法搜索, 并且在种群之间引入斥力因子, 从而使不同种群进行相对独立的搜索, 以获得更强的全局搜索能力, 同时使用一定的收敛机制, 以使算法的收敛速度得到保证. SRB-PSO算法的流程图如图2所示. 下文将分别就各关键操作进行详细介绍与分析, 最后给出整体的流程综述.
2.1 初始化种群
SRB-PSO中使用多个种群, 令不同种群进行相对独立的搜索. 如使用n个种群进行搜索, 通过将求解空间的随机某个维度等分为n段, 从而对应将求解空间划分为n个子空间, 在每个子空间中分别初始化一个种群. 这样的设定使不同种群从初始化时开始, 就具有很强的独立性.
2.2 SRB-PSO的4个阶段SRB-PSO的种群间交互是影响算法性能的重要因素. 在算法的不同阶段有不同的需求, 种群间影响的施加频率是不同的. 在算法的前中期, 每个种群比较独立地进行搜索, 从而种群间的影响是不施加的或是低频施加的; 在算法中后期, 种群之间的交互将被高频施加, 以通过种群间的交互取得更好的结果; 在算法末期, 所有种群合并为一个种群收敛, 以提高算法的精度. 算法据此分为4个阶段, 分别为: 独立搜索期、弱影响期、强影响期和收敛期.
(1) 独立搜索期: 应用于算法运行的初期, 在这个阶段, 各个种群进行完全独立的搜索, 即各个种群的粒子都依据自身经过的最优位置、本种群经过的最优位置, 来调整自己的速度, 不同种群之间在这个阶段没有任何的交互, 即任何一个种群都觉察不到其他种群的存在, 而是各自按照传统PSO进行搜索. 由于各个种群初始化在求解空间的不同子空间, 因此各个种群之间的搜索具有很强的独立性, 具有较强的全局搜索能力. 这个阶段结束后, 每个种群都会获得初步的搜索结果.
(2) 弱影响期: 这个阶段种群间的影响在算法迭代中被间歇地施加, 依据不同种群的求解现状, 引入外种群的影响来帮助种群进化. 每隔一定的迭代次数, 就会依据当前各个种群的搜索状态, 对每个种群施加来自外种群的影响, 具体操作是该种群的每个粒子的速度会受到外种群粒子的影响. 影响策略共有3种, 分别是: 向外种群收敛、受到外种群排斥和不受外种群影响, 这些策略的设定是基于收敛速度和全局搜索两方面考虑的, 具体的策略选择在下文将被详细介绍. 值得强调的是, 在弱影响期, 种群间的影响是被间歇地施加的, 在两次施加之间, 种群的搜索行为仍然是完全独立的.
(3) 强影响期: 在算法运行的中后期, 种群间的影响将被施加到每次迭代. 在这个阶段, 一个种群的粒子在每次迭代中, 都同时受到所属种群和其他种群的影响, 具体影响策略与弱影响期相同, 区别在于每次迭代都施加种群间影响.
(4) 收敛期: 在算法运行的末期, 所有种群通过合并, 形成一个种群, 执行单种群的搜索算法, 综合之前所有的结果, 最终使得算法逐渐收敛, 得到最优结果.
2.3 种群间影响策略在算法的弱影响期和强影响期, 种群之间通过交互从而提高搜索性能. 但最优种群, 即历史最优位置所在的种群, 并不会受到其他种群的影响, 因为通常其他种群的影响会对最优种群产生干扰, 影响最优种群的收敛速度.
施加某个种群受到的外种群的影响时, 首先会评估该种群与外种群的相对关系, 以使用不同的影响策略. 影响策略的伪代码如算法1所示. 在这个算法中, 种群与外种群的相对关系被定义为3种: 统治、对等和被统治. 评估基于两个参量, average-fitness与gbest-fitness, 前者是种群所有粒子的当前适应值的平均值, 后者则是该种群的历史最优适应值. 评估规则如表1所示.
算法1. 种群间影响策略伪代码
开始
对于种群A中的每个粒子
if A的搜索最优值
do nothing
else if B的搜索最优值
else
根据式(4)更新速度
结束
根据评估规则, 种群间的3种关系定义如下: 种群统治外种群, 当且仅当种群的average-fitness与gbest-fitness均优于外种群; 种群与外种群对等, 当且仅当种群的average-fitness与gbest-fitness中, 一项优于外种群而另一项差于外种群; 种群被外种群统治, 当且仅当种群的average-fitness与gbest-fitness都比外种群差. 确认了种群与外种群的关系后, 依据关系分别施加以下策略:
(1) 种群统治外种群, 则该种群不受外种群影响. 当种群统治外种群时, 认为该种群正探索的区域远好于外种群的区域, 因此不会受到外种群的影响.
(2) 种群与外种群对等, 则该种群的粒子受到外种群gbest位置的排斥, 且这个斥力反比于粒子与外种群gbest的距离, 以A、B分别表示种群与外种群, i表示粒子, d表示维度, 种群粒子的速度公式变更为式(4).
$ \begin{split} {v_{Aid}} =& {\rm{ }}w\times {v_{Aid}} + {c_1}\times {{rand{\rm{1}}}}()\times (pbes{t_{Aid}} - {x_{Aid}}) \\ & + {c_2}\times {{rand{\rm{2}}}}()\times (gbes{t_{Ad}} - {x_{Aid}}){\rm{ }} \\ & - {c_3}/(gbes{t_{Bd}} - {x_{Aid}})\times {{Decreasing}} () \end{split} $ | (4) |
(3) 种群被外种群统治, 则该种群放弃当前的搜索区域, 向外种群收敛. 具体的实现是将每个粒子的
当种群被外种群统治时, 认为种群正搜索的空间明显差于外种群正搜索的空间, 因此放弃种群正搜索的区域, 向外种群区域转移. 这个策略节约了搜索资源, 可以提高算法的收敛速度.
2.4 算法综述算法使用多个种群, 在解空间的等分子空间进行分别初始化. 首先在独立搜索期, 每个种群进行完全独立的搜索. 接着在弱影响期和强影响期, 种群将被施加外种群间的影响, 算法定义了统治、对等、被统治3种种群间关系. 被统治的种群将放弃当前搜索区域, 转而向统治它的种群收敛; 对等的种群则会互相产生斥力, 从而保持在相对独立的空间搜索. 但最优种群并不会受到外种群的影响, 以避免其他种群干扰最优种群的收敛, 同时可以避免这种情况: 两个种群都围绕着最优解收敛却因互斥都无法进一步靠近最优解. 斥力将随迭代次数增加而减弱, 且在算法末期所有粒子将被整合为一个种群, 这样的操作大大提高了算法的收敛速度. 接下来本文将通过实验测试算法性能.
3 实验分析 3.1 测试函数与参数设定为验证性能, 将SRB-PSO与全局版本以及局部版本的PSO进行对比. 实验使用文献[4]中的12个测试函数, 如表2所示, 函数维度D取30. 其中f1至f4是单峰函数, f5是阶梯函数, f6是带噪音的四次函数, f7至f12是有大量局部最优解的多峰函数. 将评估次数设定为300 000, 分别使用3种算法对这13个测试函数求最小值, 每个算法独立运行30次, 记录并对比30次运行的最优结果、平均结果与方差.
为确保比较的公平性, 3种算法使用的基本参数相同, 分别为: 惯性参数w=0.55, c1=c2=2, 速度上限为解空间一维长度的0.04倍. 全局版本与局部版本的PSO种群规模均为60, 迭代5000次. 新算法总粒子数也为60, 迭代5000次, 但使用5个种群, 每个种群的规模为12, 此外, 如前文所述, SRB-PSO在此基础上引入了种群关系和斥力因子, 分为4个执行阶段, 实验中取斥力因子c3=0.001, 前1000次迭代为独立搜索期, 第1001–3000次迭代为弱影响期, 弱影响期内每50次迭代施加一次种群间影响, 第3001–4500次迭代为强影响期, 最后500次迭代为收敛期.
3.2 测试结果与分析
算法每次运行后计算算法所得最小值与函数理论最小值的误差, 针对每个测试函数, 统计30次运行的平均误差、最小误差、方差. 小的平均值意味着算法的求解精度更高, 稳定性更好, 小的方差进一步体现了算法的稳定性. 结果在表3中列出, 加粗表明该算法的该项结果是3种算法中最优的, 斜体表示该算法的该项结果强于另两种算法中的一种.
算法对f1至f6的结果体现算法对单峰问题的求解性能, 对f7至f12的结果体现算法对多峰问题的求解性能. 表3结果表明, 传统PSO在求解单峰问题时性能最优, SRB-PSO在求解多峰问题时性能最优. 为进一步分析实验结果, 针对每个函数的实验结果作箱线图, 箱线图能够更直观地表现算法的精度和稳定性. 首先分析3种算法对单峰问题的求解性能, 3种算法求解f1至f6的结果在图3中以箱线图表示.
图3表明, 对于单峰问题, 3种算法中, 传统的全局版本PSO有最优的精度和稳定性, 这与理论分析是一致的, 因为局部版本的PSO和新算法都一定程度上牺牲了收敛速度来提升全局搜索能力. 还可以发现, 新算法的精度与稳定性明显强于局部版本的PSO. 这表明新算法比局部版本的PSO拥有更强的对单峰问题的优化能力. 其中误差范围表示算法的稳定性, 可以看出新算法误差范围在大多数测试案例中都表现出了更高的稳定性, 而对于多峰问题, 考虑表3结果中的f7至f12, 传统全局PSO的性能显然落后于局部版本PSO和新算法. 对于多峰问题求解的实验结果在图4中进一步以箱线图表示.
图4表明, 相比传统PSO, 新算法与局部版本的PSO对多峰问题都有很高的求解精度和稳定性. 表3数据显示, 新算法在f8, f9, f10, f12, f13上的性能都优于局部版本PSO, 仅在f11上稍有落后. 综合来看, 新算法对于多峰问题的求解性能最优. 同时新算法在问题求解的稳定性上, 在所有案例当中都最高, 可以看出新算法对于多峰问题求解有非常好的稳定性.
以上实验结果可总结为: 传统PSO对求解单峰问题有最优的性能, 但在求解多峰问题时误差较大; 局部版本的PSO求解单峰问题的精度最差, 但求解多峰问题的性能较强; 新算法求解多峰问题的性能最优, 且新算法求解单峰问题的性能明显优于局部版本的PSO.
4 结论与展望粒子群优化算法是一种操作简单、收敛速度快的智能优化算法, 通过对算法进行一定的改进, 可以提高算法在求解多峰问题时的性能. 本文提出一种多种群粒子群优化算法SRB-PSO, 并引入斥力因子来保证不同种群的个体之间搜索全局最优解时的相对独立性, 从而加强了算法中期的全局搜索能力. 文章通过实验对算法性能进行了系统性地对比与分析. 实验结果表明, 相对于全局版本以及局部版本的粒子群优化算法而言, 本文提出的多种群粒子群优化算法在解决多峰问题时具有更高的求解精度. 因此算法在全局搜索能力上优于传统的粒子群优化算法.
[1] |
Kennedy J, Eberhart R. Particle swarm optimization. IEEE International Conference on Neural Networks. Perth: IEEE, 1995. 1942–1948.
|
[2] |
徐艳蕾, 朱炽阳, 李陈孝, 等. 基于颜色系数反向粒子群模型的田间作物分割方法. 农业工程学报, 2018, 34(3): 173-179. DOI:10.11975/j.issn.1002-6819.2018.03.023 |
[3] |
唐佳, 王丹, 贾宏杰, 等. 基于元模型辅助粒子群算法的主动配电网最优经济运行. 电力系统自动化, 2018, 42(4): 95-103. DOI:10.7500/AEPS20170630006 |
[4] |
杨帆, 周丽红. 基于改进粒子群优化的四杆机构运动轨迹误差研究. 组合机床与自动化加工技术, 2018(2): 5-8. |
[5] |
安宗权, 王匀. 基于改进粒子群算法的车辆被动悬架优化与仿真研究. 现代制造工程, 2018(1): 63-68. |
[6] |
Eberhart R, Kennedy J. A new optimizer using particle swarm theory. Proceedings of the Sixth International Symposium on Micro Machine and Human Science. Nagoya: IEEE, 1995. 39–43.
|
[7] |
靳雁霞, 张鑫, 薛丹. 具有自适应逃逸的环状全互连结构粒子群算法. 微电子学与计算机, 2018, 35(2): 1-5, 10. |
[8] |
焦重阳, 周清雷, 张文宁. 混合拓扑结构的粒子群算法及其在测试数据生成中的应用研究. 计算机科学, 2017, 44(12): 249-254. DOI:10.11896/j.issn.1002-137X.2017.12.045 |
[9] |
Shi Y, Eberhart R. A modified particle swarm optimizer. The 1998 IEEE International Conference on Evolutionary Computation Proceedings. IEEE World Congress on Computational Intelligence. Anchorage: IEEE, 1998. 69–73.
|
[10] |
董红斌, 李冬锦, 张小平. 一种动态调整惯性权重的粒子群优化算法. 计算机科学, 2018, 45(2): 98-102. DOI:10.11896/j.issn.1002-137X.2018.02.017 |
[11] |
Gong YJ, Zhang J. Small-world particle swarm optimization with topology adaptation. Proceeding of the Fifteenth Annual Conference on Genetic and Evolutionary Computation. Lille: Association for Computing Machinery, 2013. 25–32. [doi: 10.1145/2463372.2463381]
|
[12] |
曹玉莲, 李文锋, 张煜. 基于拟熵自适应启动局部搜索策略的混合粒子群算法. 电子学报, 2018, 46(1): 110-117. DOI:10.3969/j.issn.0372-2112.2018.01.016 |
[13] |
Geng ZQ, Zhu QX. Multi-swarm PSO and its application in operational optimization of ethylene cracking furnace. 7th World Congress on Intelligent Control and Automation. Chongqing: IEEE, 2008. 103–106.
|
[14] |
Yan YY, Hu YY, Guo BL. Parameters-optimized multi-subswarms particle swarm optimization. 2011 International Conference of Soft Computing and Pattern Recognition (SoCPaR). Dalian: IEEE, 2011. 301–305.
|
[15] |
Liang JJ, Suganthan PN. Dynamic multi-swarm particle swarm optimizer. Proceedings 2005 IEEE Swarm Intelligence Symposium. Pasadena: IEEE, 2005. 124–129.
|
[16] |
胡成玉, 吴湘宁, 王永骥. 斥力势场下的多粒子群协同动态优化算法及其应用. 小型微型计算机系统, 2011, 32(7): 1325-1330. |
[17] |
曾辉, 王倩, 夏学文, 等. 基于自适应多种群的粒子群优化算法. 计算机工程与应用, 2018, 54(10): 59-65. DOI:10.3778/j.issn.1002-8331.1711-0048 |