文档库 最新最全的文档下载
当前位置:文档库 › 模拟退火算法

模拟退火算法

模拟退火算法
模拟退火算法

模拟退火算法

摘要:模拟退火算法是一种新的随机搜索方法,它来源于固体退火原理,基于MetropoliS 接受准则,与以往的近似算法相比,具有以一定的概率接受恶化解,引进算法控制参数,隐含并行性等特点;模拟退火算法应用范围很广,其应用需要满足三方面的要求,具有描述简单、使用灵活、运行效率高和较少受初始条件约束等优点,然而收敛速度慢,执行时间长,特别适合并行计算。 关键词:模拟退火算法来源;基本思想;特点;一般要求;优缺点

1.引子

在科学与工程计算中,经常发生的一个问题是在Rn 中或者是在一个有界区域上求某个非线性函数f(x)的极小点。在f(x)可导时,一个最基本的算法就是最速下降法。这一方法从某一选定的初值开始,利用如下公式进行迭代,即

)(1n n n n x f x x ?-=+η

此处f ?表示函数梯度,n η是一个与迭代步数有关的参数,它的适当选取,

保证每步迭代均使函数值下降。除此之外,还存在多种寻求函数极小的算法。然而以速降法为代表的传统算法具有共同的缺点,它们都不保证求得全局极小,只能保证收敛到一个由初值0x 决定的局部极小点。而模拟退火算法的出现很好地解

决了这个问题。

2.SA 算法的起源 模拟退火算法来源于固体退火原理,其核心思想与热力学的原理极为类似,尤其相似于液体流动和结晶以及金属冷却和退火的方式。高温下,液体的大量分子彼此之间进行着相对自由移动。如果该液体慢慢地冷却,热能可动性就会消失。大量原子常常能够自行排列成行,形成一个纯净的晶体,该晶体在各个方向上都被完全有序地排列在几百万倍于单个原子的距离之内。因此,这一过程的本质在于缓慢地冷却,以争取足够的时间,让大量原子在丧失可动性之前进行重新分布,这是确保到低能量状态所必需的条件。简单而言,物理退火过程由以下三部分组成:1)加温过程。其目的是增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔解为液体,从而消除系统原先可能存在的非均匀态,使随后进行的冷却过程以某一平衡态为起点。熔解过程与系统的熵增过程相联系,系统能量也随温度的升高而增大。2)等温过程。物理学的知识告诉我们,对于与周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态。3)冷却过程。其目的是使粒子的热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。

模拟退火算法与物理退火过程的相似关系

模拟退火

物理退火 解

粒子状态 最优解

能量最低态 设定初温

溶解过程 Metropolis 采样过程

等温过程 控制参数的下降

冷却 目标函数 能量

3.SA 算法的基本思想

3.1 Metropolis 准则

固体在恒定温度下达到热平衡的过程可以用Morte Carlo 算法方法加以模拟,虽然该方法简单,但必须大量采样才能得到比较精确的结果,因而计算量很大。鉴于物理系统倾向于能量较低的状态,而热运动又防碍它准确落到最低态。采样时着重选取那些有重要贡献的状态则可较快达到较好的结果。因此,

MetropoliS 等在1953年提出了重要的采样法,即以概率接受新状念。其具体描述如下。先给定以粒子相对位置表征的初始状态0i 作为固体的当前状态,该状态

的能量为0i E ,然后用摄动装置使随机选取的某个粒子的位移随机地产生一微小

变化,得到一个新的状态j ,新状态的能量是j E ,如果0i j E E ,则接受新状态j 为当前状态;否则,考虑到热运动的影响,该新状态是否“接受”要依据粒子处于该状态的几率来判断。如果新状态j 可以接受,那么就以j 取代i 成为当前状态,重复以上新状态的产生过程。在大量迁移(固体状态的变换称为迁移)后,系统趋于能量较低的平衡状态。通过对上述物理现象的模拟,可以得到函数优化的MetropoliS 接受准则。

3.2 SA 算法的思想

由初始解i 和控制参数初值t 开始,对当前解重复

产生新解

→计算目标函数差

→接受或舍弃 的迭代,

并逐步衰减t 值,

算法终止时的当前解即为所得近似最优解,

这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。

3.3 SA 算法的特点

