模拟退火算法

Simulate Anneal Arithmetic (SAA,模拟退火算法) 模拟退火算法   模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题, 阅读详情

 

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

ttp://www.chinakdd.com
3.5.1 模拟退火算法的模型 
  模拟退火算法可以分解为解空间、目标函数和初始解三部分。 
 模拟退火的基本思想: 
  (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) 如果满足终止条件则输出当前解作为最优解,结束程序。 
终止条件通常取为连续若干个新解都没有被接受时终止算法。  http://www.dmresearch.net/bbs
  (7) T逐渐减少,且T->0,然后转第2步。 
算法对应动态演示图: 
模拟退火算法新解的产生和接受可分为如下四个步骤: 
  第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。 
  第二步是计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。 
  第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropo1is准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。  http://www.dmresearch.net/bbs
  第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。 
  模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。 
3.5.2 模拟退火算法的简单应用 
  作为模拟退火算法应用,讨论货郎担问题(Travelling Salesman Problem,简记为TSP):设有n个城市,用数码1,…,n代表。城市i和城市j之间的距离为d(i,j) i, j=1,…,n.TSP问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短.。 
  求解TSP的模拟退火算法模型可描述如下: 
  解空间 解空间S是遍访每个城市恰好一次的所有回路,是{1,……,n}的所有循环排列的集合,S中的成员记为(w1,w2 ,……,wn),并记wn+1= w1。初始解可选为(1,……,n) 


  目标函数 此时的目标函数即为访问所有城市的路径总长度或称为代价函数: http://www.dmresearch.net/bbs

 

  我们要求此代价函数的最小值。 
  新解的产生 随机产生1和n之间的两相异数k和m,若k
  (w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn) 
  变为: 
  (w1, w2 ,…,wm , wm-1 ,…,wk+1 , wk ,…,wn). 
  如果是k>m,则将 
  (w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn) 
  变为: 
  (wm, wm-1 ,…,w1 , wm+1 ,…,wk-1 ,wn , wn-1 ,…,wk). 
  上述变换方法可简单说成是“逆转中间或者逆转两端”。 
  也可以采用其他的变换方法,有些变换有独特的优越性,有时也将它们交替使用,得到一种更好方法。 


  代价函数差 设将(w1, w2 ,……,wn)变换为(u1, u2 ,……,un), 则代价函数差为:

 

根据上述分析,可写出用模拟退火算法求解TSP问题的伪程序: 
Procedure TSPSA: 
 begin 
  init-of-T; { T为初始温度} 
  S={1,……,n}; {S为初始值} 
  termination=false; 
  while termination=false 
   begin 
    for i=1 to L do 
      begin 
        generate(S′form S); { 从当前回路S产生新回路S′} 
        Δt:=f(S′))-f(S);{f(S)为路径总长} 

http://www.itonghui.com


        IF(Δt<0) OR (EXP(-Δt/T)>Random-of-[0,1])  
        S=S′;  
        IF the-halt-condition-is-TRUE THEN  
        termination=true;  
      End;  
    T_lower;  
   End;  
 End  
  模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、调度问题(Scheduling Problem)等等。

http://www.dmresearch.net/bbs

 

3.5.3 模拟退火算法的参数控制问题 
  模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问题有以下三点: 
  (1) 温度T的初始值设置问题。 
  温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。 
  (2) 退火速度问题。 
  模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质和特征设置合理的退火平衡条件。 
  (3) 温度管理问题。  http://www.chinakdd.com
  温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式:

http://www.dmresearch.net/bbs

 

T(t+1)=k×T(t) 
式中k为正的略小于1.00的常数,t为降温的次数。

模拟退火算法(带你了解原理 实践) 模拟退火算法(Simulated Annealing, SA)是一种受物理退火过程启发而开发的优化算法,用于寻找给定问题的近似最优解。该算法起源于固体退火过程,与局部搜索算法和全局搜索算法相结合,能够在多项式时间内给出一个近似最优解。本文将详细介绍模拟退火算法的原理、应用以及优化方法。 阅读详情

