模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
SA在某一初温下,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解。
模拟退火算法是利用问题的求解过程与熔化物体退火过程的相似性,采用随机模拟物体退火过程来完成问题的求解,也就是在控制参数(温度)的作用下对参数的值进行调整,直到所选取的参数值最终使能量函数达到全局极小值。
模拟退火算法目的
- 许多实际优化问题的目标函数都是非凸的, 存在许多局部最优解, 但是, 有效地求出一般非凸目标函数的全局最优解至今仍是一个难题。特别是随着优化问题规模的增大, 局部最优解的数目将会迅速增加.
- 模拟退火算法是利用问题的求解过程与熔化物体退火过程的相似性,采用随机模拟物体退火过程来完成问题的求解,也就是在控制参数(温度)的作用下对参数的值进行调整,直到所选取的参数值最终使能量函数达到全局极小值。
模拟退火算法流程
- 初始化:针对问题选定合适的目标函数f作为能量函数E;决定初始参数:起始温度T 、终止温度、冷却率α(α∈[0,1])、单一温度迭代次数k。
- 设定起始迭代次数t=0,产生初始状态X0,计算其能量E0。
- 以目前解为中心由状态产生函数产生新的邻近解X1,计算其能量E1。
- 采用Metropolis接受法则比较两状态的能量,判决是否接受X1 , 若接受, 则令当前状态等于X1 , 若不接受,则令当前状态等于X0;
- 更新迭代次数,判断是否达到设定的阈值k,若是则进行降温T=T*α,且令t=0。
- 判断温度是否达到终止温度,若是则顺序执行step 7;若否则转至step 3重复执行
当前解作为最优解输出。