SA 算法与其它搜索方法相比,具有如下的特点:

1)以一定的概率接受恶化解;

模拟退火算法(SA)在搜索策略上与传统的随机搜索方法不同,它不仅引入了适当的随机因素,而且还引入了物理系统退火过程的自然机理。这种自然机理的引入使模拟退火算法在迭代过程中不仅接受佳目标函数变“好”的试探点,而且还能以一定的概率接受使目标函数值变“差”的试探点,迭代中出现的状态是随机产生的,并不强求后一状态一定优于前一状态,接受概率随着温度的下降而逐渐增大。传统的方法很容易限于局部最优解而停滞不前,很多传统的优化算法往往是确定性的,从一个搜索点到另一个搜索点的转移有确定的转移方法和转移关系,这种确定性往往可能使得搜索永远达不到最优点,因而限制了算法的应用范围。模拟退火算法(SA)以一种概率的方式来进行搜索,增加了搜索过程的灵活性。

2)引进算法控制参数;

引进类似于退火温度的算法控制参数,它将优化过程分成各个阶段,并决定各个阶段下随机状态的取舍标准,接受函数由Metropolis算法给出一个简单的数学模型。模拟退火算法的两个重要步骤是:一是在每个控制参数下,出前迭代点出发,产生邻近的随机状态,由控制参数确定的接受准则决定此新状念的取舍,并由此形成一定长度的随机Markov链;二是缓慢降低控制参数,提高接收准则,直至控制参数趋于零,状态链稳定于优化问题的最优状态,提高模拟退火算法全局最优解的可靠性。

3)使用对象函数值进行搜索;

传统搜索算法不仅需要利用目标函数值,而且往往需要目标函数的导数值等其它一些辅助信息才能确定搜索方向,当这些信息不存在时,算法就失效了。而模拟退火算法仅使用由目标函数变换来的适应度函数值,就可确定进一步的搜索方向和搜索范围,无需其它的辅助信息。需要着重指出的是:模拟退火算法的适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定,对适应度函数唯一的要求是对于输入可计算出加以比较的正的输出。这个特性对很多无法或很难求导数的函数,或导数不存在的函数的优化问题,以及组合优化问题等,应用模拟退火算法就比较方便。

4)隐含并行性;

并行算法是60年代发展起来的,其发展速度相当快。有些专家甚至认为目前提高计算机系统性能的唯一方法是“选择大量的并行”。从目前情况看,并行算法的设计主要采用两种方法:一是对现有的串行算法加工改造,使之成为好的并行算法;二是结合所用并行计算机的结构特点,直接设计新的并行算法。将模拟退火算法改造为并行算法还是比较容易的。目前常见的有以下几种并行策略:操作并行策略,试演并行策略,区域分裂策略和混乱松弛策略等。这几种并行算法在不同程度上对解的质量,收敛速度上较模拟退火算法优,由此可预见,模拟

退火算法隐含并行性,它是优于其它求解过程的关键所在。另外模拟退火算法的隐含并行性还有助于处理非线性问题。

5)搜索复杂区域。

模拟退火算法最善于搜索复杂地区,从中找出期望值高的区域,在求解简单问题上效率并不高。

4.SA算法的基本步骤

1) 随机产生一个初始解x0,令x best=x0并计算目标函数值E(x0);

2) 设置初始温度T(0)=T0,迭代次数i = 1;

3) Do while T(i) > T min

1) for j = 1~k

2) 对当前最优解x best按照某一邻域函数,产生一新的解x new。计算

新的目标函数值E(x new) ,并计算目标函数值的增量ΔE = E(x new)

- E(x best) 。

3) 如果ΔE <0,则x best = x new;

4) 如果ΔE >0,则p = exp(- ΔE /T(i));

1) 如果c = random[0,1] < p,x best = x new; 否则x best = x best。

5) End for

4) i = i +1;

5) End Do

6) 输出当前最优点,计算结束。

5.SA算法的应用范围与一般要求

SA算法是近年来备受重视的一类软计算方法,能解决传统的非线性规划方法难于解决的某些问题,在VLSI、生成调度、控制工程、机器学习、神经网络、图像处理、函数优化等许多领域得到广泛的研究。

SA算法的应用需满足如下三个方面的要求:

