当前位置:文档之家› 用模拟退火算法实现集成电路热布局优化

用模拟退火算法实现集成电路热布局优化

用模拟退火算法实现集成电路热布局优化
用模拟退火算法实现集成电路热布局优化

模拟退火算法原理及matlab源代码

模拟退火算法模拟退火算法是一种通用的随机搜索算法,是局部搜索算法的扩展。它的思想是再1953 年由metropolis 提出来的,到1983 年由kirkpatrick 等人成功地应用在组合优化问题中。 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis 准则,粒子在温度T 时趋于平衡的概率为e- △ E/(kT),其中E为温度T时的内能,AE为其改变量,k 为Boltzmann 常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f ,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解-计算目标函数差T接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(Cooli ng Schedule)控制,包括控制参数的初值t 及其衰减因子△ t、每个t值时的迭代次数L和停止条件S。 模拟退火算法新解的产生和接受可分为如下四个步骤:第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。 第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。 第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropo1is准则:若厶t‘ <0 则接受S'作为新的当前解S,否则以概率exp(- △ t‘ /T) 接受S'作为新的当前解S。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。 可在此基础上开始下一轮试验。而当新解被判定为舍弃时,

模拟退火算法原理及改进

作者简介:李香平(1978 ̄),男,湖北监利人,中国地质大学计算机学院硕士研究生,研究方向为科学研究与可视化;张红阳(1982 ̄),男,湖北咸宁 人,中国地质大学计算机学院硕士研究生,研究方向为数据挖掘与数据仓库。 模拟退火算法原理及改进 李香平,张红阳 (中国地质大学计算机学院,湖北武汉430074) 摘 要:模拟退火算法是一种强大的随机搜索算法,能应用于许多前提信息很少的问题,能渐进地收敛于最优值。对 SA算法进行了介绍,论述了SA算法的原理并对算法进行了改进,展示了计算实验的结果。 关键词:模拟退火;全局优化中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2008)04-0047-02 0引言 近年来,传统的单一算法越来越不适应大规模非线性规划 问题。它们要求目标函数是可微的和收敛的。SA能很好地弥补它们的缺陷。 从用于统计力学的MonteCarlo方法上受到启发,SA算法在 1983被Kirkpatrick提出来。对比传统局部搜索算法,SA在搜索 时会在搜索空间上下移动而不依赖初始条件,擅长解决多维问题。此外,它能处理任意程度的非线性、 不连续和随机的问题。能处理任意边界和约束的评估函数。因此,它能轻易处理有脊背和高地的函数。只要初温高、退火表适当,它就能得到全局最优。SA成功应用于组合优化、神经网络、图像处理和代码设计。 1模拟退火算法原理 组合优化问题是在给定的约束条件下,求目标函数的最值 的问题。设(S,f)是组合优化问题的一个实例,iopt∈S若对所有 i∈S,都有f(iopt)≥f(i),则称f(iopt)≤f(i)为minf(i)的最优解。 SA来源于物理热力学原理,综合了固体退火与组合优化 之间的类似性。类似固体的复杂系统,先被加热到一个物质粒子能自由移动的很高的温度,当它慢慢冷却时,它的能量减少。如果“冷却”过程足够慢,系统将忽略局部稳定构造,到达能量最低状态,即基态。 在模拟的每一步中,新解的产生按照Metropolistransition法则,一个新的状态从现有的状态中产生,这个法则能以一定的概率接受能量上升(即产生劣解)的新状态,而能量下降是优化的总目的。法则如下所示: p(x=>y)= 1, f$%y≤f$%xexp-f$% xf$%y $ % , otherwis&e f是系统能量,t是温度。SA的一般框架: Generatedinitialstateatrandom;Generatedinitialtemperature;REPEATREPEAT y=generate(,); IFaccept(,y,)THEN=y UNTIL'innerloopstopcriterion'satisfied 为了提高SA的性能,我们应该仔细处理控制参数的协调。(1)初始温度的选择。初始温度太高会花费高昂的计算时间,太低会拒绝劣解的接受,会丢失SA全局优化的优点。本文提出了一个初始温度的公式: t0=’f+ lnx -1 ’f+ 是函数增量的平均值,χ 是初始的接受概率。(2)温度降低策略。温度降低越快,陷入局部的概率就越大。然而,温度降低太慢会导致算法速度慢得不能接受。本文采用了一种快速的非线性降低法: tk= t0 1+k k=1,2,3,…… (3)适当的邻域结构。在退火期间,步长太小导致算法在探索相位空间效率低,太大新解总被拒绝。在持续优化时,新的等价值均一地按间距分布在以xi的坐标为中心的邻域中,沿轴的间距的一半被看作步长向量ξ。当点落在f的定义域内时,就随机产生新解。 (4)终止标准。内循环是单一温度下在各种条件下Marcov链的一种渐进接近全局最优的模拟实现,即循环Marcov链长次数结束。外循环取某个温度t作为算法终止标准,或者是迭代若 软件导刊 SoftwareGuide 第7卷第4期 2008年4月Vol.7No.4Apr.2008

