模拟退火算法(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)
    b : T k + 1 = T k Δ T Δ T b: T_{k+1}=T_k-\Delta T,\Delta 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
  • 2、随机产生一个邻域解,计算目标值增量 j N ( i ) , ( N ( i ) i ) j\in N(i), (N(i)表示i的邻域)
    Δ f = f ( j ) = f ( i ) \Delta f=f(j)=f(i)
  • 3、若 Δ f < 0 \Delta f<0 令i=j转步骤4(j比i好,就进行无条件转移);否则产生 ξ U ( 0 , 1 ) \xi \in U(0,1) e x p ( Δ f / T k ) > ξ exp(-\Delta f/T_k)>\xi 则令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)
    b : T k + 1 = T k Δ T Δ T b: T_{k+1}=T_k-\Delta T,\Delta T是每一步下降的长度
SA算法的流程框图

在这里插入图片描述

发布了37 篇原创文章 · 获赞 17 · 访问量 2592

猜你喜欢

转载自blog.csdn.net/qq_44384577/article/details/105261534