1)对问题的简明形式的描述即数学模型,由解空间、目标函数和初始解三部分构成;

a.解空间为问题的所有可能(可行或不可行)解的集合,它限定了初始解选取和新解产生时的范围,对无约束优化问题,解空间就是所有可行解的集合,而在许多组合优化问题中,解除了满足目标函数最优外,还必须满足一组约束。因此,在解集中可能包含一些不可行解。b.目标函数是对问题的优化目标的数学描述,通常表述为若干优化目标的一个和式,目标函数的选取必须正确体现问题的整体优化要求。一般来说,目标函数不一定就是问题的优化目标函数值,但对

应关系很明显。此外,目标函数应当易于计算.这将有利于在优化过程中简化目标函数差的计算,便于提高算法效率。c.初始解是算法开始迭代的起点。初始解的选取应使得算法导出较好的最终解,但大量试验结果表明,模拟退火算法是一种“健壮”的算法,即算法的最终解对于仞始解的依赖性不大。

2)新解的产生和接受机制;

a.出一个产生装置从当前解出发在解空间中产生一个新解,便于下面的计算和接受,通常选择由当前解经过简单的变换即可产生新解的方法,如对构成解的全部或部分元素进行置换、互换或反演等,新解的产生方法决定了当前解的邻域结构。b.计算与新解伴随的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。c.判断新解是否被接受。判断的依据是Metropolis准则。此外,在有约束的组合优化问题中,该接受准则还应加上对新解的可行性判定。d.新解被确定接受时,用新解代替当前解,同时修正目标函数值。此时,当前解实现了一次迭代。可在此基础上丌始下一轮试验。当新解被判定为舍弃时,则在原当前解基础上继续下一轮试验。

3)冷却进度表。

所谓的冷却进度表是一组控制算法进程的参数用以逼近模拟退火算法的渐进收敛性态,使算法在有限时限执行过程后返回一个近似最优解。冷却进度表包括控制参数的初值、及其衰减函数、对应的Markov链的长度和停止准则。它是影响模拟退火算法试验性能的重要因素,其合理选取是算法应用的关键。

6.SA算法的优缺点

与同类方法相比,SA算法具有以下优缺点:

优点:高效,灵活,通用,初值鲁棒性强,适用于并行处理,可用于求解复杂的非线性优化问题。

缺点:由于要求较高的初始温度、较慢的降温速率、较低的终止温度,以及各温度下足够多次的抽样,因此其收敛速度慢,执行时间长,算法性能与初始值有关及参数敏感等缺点。另外如果降温过程过快,很可能得不到全局最优解。参考文献:

冯玉蓉.模拟退火算法的研究及其应用[D].2005,9~27

项宝卫.结构优化中的模拟退火算法研究和应用[D].2004,12~20

基于模拟退火算法的TSP算法

专业综合设计报告 课程名称:电子专业综合设计 设计名称:基于模拟退火算法的TSP算法姓名: 学号: 班级:电子0903 指导教师:朱正为 起止日期:2012.11.1-2012.12.30

专业综合设计任务书 学生班级:电子0903 学生姓名:学号: 20095830 设计名称:基于模拟退火算法的TSP算法 起止日期: 2012.11.1-2012.12.30 指导教师 专业综合设计学生日志

专业综合设计考勤表 专业综合设计评语表

一设计目的和意义 (6) 二设计原理 (6) 2.1 模拟退火算法的基本原理 (5) 2.2 TSP问题介绍................................................................................................................... .. (6) 三详细设计步骤................................................................................................................... . (9) 3.1.算法流程 (8) 3.2模拟退火算法实现步骤........................................................ 错误!未定义书签。四设计结果及分析.. (9) 4.1 MATLAB程序实现及主函数 (9) 4.1.1 计算距离矩阵 (9) 4.1.2 初始解................................................................................................................... . (10) 4.1.3 生成新解................................................................................................................... (10) 4.1.4 Metropolis 准则函数................................................................................................ (10) 4.1.5 画路线轨迹图 (11) 4.1.6 输出路径函数 (12) 4.1.7 可行解路线长度函数 (12) 4.1.8 模拟退火算法的主函数 (13)

模拟退火算法原理及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。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。 可在此基础上开始下一轮试验。而当新解被判定为舍弃时,