相关推荐

模拟退火算法详细讲解(含实例python代码)

模拟退火算法详细讲解(含实例python代码)(一)模拟退火算法简介三级目录(二)模拟退火算法原理(1)基本思想(2)算法步骤(3)参数控制(三)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之后感觉还是不太清楚,最后问了老师之后才搞明白。想把自己的理解写下来,帮助大家更好的理解。本篇文章是在另一篇博客的基础上加了一下自己的理解,然后又把我们在实验中的实例写下来,还有参考代码。希望大家看了之后能够加深对模拟退火算法的理解。 另一篇博客链接: 深度学习 — 模拟退火算法详解. (一)模拟退火算法简介

weixin_48241292的博客 17万+

算法——退火算法

退火算法(Simulated Annealing)是一种全局优化算法,用于在搜索空间中找到最优或近似最优解。它通过模拟固体退火的过程来搜索解空间,并在搜索过程中允许一定程度的不稳定性和随机性。初始化一个初始解,并确定初始温度和退火率。在每个温度下,通过扰动当前解来生成一个新解,或者选择随机移动到相邻解。根据目标函数的变化和温度计算接受概率,决定是否接受新解。不断降低温度,使得接受新解的概率逐渐减小,从而逐步收敛到最优解或近似最优解。

百锦再的博客 2万+

超简单易懂的模拟退火算法原理及其matlab代码实现

在介绍模拟退火算法之前,我们先认识一下爬山算法。 在爬山法寻找最优值的过程中,先随机生成一个点,计算其适应度值f(x),然后再其左领域和右领域中依照步长各选取一个点计算其适应度值f(xleft),f(xright),比较其三者,将适应度最大值点作为下一次迭代的初始点,直至寻找到最大值点。 爬山算法是一种典型的贪婪算法是一种狭隘的没有顾及全局的算法,如图所示在使用爬山算法寻找最大值时容易陷入局部最优。 在爬山法寻找最优值的过程中,先随机生成一个点,计算其适应度值f(x),然后再其左领域和右领域中依照步长各选取

qq_37238053的博客 4万+

退火算法

著名的模拟退火算法,它是一种基于蒙特卡洛思想设计的近似求解最优化问题的方法 一点历史——如果你不感兴趣,可以跳过 美国物理学家 N.Metropolis 和同仁在1953年发表研究复杂系统、计算其中能量分布的文章,他们使用蒙特卡罗模拟法计算多分子系统中分子的能量分布。这相当于是本文所探讨之问题的开始,事实上,模拟退火中常常被提到的一个名词就是Metropolis准则,后面我们还会介绍。 美国IBM公司物理学家 S.Kirkpatrick、C. D. Gelatt 和 M. P. Vecch...

weixin_38412701的博客 9178

模拟退火算法介绍和实例实现

一、模拟退火算法简介 模拟退火算法(SA)来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原子越不稳定。而徐徐冷却时粒子渐趋有序,能量减少,原子越稳定。在冷却(降温)过程中,固体在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是通过赋予

taylorswift的博客 1万+

模拟退火算法的改进

模拟退火算法的物理模型 在物理退火过程中,当固体的温度很高时,内能较大,固体内部的粒子处于无序运动状态,当温度慢慢降低时,固体的内能减小,粒子的运动趋于有序,如果温度降低得足够慢,在每个温度下粒子都会保持一个平衡状态,最终,当固体处于常温时,内能达到最小,此时粒子最为稳定。 模拟退火算法从初始温度出发(初始温度为较高温度),伴随着温度下降,目标函数的解趋于稳定(能量最低点),但是,这个稳定的解...

SONGcc729的博客 1万+

优化算法——模拟退火算法

模拟退火算法原理 模拟退火算法 模拟退火算法过程 模拟退火算法流程 模拟退火算法的Java实现 Java代码 最后的结果模拟退火算法原理爬山法是一种贪婪的方法,对于一个优化问题,其大致图像(图像地址)如下图所示: 其目标是要找到函数的最大值,若初始化时,初始点的位置在CC处,则会寻找到附近的局部最大值AA点处,由于AA点出是一个局部最大值点,故对于爬山法来讲,该算法无法跳出局部最大值点。若初始

