模拟退huo算法的特点_兄弟,退火吗?—— 初窥模拟退火算法

模拟退火算法(Simulated annealing, SA)是一种基于蒙特卡罗(Monte Carlo)思想设计的,常用于在较大的解空间中搜索近似全局最优解的优化算法。本文将从模拟退火算法的历史、形式、特点、改进和实现等方面出发,对模拟退火算法作出介绍。

一、模拟退火算法的诞生

在众多科学领域,组合优化问题广泛存在,其中不乏 NP 完全问题(Nondeterministic polynomial-time complete problem),典型的如做决定版的旅行商问题(Decision version of the traveling salesman problem, TSP)。目前为止,所有已知的解决 NP 完全问题的算法的时间复杂度皆大于多项式时间。为处理这类问题,人们提出多种折衷的算法,包括近似算法(Approximation algorithm)、随机化算法(Randomized algorithm)、启发式算法(Heuristic algorithm)等,以求在可接受的时间内得到可接受的解。模拟退火算法即是近似算法、随机化算法中的一例。

美国物理学家 N. Metropolis 等人在 1953 年发表的《Equation of State Calculations by Fast Computing Machines》一文中,使用蒙特卡罗模拟法计算多分子系统中分子的能量分布。1983 年,物理学家 S. Kirkpatrick、C. D. Gelatt 和 M. P. Vecchi 在《Science》上发表了《Optimization by Simulated Annealing》。文章摘要中写道:「在统计力学(在有限温度下的热平衡中具有多个自由度的系统的行为)和多变量或组合优化问题(寻找给定多参数函数的最小值)之间,存在深刻且有用的联系。对固体退火的细节类比提供了一个优化复杂庞大系统的框架。这种与统计力学的联系带来了新信息,提供了一个研究传统优化问题和方法的全新视角。」文中指出 Metropolis 的程序可以被用在寻找更优解中,因为物理系统的能量和一些组合优化(Combinatorial optimization)问题中的成本函数相类似,而原子的随机微小移位可类比为优化问题中解的局部变动。由此,Kirkpatrick 等人以 Metropolis 的方法为基础发展出一套随机化算法,是为模拟退火算法。

二、由固体退火到模拟退火:实现形式

模拟退火算法来源于固体退火原理,将固体加温至充分高,再使其以足够慢的速度冷却,用原子或晶格空位的移动来释放内部残留应力,通过这些原子排列重组的过程来消除材料中的差排。加温时,固体内部粒子随温度升高变为无序状,内能增大,而缓慢冷却时粒子趋于有序,在每个温度都达到平衡态,按照物理规律,最终在常温时达到基态,内能减为最小。

常规的模拟退火算法类比这一过程进行实现,包括以下步骤:

( 1 ) 设定冷却进度表(Cooling schedule),其由以下一组初始参数组成:

冷却开始时的温度

,为避免陷入局部最优,应使此温度较高;

控制温度衰减的函数,最简单可处理为

,其中

为一个设定好的常数,经典的降温函数还有

,其中

为迭代次数;

温度的终值

,为避免精确度过差,应使此温度较低;

Markov 链的长度

,即在每一温度下的最大迭代次数。

( 2 ) 在数学模型中找到解空间与目标函数,并生成初始解。

解空间(Feasible region)

:若所有可能解均为可行解,解空间即为可能解

的集合 ;若存在不可行解,则限定解空间

为所有可行解的集合,或通常地,允许包含所有可能解但在目标函数中使用罚函数(Penalty function)以最终排除不可行解。

目标函数

:通常是解空间到实数集的映射,类比固体退火中的能量(Energy),常表示为

,在算法内部,解越优,目标函数值

应越小。

初始解

:模拟退火算法的健壮性(Robustness)较好,即最终解的求得不过分依赖于初始解的选取,故初始解通常随机选择,并得到相应的目标函数值

( 3 ) 新解的产生与接受,以及最优解的储存。

对当前解

进行随机扰动产生新解

,通常通过简单变换(如部分元素的互换)产生(所有可能产生的新解构成当前解的邻域)。然后计算相应

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值