从路径规划角度浅述模拟退火算法(SAA),真的很浅!!! (づ。◕ᴗᴗ◕。)づ
一、模拟退火算法简介
模拟退火算法(simulated annealing,SAA)来源于固体退火原理,是一种基于概率的算法。
模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
模拟退火算法的搜索过程是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程,通过赋予搜索过程一种时变且最终趋于零的概率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。
以上特性使得模拟退火算法具备在路径规划领域应用的价值,比如用于解决旅行商问题(TSP)、有时间窗车辆路径问题(VRP)、有容量限制的VRP问题(CVRP)等,然而这并非是本文要谈的内容。
本文关心的是模拟退火核心思想在群智能路径规划算法中的应用。
二、模拟退火算法核心思想
从我对模拟退火算法不那么深入的了解中总结出以下两条核心思想:
(1)运动能力随温度递减
就像沸腾的水分子一样,在最初的时候,个体具有的能量很大,运动速度较快,但是随着运动的消耗,温度降低,能量也在不断的减少,在这个过程中运动会变得越来越慢,直至仅剩的能量不足以支持其继续运动,而稳定在某个位置。
应用:将群智能算法中粒子运动的步长设定为随着迭代次数减少的模型
(2)一定的概率会接受劣解
水分子的运动是无序的,即水分子在运动过程中是随机的,可能会从某一个位置到达一个从目前看来看更差的位置,然而,也有可能是一种以退为进的哲理行为,从长远来看,暂时前往一个更差的位置,也许对将来达到更优的位置是必要的。比如说从局部最优到达全局最优很多时候都有经历暂时接受差于局部最优的解。
应用:群智能算法中的致命问题之一陷入局部最优解,是当其粒子运动后若得到一个差于当前解的劣解,其往往会被抛弃。通过引入一定概率接受劣解的思想,在得到劣解后,以一定的概率接受它,使得粒子在向优解靠拢的同时,又保持着一定的多样性。
三、从路径规划角度看接受劣解的概率
在以上表达式中,T是当前温度,K是温度系数,Fc表示群智能路径规划算法中粒子的当前适应度,Fb表示运动后得到的劣解的适应度,由于在路径规划中,常选用规划的路径长度作为适应度,即认为适应度越低越优,则上式中Fc<Fb,K和T均为大于0的数,因此上式中的指数部分必然是小于0的,根据指数函数的分布可以容易得知,上式的结果在0~1之间,如下图所示。
x=-10:0.01:2;
y=exp(x);
plot(x,y,'LineWidth',5)
xlim([-5 3])
ylim([-2 5])
hold on
plot([-5 3],[0 0],'LineWidth',2)
plot([0 0],[-2 5],'LineWidth',2
四、应用到群智能算法中的规划流程
首先种群初始化,然后对于每一代群体执行以下操作:
(1)更新本代群体的温度,并根据本代群体的温度计算本代群体的运动步长。
(2)对于群体内的每个个体按照步长进行随机移动,并根据设定到的标准计算拟合出的路径的适应度
(3)若某个个体运动后的适应度优于当前的适应度,则对该个体的状态进行更新,若某个个体运动后的适应度差于当前的适应度,则按照e^((Fc-Fb)/KT)计算出的概率,决定是否接受劣解,若接受则更新状态,不接受则不更新。
(4)更新记录每个个体最优状态,更新记录群体最优状态
直至完成设定的迭代次数或者温度低于设定的温度下限。结束循环,完成规划。
五、效果演示