模拟退火算法(SA)的基本思想与算法流程

模拟退火算法(SA)的基本思想

问题描述

SA是一种启发式的随机寻优算法,模拟了物理退火过程从给定的一个初始高温开始,利用具有突跳特性的Metropolis抽样策略在解空间随机搜索,伴随稳定的不断下降重复抽样的过程。
在这里插入图片描述

基本步骤:
给定初温t=t_0,随机产生初始状态s=s_0,令k=0;
Repeat
	Repeat
		产生新的状态S_j=Gnente(s);
		if min{1,exp[-(C(s_j)-C(s))/t_k]}>=random[0,1]
			s=s_j;
	Until 抽样稳定准则满足
	退温t_{k+1}=update(t_k)并令k=k+1;
Until 算法终止准则满足
输出算法搜索结果

可以看出,影响SA优化结果的主要因素就是:三函数两原则以及初始温度

SA算法的基本要求与要素

基本要求:

  • 1、初始温度足够高
  • 2、降温过程足够慢
  • 3、终止温度足够低
    算法要素:
  • 1、状态表达
  • 2、领域的定义与移动
  • 3、热平衡达到
  • 4、降温函数:常用的降温函数有:
    a : T k + 1 = T k ∗ r , 其 中 r ∈ ( 0.95 , 0.99 ) a: T_{k+1}=T_k*r,其中r\in (0.95,0.99) a:Tk+1=Tkr,r(0.95,0.99)
    b : T k + 1 = T k − Δ T , Δ T 是 每 一 步 下 降 的 长 度 b: T_{k+1}=T_k-\Delta T,\Delta T是每一步下降的长度 b:Tk+1=TkΔTΔT
SA的计算步骤
  • 1、初始化,任选初始解,i,给定初始温度T_0,终止温度T_f,令迭代指标k=0,T_k=T_0。
  • 要注意:选择T_0时,要足够高,使 E i / T k → 0 E_i/T_k\rightarrow 0 Ei/Tk0
  • 2、随机产生一个邻域解,计算目标值增量 j ∈ N ( i ) , ( N ( i ) 表 示 i 的 邻 域 ) j\in N(i), (N(i)表示i的邻域) jN(i),(N(i)i)
    Δ f = f ( j ) = f ( i ) \Delta f=f(j)=f(i) Δf=f(j)=f(i)
  • 3、若 Δ f < 0 \Delta f<0 Δf<0令i=j转步骤4(j比i好,就进行无条件转移);否则产生 ξ ∈ U ( 0 , 1 ) \xi \in U(0,1) ξU(0,1) e x p ( − Δ f / T k ) > ξ exp(-\Delta f/T_k)>\xi exp(Δf/Tk)>ξ则令i=j(j比i好,有条件转移)
  • 注意:T_k高时,广域搜索;T_k低时,局域搜索
  • 4、若达到热平衡(内循环的次数大于n(T_k))转步骤5,否则转步骤2
  • 5、k=k+1 降低T_k,若T_k<T_f停止,否则转步骤2
  • 注意:降低T_k的方法有以下两种
    a : T k + 1 = T k ∗ r , 其 中 r ∈ ( 0.95 , 0.99 ) a: T_{k+1}=T_k*r,其中r\in (0.95,0.99) a:Tk+1=Tkr,r(0.95,0.99)
    b : T k + 1 = T k − Δ T , Δ T 是 每 一 步 下 降 的 长 度 b: T_{k+1}=T_k-\Delta T,\Delta T是每一步下降的长度 b:Tk+1=TkΔTΔT
SA算法的流程框图

在这里插入图片描述

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值