前面几篇主要是解释仿生群体行为的启发式算法,而本文所述模拟退火算法则是一种通用的概率优化算法(虽然求解用到概率手段,但是得到的解往往是全局最优或次优的解),以下通过一些浅显的剖析来突出该算法的特点。其实谈到这个算法个人比较亲切,这是算是在原理上和我专业最接近的一个优化算法,它的原理主要是来自固体退火原理,其主要过程是将固体加温至充分高,再让其以一定的速度缓慢冷却。
, 吸收的热量
增大导致内能增大)
本质上来说,不知道读者有没有这样的疑问,如果我们一直无限制的降低外界
,那么内能不就一直下降不收敛吗,笔者在学习时其实有过这样的疑问,我是这样想的我们所理解的内能是基于物理化学规律的,而这里的内能是我们的目标函数,目标函数的复杂及收敛程度不同,也就是会存在你就算不断降低外界温度,这个内能也不会怎么改变,因为这里的内能只由状态决定,而下降温度只是会影响状态切换的概率而已,并且当内能全局最低时,此时的状态也不会轻易切换状态了(因为找不到比他内能还低的新状态)
注意:即使最后得到了"全局最优解x",即使此时的接受概率最小,但是仍然有可能接受比全局最优解差的解(只是说明状态切换的概率很小但不是没有,甚至可能最优解的转移概率值大于了随机数从而发生状态切换选择了次优解),所以一般算法输出会把历史最优解一并输出
因为该算法的自变量是固体粒子的状态,如果自变量是一个向量,则说明一个自变量的每一维度可以代表固体中的一个粒子,这个优势天然的就和TSP旅行商问题结合在一起,所以说模拟退火算法更能解决一些0-1指派问题、背包问题、生产调度问题等真实业务场景
话说有机会可以这么试试,踏遍祖国大好河山