利用模拟退火算法设计方向图的原理和方法

第24卷第7期计算机仿真2007年7月文章编号:1006—9348(2007)07—0176—03 利用模拟退火算法设计方向图的原理和方法 林欢欢,王英民,朱婷婷 (西北工业大学航海学院,陕西西安710072) 摘要:在声纳系统中,基阵方向图的作用是用来指示目标方位的,它是一个声纳系统的核心和重要部分。由于声纳系统的使用环境比较复杂,如何快速、有效、多角度地设计基阵方向图是一个很值得关注的问题。为了解决这个问题,引入了模拟退火算法来进行方向图的辅助设计。模拟退火算法是近些年发展起来的一种全局优化算法,它最大的特点是可以根据不同的标准来进行优化。利用它来设计基阵方向图,可以省去很多繁琐的步骤,有效地简化方向图的设计。计算机仿真结果表明,模拟退火算法可以很好的完成在不同情况下设计基阵方向图的任务。 关键词:模拟退火算法;最佳指向性指数:列阵 中图分类号:TN391.9文献标识码:A TheTheoryandMethodforDesigningtheOptimumDirectionalPatternofAcousticArrayswithSimulatedAnnealing LINHuan—huan,WANGYing—min,ZHUTing—ting (MarineCoHegeofNorthwesternPolytechnicalUniversity,Xi’anShanxi710072,China)ABSTRACT:Thefunctionofdirectionalpatterninthesonarsystemistodetecttarget’Sposition.Thedirectionalpatternis thekeyandanimportantpartinthesonarsystem.Becauseofvariousconditionsinwhichthesonarsystemworked,howtodesignthedirectionalpatternisanimportantproblem.Tosolvetheproblem,themethodofSimulatedAnnealingisintroduced.ThemethodofSimulatedAnnealingisaglobaloptimizedmethoddevelopedinrecentyears. Todesignthedirectionalpatternwithitcanpredigesttheproblem.Finally,thecomputersimulationisincludedtosustainthemethod. KEYWORDS:Simulatedannealing;Optimumdirection;Linearpointarray 1引言 在声纳系统的设计中,声纳的指向性是一个非常重要的问题,它的设计好坏,直接决定了声纳的好坏。对于声纳指向性的设计,已经进行了很多年,虽然对于不同的阵型有不同的特定设计方法,如等间隔线列阵方向图设计的切比雪夫加权方法,但总体来讲,还没有可以适用于任意阵型的优化设计方法。其实我们换个角度来考虑,方向图的设计实际上就是一个最优化的问题,它就是要使得在目标方位上方向图的响应最大,可是目前还没有任何最优化的方法应用在方向图的设计上。如果把最优化方法应用在方向图设计上,那么不仅可以提供一种全新的思路来设计方向图,而且适用面非常广,可以根据不同的标准来调整方向图的设计,从而从根本上解决了方向图的设计问题。 在最优化方法的选择上,我选择了模拟退火算法。模拟退火算法(SimulatedAnnealing)首先由Kirkpatrick在1982年 收稿日期:2006—06—06修回日期:2006—06—16 ----——176----——提出,Gelat和Vecchi(1983)紧随其后,这构成了传统的sA方法。之后SA方法经许多研究者的积极探索,又逐渐发展出快速SA方法和其他变形算法,如多结构sA方法Wang(1994)。由于sA算法的有效性和稳健性表现在它并不依赖于初始值的选取,而且在某些情况下还可以给出明确上限计算时间,因此,其本身是一个全局优化算法,其应用领域已渗透到工程领域的各个方面。把模拟退火算法应用到线列阵的方向图设计上,根据不同的设计目标制定不同的标准,可以有效、快速的求得最优解,使方向图的设计变得轻松,简便。 2模拟退火算法 退火是材料处理过程中的一种方法,即把材料加热到一定温度使其熔化,然后使其慢慢冷却达到结晶状态。在这个过程中,固体内部的自由能量达到最小。而所谓的模拟退火算法就是模拟该过程的优化算法。 模拟退火算法是基于MonteCarlo技术的,它以下列方  万方数据万方数据

