算法学习报告-03 模拟退火算法

模拟退火算法(Simulated Annealing Algorithm)

简介:

模拟退火算法(Simulated Annealing Algorithm,SA)是三大非经典算法之一,来源于固体退火原理,是一种基于概率的算法。

原理 :

模拟退火算法是一种通用概率算法,用来在一个大的搜寻空间内寻找问题的最优解。其思想来源于固体的退火过程:将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

 下图可以较为直观地理解物理退火过程与模拟退火算法的类比关系:

 

步骤:

1.符号说明:

符号意义
控制参数的初值 T_{0}冷却开始的温度
控制参数 T 的衰减函数计算将连续数据转化为计算机可处理的离散数据的表达式
控制参数 T 的终值 T_{i}停止准则
Markov链的长度 L_{k}任意温度T的迭代次数

 

 

 

 

 

 

2.算法基本步骤:

  1. T = T_{0},即开始退火的初始温度,随机生成一个初始解x_{0},并计算相应的目标函数值E(x_{0})

  2. T等于冷却进度表中的下一个值T_{i}.

  3. 根据当前解x_{i}进行扰动,产生一个新解 x_{i},计算相应的目标函数值 E(x_{j}),得到 \Delta E = E(x_{j} - E(x_{i})

  4. 如果\Delta E < 0,则新解 x_{j} 被接受,作为新的当前解;如果\Delta E > 0,则新解 x_{j} 按概率 exp(-\Delta E / T_{i}) 接受,T_{i}为当前温度。

  5. 在温度 T_{i} 下,重复 L_{k} 次的扰动和接受过程(L_{k} 是 Markov链长度),即步骤 3,4。

  6. 判断是否 T 已经到达 T_{f},是,则终止算法,否,则转到步骤 2 继续执行。

算法实际上分为两层循环,在任意温度随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于初始温度较高,使 E 增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法最终可能收敛到全局最优解。

3.算法说明:

  1. 状态表达:实际问题的解(即状态)如何应当以一种合适的数学形式被表达出来,它应当适用于SA的求解,又能充分表达实际问题
  2. 新解的产生:新解产生机制的基本要求是能够尽量遍及解空间的各个区域,这样在某一恒定温度不断产生新解时,就可能跳出当前区域以搜索其他区域。
  3. 收敛的一般性条件:
    1.初始温度足够高
    2.热平衡时间足够长
    3.终止温度足够低
    4.降温过程足够缓慢

     

  4. 参数的选择:控制参数 T 的初值 T_{0}:模拟退火算法是通过控制参数 T 的初值 T_{0} 及其衰减变化的过程来实现大范围的粗略搜索,最终求得全局最优解。

                              控制参数 T 的衰减函数:衰减函数有多种形式,常用的衰减函数是:T_{k+1} = \alpha T_{k} (k = 0, 1, 2, ...)。其中,\alpha是一个常数,可以取0.5-0.99,它的取值决定了降温的过程。

                              Markov链长度:选取原则:在控制参数T的衰减函数确定的前提下,L_{k} 应能使在控制参数 T 的每一取值上达到准平衡。

4.全局优化求解器汇总:

Matlab全局优化算法求解器
算法Matlab求解器作用
全局搜索GlobalSearch寻找全局最小值
多起点搜索MultiStart寻找多个局部最小值
模式搜索patternsearch用模式搜索方式寻找函数的最小值
遗传Ga用遗传算法寻找函数的最小值
粒子群particleswarm用粒子群算法寻找函数的最小值
模拟退火simulannealbnd用模拟退火算法寻找函数的最小值

 

 

 

                              

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值