null的专栏 11万+

模拟退火算法的优化

优化模拟退火算法 作为现代算法的一种,模拟退火算法是一种用降低搜索的覆盖面积来提高运算速度的算法,适用于解决各种优化类问题。它利用了物理学中一个常见的原理:当物体具有一定的温度时,假设它内部含有的能量为E(I),那么物体从I状态进入J状态符合以下规则: 若E(i)>E(j),则该状态改变被接受。 若E(i)<E(j),则该状态有e^((E(i)-E(j))/KT)的概率被接受。 在进行了充分的转换后材料将达到热平衡。这时候材料处于状态i的概率为 通过对概率的化简可以推导出所有状态在高温下具有相同

qq_47482548的博客 4713

模拟退火算法(Python)

模拟退火算法学习笔记

1 1万+

C#模拟退火算法

在生活中,我们都见过铁匠打铁。铁匠把烧得通红的铁块不断捶打,然后慢慢冷却,这样打造出来的金属制品才更坚固耐用。模拟退火算法就从这个退火过程中获得灵感,在计算机的数字世界里,开启一场寻找最优解的神奇 “退火之旅”。

xcwzj123的专栏 1674

多目标模拟退火算法

模拟退火算法SA 模拟退火是一种通用概率算法,常用来在一定时间内寻找在一个很大搜寻空间中的近似最优解。 算法得益于材料统计力学的研究成果。统计力学表明材料中粒子的不同结构对应与粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程称为退火),粒子就可以在每个温度中达到热平衡。当系统完全被冷却,最终形成处于低能状态的晶体。 设材料在状态i的能量为E(i),那么材料在温度T时从状态i进入状态j遵循如下规律,其中K是玻尔兹曼常

qq_42364307的博客 8784

模拟退火算法(SA)

算法背景 模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis[1]等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在求解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。...

qq_44865735的博客 3万+

Python 模拟退火算法

对于问题 1(Schwefel函数),通过对当前解的一个自变量施加正态分布的随机扰动产生新解。模拟退火算法基于优化问题求解过程与金属退火过程的相似性,以优化目标为能量函数,以解空间为状态空间,以随机扰动模拟粒子的热运动来求解优化问题。模拟退火算法借鉴了统计物理学的思想,是一种简单、通用的启发式优化算法,并在理论上具有概率性全局优化性能,因而在科研和工程中得到了广泛的应用。模拟退火算法结构简单,由温度更新函数、状态产生函数、状态接受函数和内循环、外循环终止准则构成。外循环是由冷却进度表控制的温度循环;

神仙别闹的自留地 2992

模拟退火算法详解

一个由金属退火启发的算法!本文主要内容:金属退火的原理模拟退火算法机制模拟退火的流程模拟退火的应用算法小结1.金属退火的原理金属退火是将金属加热到一定温度,保持足够时间,然后以适宜速度冷...

春有百花秋有月,夏有凉风冬有雪! 7144

数学建模:模拟退火算法

下面来介绍一下模拟退火算法的MATLAB实现原理及其方法: 模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种...

跑得动就不要歇着 3386

模拟退火算法(matlab实现)

模拟退火算法常用来求解最小值优化问题,如旅行商TSP问题等。 算法步骤: 1.由一个产生函数从当前解产生一个位于解空间的新解。解空间可以表示为所有固定起点和终点的循环排列集合。 2.计算与新解所对应的目标函数差。目标函数为所有点的路径长度。 3.判断新解是否能接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则。 4.当新解被确定接受时,用新解代替当前解。 注:模拟退火算法与初始值无关。模拟退火算法具有渐进收敛性。模拟退火算法具有并行性。 代码: clc,clear sj=[53.71

weixin_43915303的博客 5438
上一篇: Apache Solr 剖析
下一篇: 智能算法的通俗解释(转载)
Java2King
博客等级 码龄18年 221粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值