模拟退火算法的旅行商问题

人工智能原理 实验报告 模拟退火算法解决TSP问题

目录 1 旅行商问题和模拟退火算法........................................... 错误!未定义书签。 旅行商问题................................................................... 错误!未定义书签。 旅行商问题的描述................................................. 错误!未定义书签。 模拟退火算法............................................................... 错误!未定义书签。 基本思想................................................................. 错误!未定义书签。 2 TSP模拟退火算法的实现................................................ 错误!未定义书签。 TSP算法实现............................................................... 错误!未定义书签。 TSP算法描述......................................................... 错误!未定义书签。 TSP算法流程......................................................... 错误!未定义书签。 TSP的C实现 .............................................................. 错误!未定义书签。 加载数据文件......................................................... 错误!未定义书签。 计算总距离的函数................................................. 错误!未定义书签。 交换城市的函数..................................................... 错误!未定义书签。 执行模拟退火的函数............................................. 错误!未定义书签。 实验结果......................................................................... 错误!未定义书签。 小结................................................................................. 错误!未定义书签。3源代码................................................................................ 错误!未定义书签。

智能计算-模拟退火算法(matlab实现)

模拟退火算法 摘要:阐述了模拟退火算法的基本原理及实现过程,运用MATLAB语言实现了该算法。并将其运用到解决旅行商问题的优化之中。数值仿真的结果表明了该方法能够对函数进行全局寻优,有效克服了基于导数的优化算法容易陷入局部最优的问题。该方法既可以增加对MATLAB 语言的了解又可以加深对模拟退火过程的认识,并达到以此来设计智能系统的目的。 关键词:模拟退火算法,全局寻优,搜索策略

simulatedannealing algorithm Abstract:This paper describes the basic principles and processes simulatedannealing algorithm, using MATLAB language implementation of the algorithm. And use it to solve the traveling salesman problem among optimization. Simulation results show that the method can be a function of global optimization, effectively overcome the derivative-based optimization algorithm is easy to fall into local optimum. This method not only can increase the MATLAB language can deepen understanding and awareness of the simulated annealing process, and in order to achieve the purpose of the design of intelligent systems. Keywords:simulatedannealing algorithm,Global optimization,strategy

模拟退火算法及其改进_蒋龙聪

