作者在前面的文章中介绍了经典的优化算法——粒子群算法(PSO),各种智能优化算法解决问题的方式和角度各不相同,都有各自的适用域和局限性,对智能优化算法自身做的改进在算法性能方面得到了一定程度的提升,但算法缺点的解决并不彻底。
为了克服使用单一智能优化算法在求解复杂问题中表现出的精度不高、易陷入局部最值、不能在全局搜索等一系列不足,算法融合的思想开始被研究和应用。因此本文将SA与PSO这两种经典算法进行融合,并辅以改进,从而利用它们的互补性,取长补短,提高求解复杂问题的能力。
00 文章目录
1 研究背景
2 模拟退火-粒子群自适应优化算法模型
3 代码目录
4 算法性能分析
5 源码获取
01 研究背景
1.1 SA与PSO混合意义
无免费午餐定理,对任何优化问题,任两种优化算法的平均性能是相等的,没有任何一种优化算法在计算效率、通用性、全局搜索能力等性能方面都能表现得很好。
算法的混合也就成了算法优化领域的一个研究热点和趋势,混合有着固有的内在需求,不是简单地将算法组合叠加,要按照一定的策略和模式进行。
模拟退火算法(SA)是基于金属退火的机理而建立起的一种全局最优化方法,模拟退火算法由于它以某种概率接受较差点,从而具有跳出局部最优解的能力,理论上只要计算时间足够长, 模拟退火法就可以保证以概率 1.0 收敛于全局最优点,但在实际算法实现中,由于计算速度和时间限制,其优化效果和计算时间存在矛盾,收敛时间往往过长。
PSO算法原理简单,用速度、位移公式迭代易于实现,需要调节的参数少,在寻优稳定性和全局性收敛性方面具有很大优势,但容易陷入局部最优值出现早熟,种群多样性差,搜索范围小,在高维复杂问题寻优时更为明显。
因此,将模拟退火引入粒子群算法中后,算法能够具有较强的全局搜索能力,在接受新解时既可以接受好解又可以接受差解,从而保证种群多样性,有利于跳出局部最优解,提高其收敛速度和寻优精度。同时,作者在前面的文章中提出的自适应混沌粒子群能够使得初始解更加均匀,自适应变化的权重和学习因子能在一定程度上增加算法在进化后期搜索多样解的概率,因此将此改进引入混合模型中以期能提高算法性能。
1.2 模拟退火算法
模拟退火是80年代初发展起来的一种随机性组合优化方法。它模拟高温金属降温的热力学过程,并广泛应用于组合优化问题。模拟退火在进行优化时先确定初始温度,随机选择一个初始状态并考察该状态的目标函数值;对当前状态附加一小扰动,并计算新状态的目标函数值;以概率 1接受较好点,以某种概率接受较差点作为当前点,直到系统冷却。
模拟退火方法在初始温度足够高、温度下降足够慢的条件下,能以概率1收敛到全局最优值,由于它以某种概率接受较差点,从而具有跳出局部最优解的能力。
模拟退火算法采用 Metropolis 准则,在算法的每一步随机产生一个新的候选解,如果这个新解使目标函数减小那么它是可以接受的;否则要以指数概率的形式来决定它是否接受,接受新解的概率P由下式给出:
式中‚Δf 是由随机扰动引起的目标函数的变化;T是温度,从式中不难看出,对于一个给定的 Δf,当 T 相对较大时,接受正能量的概率大于 T 相对较小时的概率。整个过程归结如下:
- 初始化退火温度Tk,(令k=0)随机选择初值 x(0);
- 在温度Tk下重复执行如下操作,直至达到温度Tk的平衡状态:
在解x的领域中产生新的可行解x’
计算x’的目标函数f(x’)和x的目标函数f(x)的差值Δf;
依照概率min{1,exp(-Δf/Tk)}>random[0,1] 接收x’,其中random[0,1]是区间内的随机数。 - 退火操作:Tk+1=CTk,其中C在0-1直接,若满足收敛判据,则退火过程结束,否则转2)
其中退火温度T控制着求解过程向最优值的优化方向进行,同时它又以概率exp(-Δf/Tk)来接收劣质解,因此算法可以跳出局部极值点,只要初始温度足够高,退火过程足够慢,算法 就能收敛到全局最优解。
1.3 自适应粒子群算法
自适应混沌粒子群
02 模拟退火-粒子群自适应优化算法模型
粒子群算法在函数优化过程中主要依赖粒子之间的信息不断更新粒子的位置和速度,使其不断向最优解方向靠拢。 PSO 算法存在易早熟,易陷入局部最优,后期收敛速度较慢,搜索精度较差等缺点。模拟退火算法具有很强的全局搜索能力,存在接受较差解的可能,在运算时遇到较差解能够以一定的概率接受,从而可以跳出局部最优解陷阱,收敛于全局最优解区域,拥有较高的搜索精度,但在算法运算时,因其需要非常高的退火温度,故收敛速度十分缓慢。PSO 算法和 SA 算法各具优缺点,因此本文采用融合粒子群和模拟退火的模拟退火粒子群算法,融合的方法是引入模拟退火的概率突跳的思想,以克服 PSO 算法早熟收敛的弊端,改善 SA 算法收敛速度慢的缺点,从而提升了算法的整体性能。
模拟退火-粒子群自适应优化算法流程如图所示.
参考:基于遗传模拟退火粒子群算法的微电网优化运行研究
其中,粒子群算法部分将分别采用作者前面提到的自适应混沌粒子群算法与标准粒子群算法。
03 代码目录
04 算法性能分析
4.1 测试函数
为了能够验证遗传-粒子群自适应算法对比本文提到的粒子群算法、遗传算法、遗传-粒子群算法有更好的效果,本文选用3个CEC的标准测试函数Sphere、Rastrigin、Rosenbrock对算法的寻优精度、跳出局部能力、全局寻优能力进行检验。3个函数的表达式如下:
4.1.1 Sphere函数
Sphere 函数的自变量𝑥𝑖的取值的范围:-100<𝑥𝑖<100;该函数存在唯一的一个全局的最小值,且当𝑥=(0,0,…,0)时,函数取得全局最小值 f1(x) = 0。选择该函数是对算法寻优的精度进行测试。
4.1.2 Rastrigin函数
Rastrigin 函数的自变量𝑥𝑖的取值的范围:-5.12<𝑥𝑖<5.12;在 x = ( 0,0 ,…, 0 ) 处的时候存在全局极小点 0,该函数是一个非线性的多峰值函数,存在大量的局部最小值,寻找全局极小值时有一定的困难,因此用此函数可以,对算法的全局寻优能力检验测试。
4.1.3 Rosenbrock函数
Rosenbrock 函数的自变量𝑥𝑖的取值的范围:-30<𝑥𝑖<30;该函数是一单峰函数, 存在全局极小值,位于一个类似开口向上的抛物线的最低点处,虽然能够比较容易找到,但是很难收敛到最低处,因此可以测试全局寻优的能力。
4.2 测试结果
Sphere函数
可以看到SA-IPSO和SA-PSO的收敛速度以及精度都远好于PSO,而SA达到最优解需迭代超万代,因此改进的算法是十分高效可行的。
Rastrigin函数
Rosenbrock函数
可以看到经模拟退火算法和粒子群算法经混合后能够极大的提升其全局寻优的性能,而经过改进后的粒子群与遗传算法进行混合仍能够在其基础上提升性能,因此此改进有效。
05 源码获取
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
https://mbd.pub/o/bread/ZJuVmZhu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞 (ง •̀_•́)ง(不点也行),若有定制需求,可私信作者。