模拟退火算法(Simulated Annealing Algorithm)
简介:
模拟退火算法(Simulated Annealing Algorithm,SA)是三大非经典算法之一,来源于固体退火原理,是一种基于概率的算法。
原理 :
模拟退火算法是一种通用概率算法,用来在一个大的搜寻空间内寻找问题的最优解。其思想来源于固体的退火过程:将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
下图可以较为直观地理解物理退火过程与模拟退火算法的类比关系:
步骤:
1.符号说明:
符号 | 意义 |
---|---|
控制参数的初值 | 冷却开始的温度 |
控制参数 的衰减函数 | 计算将连续数据转化为计算机可处理的离散数据的表达式 |
控制参数 的终值 | 停止准则 |
Markov链的长度 | 任意温度的迭代次数 |
2.算法基本步骤:
-
令,即开始退火的初始温度,随机生成一个初始解,并计算相应的目标函数值。
-
令等于冷却进度表中的下一个值.
-
根据当前解进行扰动,产生一个新解 ,计算相应的目标函数值 ,得到 。
-
如果,则新解 被接受,作为新的当前解;如果,则新解 按概率 接受,为当前温度。
-
在温度 下,重复 次的扰动和接受过程( 是 Markov链长度),即步骤 3,4。
-
判断是否 已经到达 ,是,则终止算法,否,则转到步骤 2 继续执行。
算法实际上分为两层循环,在任意温度随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于初始温度较高,使 增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法最终可能收敛到全局最优解。
3.算法说明:
- 状态表达:实际问题的解(即状态)如何应当以一种合适的数学形式被表达出来,它应当适用于SA的求解,又能充分表达实际问题。
- 新解的产生:新解产生机制的基本要求是能够尽量遍及解空间的各个区域,这样在某一恒定温度不断产生新解时,就可能跳出当前区域以搜索其他区域。
- 收敛的一般性条件:
1.初始温度足够高 2.热平衡时间足够长 3.终止温度足够低 4.降温过程足够缓慢 -
参数的选择:控制参数 的初值 :模拟退火算法是通过控制参数 的初值 及其衰减变化的过程来实现大范围的粗略搜索,最终求得全局最优解。
控制参数 的衰减函数:衰减函数有多种形式,常用的衰减函数是:。其中,是一个常数,可以取0.5-0.99,它的取值决定了降温的过程。
Markov链长度:选取原则:在控制参数T的衰减函数确定的前提下, 应能使在控制参数 的每一取值上达到准平衡。
4.全局优化求解器汇总:
算法 | Matlab求解器 | 作用 |
---|---|---|
全局搜索 | GlobalSearch | 寻找全局最小值 |
多起点搜索 | MultiStart | 寻找多个局部最小值 |
模式搜索 | patternsearch | 用模式搜索方式寻找函数的最小值 |
遗传 | Ga | 用遗传算法寻找函数的最小值 |
粒子群 | particleswarm | 用粒子群算法寻找函数的最小值 |
模拟退火 | simulannealbnd | 用模拟退火算法寻找函数的最小值 |