第4卷第2期2007年4月  工程地球物理学报 CHIN ESE J OU RNAL OF EN GIN EERIN G GEOP H YSICS Vol 14,No 12Apr 1,2007 文章编号:1672—7940(2007)02—0135—06 模拟退火算法及其改进 蒋龙聪,刘江平 (中国地质大学地球物理与空间信息学院,武汉430074) 作者简介:蒋龙聪(1983— ),男,硕士研究生,现在主要从事地震数据处理和反演理论方法研究。E 2mail :longcja @https://www.doczj.com/doc/ad12883548.html, 刘江平(1957— ),男,教授,博士生导师,主要从事地震勘探的科研与教学工作。E 2mail :liujp @https://www.doczj.com/doc/ad12883548.html, 摘 要:借鉴遗传算法中的非均匀变异思想,用非均匀变异策略对当前模型扰动产生新的模型,对传统的模 拟退火算法提出了改进,通过多峰值函数数值优化测试结果表明,该算法在高温的时候能够进行大范围的搜索,随着温度的降低,逐渐缩小解的搜索范围,大大加快了收敛速度,证实了该改进算法的有效性和高效性。 关键词:模拟退火算法;非均匀变异;数值最优化;反演 中图分类号:P631文献标识码:A 收稿日期:2006— 12—07R evised Simulated Annealing Algorithm Jiang Longcong ,Liu Jiangping (I nstitute of Geop hysics and Geomatics ,China Universit y of Geosciences ,W uhan 430074,China ) Abstract :Based on t he idea of non 2uniform mutation in genetic algorit hm ,we present a novel revised simulated annealing (RSA ),which used t he non 2uniform mutation to generate a new model f rom current model.Tested by some numerical f unctions ,RSA can search in t he large area for t he solutions in high temperat ure.Wit h t he lowering of t he temperat ure ,t he area of searching t he solutions will be gradually reduced and convergence will speed up.So t he re 2sult s p rove t he effectiveness of RSA. K ey w ords :simulate annealing ;non 2uniform mutation ;numerical optimal ;inversion 1 引 言 人类对地球内部物理性质(包括速度、密度、电导率、温度等)以及矿产资源分布的了解,大多来自地表地质和地球物理、地球化学资料的反演和解释[1]。反演方法可以分为线性反演和非线性反演两种,线性反演已成为一套科学的反演理论,然而,绝大部分地球物理问题都是非线性的,并且实践表明,线性反演方法有容易陷入局部极值和依赖于初始值等缺点。因此,地球物理学者们不 断的尝试开发非线性反演方法,比如人工神经网 络[2]、小波多尺度反演[3]、模拟退火算法[4]等。 模拟退火算法是近年发展起来的全局最优化算法,其主要优点是;不用求目标函数的偏导数及解大型矩阵方程组,即能找到一个全局最优解,而且易于加入约束条件,编写程序简单。目前此法已开始用于解决非线性地球物理反问题,如波形反演、静校正、叠前偏移速度分析等非线性反演中,并取得了较好的效果。 然而,由于模拟退火法是建立在随机搜寻方法的基础上,要达到一定的精度要求,每一模型参

模拟退火算法报告

