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

更新时间:2023-11-17 11:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

模拟退火算法

摘要:阐述了模拟退火算法的基本原理及实现过程,运用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

目 录

一、简介 ......................................................................................... 1 二、原理 ......................................................................................... 2 三、实现过程 ................................................................................. 3 四、改进的地方.............................................................................. 4 五、实验结果 ................................................................................. 4 六、结论 ......................................................................................... 6

3

一、简介

许多实际优化问题的目标函数都是非凸的,存在许多局部最优解,但是,有效地求出一般非凸目标函数的全局最优解至今仍是一个难题。特别是随着优化问题规模的增大,局部最优解的数目将会迅速增加,这无疑使寻找大规模复杂系统优化问题的全局最优解变得更加困难。求解全局优化问题的方法可分为两类:一类是确定性方法,另一类是随机性方法。前者基于确定性的搜索策略,在目标函数满足特定的限制条件下可以对求得全局最优解提供确定性的保证,这类方法一般适用于求解满足特定要求的一些特殊问题。后者在搜索策略中引入了适当的随机因素,对目标函数一般不需要特殊的限制条件,具有比较广泛的适用性,由于采用随机搜索策略,这类方法只能在概率的意义上为求得全局最优解提供保证。

模拟退火算法是20世纪80年代初期发展起来的一种求解大规模组合优化问题的随机性方法。它以优化问题的求解与物理系统退火过程的相似性为基础,利用Metropolis算法并适当地控制温度的下降过程实现模拟退火,从而达到求解全局优化问题的目的。

模拟退火(简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。

“模拟退火”算法是源于对热力学中退火过程的模拟,在某一给定初温下,通过缓慢下降温度参数,使算法能够在多项式时间内给出一个近似最优解。退火与冶金学上的‘退火’相似,而与冶金学的淬火有很大区别,前者是温度缓慢下降,后者是温度迅速下降。

1

旅行商问题是指旅行商必须轮流到N个城市去旅游,每个城市仅去一次,最后返回原出发城市,任务是为旅行商找到一条满足上述条件的最短路径。

这里使用模拟退火解旅行商问题,因为这个问题本身是一个NP难问题,所以也就求不到最优解,不过应该可以求得一个比较好的解,然后再手工优化。

二、原理

“模拟退火”的原理也和金属退火的原理近似:我们将热力学的理论套用到统计学上,将搜寻空间内每一点想像成空气内的分子;分子的能量,就是它本身的动能;而搜寻空间内的每一点,也像空气分子一样带有“能量”,以表示该点对命题的合适程度。算法先以搜寻空间内一个任意点作起始:每一步先选择一个“邻居”,然后再计算从现有位置到达“邻居”的概率。

模拟退火算法可以分解为解空间、目标函数和初始解三部分。 算法步骤:

模拟退火算法新解的产生和接受可分为如下四个步骤: (1)由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。

2

(2)计算与新解所对应的目标函数差。因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数应用而言,这是计算目标函数差的最快方法。

(3)判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/kT)接受S′作为新的当前解S。

(4)当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。

模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l 收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。

三、实现过程

1、随机初始化城市坐标,计算初始路线总长度。

2、随机置换两个不同的城市的坐标,产生随机扰动,计算路线总长度。每次记录下总长度和上次进行比较,比上次小则更新,否则不更新。

3、比较新老距离的差值,如何新路径好于老路径,则接受新解,否则继续保持老路径,然后继续第二步,直到达到迭代温度。

3

四、改进的地方

1、多次改变迭代次数,找到最优解;

2、在每次计算总路线长度时,随时和上次总路线长度进行比较,如果小时则对路线进行置换,否则继续保持上次记录值。最后找到最优值。

五、实验结果

1、初始旅行路线图

求得的初始路径 >>1114.5127

2、最终求得的路线图

4

3、每次迭代求得的旅行距离:

求得的最短路径 >>321.2309

5

六、结论

利用MATLAB语言实现的模拟退火程序,能够找到系统的最优解,仿真结果证明了该方法的有效性,每次都与上次路径进行比较,并记录,进行替换,最后得到最佳路径。采用该方法既可使大家熟悉MATLAB语言,又可以加深对模拟退火算法的认识和理解。

部分代码截图

1、Main函数

2、计算路线总长度,每个城市只计算和下家城市之间的距离

6

3、随机置换两个不同的城市的坐标,产生随机扰动

4、连线各城市,画路线图

7

本文来源:https://www.bwwdw.com/article/ql2v.html

Top