爬山算法、模拟退火算法、遗传算法

一.爬山算法( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算 法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到 达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜 索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点 这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不 能得到更优的解。 二.模拟退火(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)来接受这样的移动。 关于爬山算法与模拟退火,有一个有趣的比喻:(有点意思)

模拟退火算法

精品文档 【算法】数学建模常用算法简介——模拟退火算法 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达 到平衡态,最后在常温时达到基态,内能减为最小。根据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。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新 解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试 。

模拟退火算法介绍

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

若J(Y(i+1))>=J(Y(i))(即移动后得到更优解),则总是接受该移动 若J(Y(i+1))

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

模拟退火算法 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据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。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则

智能计算-模拟退火算法(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

模拟退火算法基本原理介绍(可编辑修改word版)

模拟退火算法 一、模拟退火算法概念 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据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 收敛于全局最优解的全

模拟退火算法简介与实例

模拟退火算法简介与实例 2010-07-10 12:30:55| 分类:algorithms | 标签:|字号大中小订阅 摘要 模拟退火算法是S. Kirkpatrick, C. D. Gelatt和M. P. Vecchi在1983年所发明。是一种典型的概率模拟算法(Monte Carlo算法),其基本想想与冶金上的退火有相似之处,在一个相当大的空间内搜索最优解,而每次只搜索与自己临近的状态。此算法被证明以接近概率1接近最优解。其中有较好的物理思想,是模拟类算法中的典范。模拟退火算法由于要计算相临状态,这与Ising模拟的计算模拟有相似之处,因此本文也将对Ising做一个介绍。本文介绍算法的基本思想并做一个例子求解TSP问题(旅行商问题),重在介绍算法思想,具体算法的优化与改进不是本文涵盖范围。 1. Ising模型 Ising模型描述的是物体的铁磁性质,在铁和镍这类金属中,当温度低于居里温度时,原子的自旋自发地倾向某个方向,而产生宏观磁矩。温度高于居里温度时,自旋的取向非常紊乱,因而不产生净磁矩。当温度从大于或小于两边趋于居里温度时,金属的比热容趋于无限大。这是物质在铁磁性状态和非铁磁性状态之间的相变。伊辛模型就是模拟铁磁性物质的结构,解释这类相变现象的一种粗略的模型。它的优点在于,用统计物理方法,对二维情形求得了数学上严格的解。这就使得铁磁性物质相变的大致特征,获得了理论上的描述。 1.1模型描述 这个模型所研究的系统是由N个阵点排列成n维周期性点阵,这里n=2。点阵的几何构形可以是立方的或六角形的,每个阵点上都赋予一个取值+1或-1的自旋变量i,如果i=+1,即第N个阵点的自旋向上;如i=-1,即第个N阵点的自旋向下并且认为只是最近邻的自旋之间有相互作用。点阵的位形用一组自旋变量(这里i=2)来确定,如下图所示 图1,模型图示图2,最近临磁子 1.2模型计算 1)两个相临磁子趋向平行能量最低,即两个磁子的自旋方向非平行与平行。能量相差ΔE。 2)每个磁子的磁矩为m,总的磁矩为每个磁子的磁矩和。

模拟退火算法

一. 爬山算法 ( 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)来接受这样的移动。 关于爬山算法与模拟退火,有一个有趣的比喻: 爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。 模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。

遗传模拟退火算法及其应用

本科毕业设计(论文)外文参考文献译文及原文 学院轻工化工学院 专业制药工程 (天然药物方向)年级班别20 09级(2)班 学号3109002300 学生姓名黄学润 指导教师魏关锋 2013年6月