模 拟退火算法 一 定义 1 概念 什么是退火?在热力学上,退火现象指物体逐渐降温的物理现象,温度愈低,物体的能量状态会低;够低后,液体开始冷凝与结晶,在结晶状态时,系统的能量状态最低。大自然在缓慢降温(亦即,退火)时,可“找到”最低能量状态:结晶。但是,如果过程过急过快,快速降温(亦称「淬炼」)时,会导致不是最低能态的非晶形。如下图所示,首先(左图)物体处于非晶体状态。我们将固体加温至充分高(中图),再让其徐徐冷却,也就退火(右图)。加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小(此时物体以晶体形态呈现)。 似乎,大自然知道慢工出细活:缓缓降温,使得物体分子在每一温度时,能够有足够时间找到安顿位置,则逐渐地,到最后可得到最低能态,系统最安稳。 模拟退火算法(SA)最早的思想是由N. Metropolis 等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo 迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。 模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。在迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以下图为例,假定初始解为左边蓝色点A ,模拟退火算法会快速搜索到局部最优解B ,但在搜索到局部最优解后,不是就此结束,而是会以一定的概率接受到左边的移动。也许经过几次这样的不是局部最优的移动后会到达全局最优点D ,于是就跳出了局部最小值。 根据热力学的原理,在温度为T 时,出现能量差dE 的降温的概率为P(dE),表示 为: ()?? ? ??=kT dE E P ex p d 。其中k 是波尔兹曼常数,值为-2310×13)1.3806488(=k ,exp 表示自然指数,且dE<0。因此dE/kT<0,所以P(dE)函数的取值范围是(0,1)。满足概率密度函数的定义。其实这条公式更直观意思就是:温度越高,出现一次能量差为P(dE)的降温的概率就越大;温度越低,则

关于模拟退火算法及其影响因素的研究

关于模拟退火算法及其影 i《_■ SILICONV VALLE工响因素的研究 邓超陈文宣王树青 (东莞南博职业技术学院广东东莞523083)信毫科学 插要:通过使用模拟退火算法模拟逼近函数:y=x+cosx+i开展实验,并在实验过程中对模拟退火算法的影响因素进行比较t并提出相应的改进方案,直观的将两者的差别体现出来。 关键词:模拟退火算法;权系数;阀值:神经网络结构;MATLAB 中圈分类号:TP3文献标识码:A文章编号z1671-7597(2010)0410045--01 1鬟拟量火算法的基本曩客 模辛}l退火算法最初的思想[自Metropolis在1953年提出,其来源统计物理学中对于固体退火过程的模拟。他采用Metropolis准则接收新解,用冷去系数的参数对算法进程进行控制。使得算法在多项时间里得出最优解.2对曩板退火算法进行试t研究 1)用模拟退火算法模拟逼近函数:y=x+cosx+1并对神经网络的权系数、阀值进行学习其神经网络结构为1—3-4_3—1. 2)具体试验过程如下: 模拟退火算法的实现主要采用了¨TLAB软件,利用其中的神经网络工具箱进行编程模拟.在网络UUl练方面,隐层采用logsig(厂(j)=_—二—__-) H’a烈一哪函数作为传递函数。在输出层方面采用线性输出函数imrelin(,(善)=#).降温函数采用t=^t. ①给定的学习样本、初始温度、结柬温度及降温速率^. @在某一温度下.以正态分布(Matlab中用randn)生成函数产生新的权系数增量△翻。‘虬.=缈+△翻生成新的权系数。 ③根据代价函数求出神经网络的输出偏差E∥t 胛=;(歹一y)2. @如果P,rS0,则取翻r+l为新值,即q=够+l? ⑤如果P玎>o,采用接收函数:B(i)=[I+e=V/‘】_1 以其值和[0,l】随机数d进行比较: 若B(i)>d。则Cd=够.。;, 若B(i)≤d,则国不变。 @以t:xt修改参数t.即缓慢降温。返回②执行. 3)试验生产的原函数和网络输出图如下: 4)结果分析t 由学习的结果来看,学习的曲线和原曲线相差较大,而且函数收敛得很慢.其原因是模拟退火法的初始参数包括初温tO,结束温度tf’衰减温度deltaT及控制内循环的马尔可夫链长L的选择对整个结果产生较大影响。 3樱报遗火法的改盛可行性方毫 1)设计合适的状态产生函数:设计高效的退火历程;避免状态的迂回搜索;采用并行搜索结构:改进对温度的控制方式;选择合适的初始状态;设计合适的算法终止准则。 2)也可通过增加某些来实现:如增加升温或重升温过程;增加记忆功能{增加朴充搜索过程。 4-}墨横挂鼍火算法的实验改进方囊 ”对原算法的神经喇络结构进行更改.由卜3-4—3一l改为卜10一h 2)调整即网络训练参数:具体为添加代码为: net.trainParaLepochs23000: net.trainPar∞.goal=0.002: net.trainParanIr20.0l: I开始训练 net2train(net,x.y):) 在对原算法改进后试验产生的原函数和网络输出图如下(改进处在源程序中体现): 由结果可以看到,改进后的算法收敛速度加快,函数的逼近和精度都已经较高。 参考文献: 【l】王士同、陈剑夫等编著。问题求解的人工智能神经网络方法r气象出版社. [2]焦李成.神经网络系统理论,西安,西安电子科技大学出版社,1996.6. 作者简介: 邓超(1979-),男.汉族.广东省韶关市人,硕士.东莞南博职业技术 学院助教,研究方向;神经网络? 万方数据

模拟退火算法算法的简介及程序

模拟退火算法 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。 模拟退火算法的模型 模拟退火算法可以分解为解空间、目标函数和初始解三部分。 模拟退火的基本思想: (1)初始化:初始温度T(充分大),初始解状态S(是算法迭代的起 点),每个T值的迭代次数L (2) 对k=1,……,L做第(3)至第6步: (3) 产生新解S′ (4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数 (5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)

接受S′作为新的当前解. (6) 如果满足终止条件则输出当前解作为最优解,结束程序。终止条件通常取为连续若干个新解都没有被接受时终止算法。 (7) T逐渐减少,且T->0,然后转第2步。 算法对应动态演示图: 模拟退火算法新解的产生和接受可分为如下四个步骤: 第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。 第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。 第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropo1is准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则

模拟退火算法基本原理介绍

模拟退火算法 一、模拟退火算法概念 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T 时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann 常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。 二、模拟退火算法的模型 模拟退火算法可以分解为解空间、目标函数和初始解三部分。 模拟退火的基本思想: (1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L (2) 对k=1,……,L做第(3)至第6步: (3) 产生新解S′ (4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数 (5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解. (6) 如果满足终止条件则输出当前解作为最优解,结束程序。 终止条件通常取为连续若干个新解都没有被接受时终止算法。 (7) T逐渐减少,且T->0,然后转第2步。 算法对应动态演示图: 模拟退火算法新解的产生和接受可分为如下四个步骤: 第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。 第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。 第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropo1is准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。 模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。

SA模拟退火算法含代码()

一. 爬山算法( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解。 图1 二. 模拟退火(SA,Simulated Annealing)思想 爬山法是完完全全的贪心法,每次都鼠目寸光的选择一个当前最优解,因此只能搜索到局部的最优值。模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以图1为例,模拟退火算法在搜索到局部最优解A后,会以一定的概率接受到E的移动。也许经过几次这样的不是局部最优的移动后会到达D点,于是就跳出了局部最大值A。 模拟退火算法描述: 若J( Y(i+1) )>= J( Y(i) ) (即移动后得到更优解),则总是接受该移动 若J( Y(i+1) )< J( Y(i) ) (即移动后的解比当前解要差),则以一定的概率接受移动,而且这个概率随着时间推移逐渐降低(逐渐降低才能趋向稳定)

这里的“一定的概率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。 根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为: P(dE) = exp( dE/(kT) ) 其中k是一个常数,exp表示自然指数,且dE<0。这条公式说白了就是:温度越高,出现一次能量差为dE的降温的概率就越大;温度越低,则出现降温的概率就越小。又由于dE总是小于0(否则就不叫退火了),因此dE/kT < 0 ,所以P(dE)的函数取值范围是(0,1) 。 随着温度T的降低,P(dE)会逐渐降低。 我们将一次向较差解的移动看做一次温度跳变过程,我们以概率P(dE)来接受这样的移动。 关于爬山算法与模拟退火,有一个有趣的比喻: 爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。 模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。 下面给出模拟退火的伪代码表示。 三. 模拟退火算法伪代码 代码 /* * J(y):在状态y时的评价函数值 * Y(i):表示当前状态 * Y(i+1):表示新的状态 * r:用于控制降温的快慢 * T:系统的温度,系统初始应该要处于一个高温的状态 * T_min :温度的下限,若温度T达到T_min,则停止搜索 */ while( T > T_min ) { dE = J( Y(i+1) ) - J( Y(i) ) ; if ( dE >=0 ) //表达移动后得到更优解,则总是接受移动 Y(i+1) = Y(i) ; //接受从Y(i)到Y(i+1)的移动 else { // 函数exp( dE/T )的取值范围是(0,1) ,dE/T越大,则exp( dE/T )也 if ( exp( dE/T ) > random( 0 , 1 ) )

相关主题
文本预览
相关文档 最新文档