遗传/模拟退火算法及其应用 Guangming Lv, Xiaomeng Sun, Jian Wang College of Mechanical and Electronic Engineering, Harbin Institute of Technology, Harbin Heilongjiang, China lgmhit@https://www.wendangku.net/doc/2814284543.html, 摘要:本文将模拟退火算法和遗传算法相结合,提出了一种新的算法。遗传算法(GA)中嵌入模拟退火算法(SA),结合成一个新的全局优化算法。SA的使用降低了GA的参数选择的困难。此外,新算法可以缩减组合的搜索区域,并避免了遗传算法中存在的“过早收敛”问题,提高了算法的收敛性。遗传操作的交叉算子在该算法中发挥着重要作用。通过计算机仿真,我们可以看到新的算法相对于传统的遗传算法和模拟退火算法更具优势。 关键词:模拟退火法;遗传算法;过早收敛;交叉算子 I.引言 遗传算法(GA)首先由密歇根大学教授J.Holland提出,源于对自然和人工系统的自适应行为的研究。GA是模拟生物在自然环境中的遗传和进化过程而形成的一种基于达尔文的进化论和孟德尔的遗传学说的自适应全局优化概率搜索算法。对于复杂的优化问题,没有必要使用GA的建模和复杂操作[1]。与传统的搜索算法相比,GA将优化问题的解空间转换成遗传空间。它从一个种群中产生问题的一个解,并根据“优胜劣汰”的原则,一代又一代的达到问题的最优解或最近解。 遗传算法的主要特点是:处理对象不是参数本身,而是参数集的编码操作;GA同时处理的几个群体中个体,即同时估计在搜索空间中的几个解;GA只利用问题的目标函数,不需要任何其他条件或辅助信息;GA不采取一定的角色,而采用概率的变化规律来指导搜索方法;GA可以在较大的解空间快速搜索。 GA通过选择复制的行为和遗传因素保持优化种群的进化使得他们最终收敛到最优解。选择复制给予个体更大的适应性和函数值更大的复制概率,并能加速

模拟退火算法研究概况样本

模拟退火算法文献综述 吕正祥交控1501 1模拟退火算法简述 1.1模拟退火算法的来源 模拟退火算法来源于固体退火原理, 将固体加温至充分高, 再让其徐徐冷却, 加温时, 固体内部粒子随温升变为无序状, 内能增大, 而徐徐冷却时粒子渐趋有序, 在每个温度都达到平衡态, 最后在常温时达到基态, 内能减为最小。 模拟退火算法(Simulated Annealing, SA)最早由Kirkpatrick 等应用于组合优化领域, 它是基于Monte-Carlo迭代求解策略的一种随机寻优算法, 其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发, 伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解, 即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是一种通用的优化算法, 理论上算法具有概率的全局优化性能,当前已在工程中得到了广泛应用, 诸如VLSI、生产调度、控制工程、机器学习、神经网络、信号处理等领域。 模拟退火算法是经过赋予搜索过程一种时变且最终趋于零的概率突跳性, 从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。 1.2模拟退火算法的模型

模拟退火算法能够分解为解空间、目标函数和初始解三部分。1.3模拟退火的基本思想 (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步。

模拟退火算法

模拟退火算法 摘要:模拟退火算法是一种新的随机搜索方法,它来源于固体退火原理,基于MetropoliS 接受准则,与以往的近似算法相比,具有以一定的概率接受恶化解,引进算法控制参数,隐含并行性等特点;模拟退火算法应用范围很广,其应用需要满足三方面的要求,具有描述简单、使用灵活、运行效率高和较少受初始条件约束等优点,然而收敛速度慢,执行时间长,特别适合并行计算。 关键词:模拟退火算法来源;基本思想;特点;一般要求;优缺点 1.引子 在科学与工程计算中,经常发生的一个问题是在Rn 中或者是在一个有界区域上求某个非线性函数f(x)的极小点。在f(x)可导时,一个最基本的算法就是最速下降法。这一方法从某一选定的初值开始,利用如下公式进行迭代,即 )(1n n n n x f x x ?-=+η 此处f ?表示函数梯度,n η是一个与迭代步数有关的参数,它的适当选取, 保证每步迭代均使函数值下降。除此之外,还存在多种寻求函数极小的算法。然而以速降法为代表的传统算法具有共同的缺点,它们都不保证求得全局极小,只能保证收敛到一个由初值0x 决定的局部极小点。而模拟退火算法的出现很好地解 决了这个问题。 2.SA 算法的起源 模拟退火算法来源于固体退火原理,其核心思想与热力学的原理极为类似,尤其相似于液体流动和结晶以及金属冷却和退火的方式。高温下,液体的大量分子彼此之间进行着相对自由移动。如果该液体慢慢地冷却,热能可动性就会消失。大量原子常常能够自行排列成行,形成一个纯净的晶体,该晶体在各个方向上都被完全有序地排列在几百万倍于单个原子的距离之内。因此,这一过程的本质在于缓慢地冷却,以争取足够的时间,让大量原子在丧失可动性之前进行重新分布,这是确保到低能量状态所必需的条件。简单而言,物理退火过程由以下三部分组成:1)加温过程。其目的是增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔解为液体,从而消除系统原先可能存在的非均匀态,使随后进行的冷却过程以某一平衡态为起点。熔解过程与系统的熵增过程相联系,系统能量也随温度的升高而增大。2)等温过程。物理学的知识告诉我们,对于与周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态。3)冷却过程。其目的是使粒子的热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。 模拟退火算法与物理退火过程的相似关系

模拟退火算法及其Matlab实现

模拟退火算法及其Matlab 实现 模拟退火算法(Simulated Annealing algorithm ,简称SA )是柯克帕垂克(S. Kirkpatrick )于1982年受热力学中的固体退火过程与组合优化问题求解之间的某种“相似性”所启发而提出的,用于求解大规模组合优化问题的一种具有全局搜索功能的随机性近似算法。与求解线性规划的单纯形法、Karmarkar 投影尺度法,求解非线性规划的最速下降法、Newton 法、共轭梯度法,求解整数规划的分支定界法、割平面法等经典的优化算法相比,模拟退火算法在很大程度上不受制于优化问题的具体形式和结构,具有很强的适应性和鲁棒性,因而也具有广泛的应用价值。 模拟退火算法源于对固体退火过程的模拟;采用Metropolis 接受准则;并用一组称为冷却进度表的参数来控制算法进程,使得算法在多项式时间里给出一个近似最优解。固体退火过程的物理现象和统计性质是模拟退火算法的物理背景;Metropolis 接受准则使算法能够跳离局部最优的“陷阱”,是模拟退火算法能够获得整体最优解的关键;而冷却进度表的合理选择是算法应用的关键。 1 物理退火过程 物理中的固体退火是先将固体加热至熔化,再徐徐冷却,使之凝固成规整晶体的热力学过程。在加热固体时,固体粒子的热运动不断增加,随着温度的升高,粒子与其平衡位置的偏离越来越大,当温度升至溶解温度后,固体的规则性被彻底破坏,固体溶解为液体,粒子排列从较有序的结晶态转变为无序的液态,这个过程称为溶解。溶解过程的目的是消除系统中原先可能存在的非均匀状态,使随后进行的冷却过程以某一平衡态为始点。溶解过程与系统的熵增过程相联系,系统能量也随温度的升高而增大。 冷却时,液体粒子的热运动渐渐减弱,随着温度的徐徐降低,粒子运动渐趋有序。当温度降至结晶温度后,粒子运动变为围绕晶体格点的微小振动,液体凝固成固体的晶态,这个过程称为退火。退火过程之所以必须“徐徐”进行,是为了使系统在每一温度下都达到平衡态,最终达到固体的基态(图1-1)。退火过程中系统的熵值(衡量不能利用的热能数量)不断减少,系统能量也随温度降低趋于最小值。冷却时,若急剧降低温度,则将引起淬火效应,即固体只能冷凝为非均匀的亚稳态,系统能量也不会达到最小值。 退火过程中系统在每一温度下达到平衡态的过程,可以用封闭系统的等温过程来描述。根据玻尔兹曼(Boltzmann )有序性原理,退火过程遵循应用于热平衡封闭系统的热力学定律——自由能减少定律: “对于与周围环境交换热量而温度保持不变的封闭系统,系统状态的自发变化总是朝着自由能减少的方向进行,当自由能达到最小值时,系统达到平衡态”。 系统的自由能F E TS =-,其中E 是系统的内能,T 是系统温度,S 是系统的熵。设 i 和j 是恒温系统的两个状态,即i i i F E TS =-和j j j F E TS =-,而 ()()j i j i j i F F F E E T S S E T S ?=-=---=?-? 若系统状态由i 自发变化到j ,则应有0F ?<。显然,能量减少(0E ?<)与熵增加

模拟退火算法报告

模 拟退火算法 一 定义 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)的降温的概率就越大;温度越低,则

模拟退火算法原理及改进

作者简介:李香平(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

模拟退火算法

【算法】数学建模常用算法简介——模拟退火算法 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据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。 第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。

相关文档