大白话解析模拟退火算法,模拟退火算法大学生社区赛氪竞赛网

介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。

爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解。

图1

二.模拟退火(SA,SimulatedAnnealing)思想

爬山法是完完全全的贪心法,每次都鼠目寸光的选择一个当前最优解,因此只能搜索到局部的最优值。模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以图1为例,模拟退火算法在搜索到局部最优解A后,会以一定的概率接受到E的移动。也许经过几次这样的不是局部最优的移动后会到达D点,于是就跳出了局部最大值A。

模拟退火算法描述:

若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))Y(i+1)=Y(i);//接受从Y(i)到Y(i+1)的移动}T=r*T;//降温退火,0

旅行商问题(TSP,TravelingSalesmanProblem):有N个城市,要求从其中某个问题出发,唯一遍历所有城市,再回到出发的城市,求最短的路线。

1.产生一条新的遍历路径P(i+1),计算路径P(i+1)的长度L(P(i+1));

2.若L(P(i+1))

3.重复步骤1,2直到满足退出条件。

产生新的遍历路径的方法有很多,下面列举其中3种:

1.随机选择2个节点,交换路径中的这2个节点的顺序。

2.随机选择2个节点,将路径中这2个节点间的节点顺序逆转。

3.随机选择3个节点m,n,k,然后将节点m与n间的节点移位到节点k后面。

五.算法评价

模拟退火算法是一种随机算法,并不一定能找到全局的最优解,可以比较快的找到问题的近似最优解。如果参数设置得当,模拟退火算法搜索效率比穷举法要高。

THE END
1.python程序示例贪心法mob64ca12d4650e的技术博客贪心算法是一种用于解决优化问题的简单而有效的方法,它通过选择局部最优解来逐步构建全局最优解。这种算法通常适用于求解最小值或最大值的问题,如最小生成树、背包问题等。下面我们将通过一个简单的例子来阐述贪心算法的实现过程,同时提供代码示例和详细的说明。 https://blog.51cto.com/u_16213316/12827303
2.贪心算法在旅行商问题中的应用与优化贪心算法在IT领域的应用 贪心算法是一种在求解问题时,总是选择当前看来最优的解决方案的策略。这种算法广泛应用于计算机科学和IT领域,尤其是在解决优化问题和搜索问题等方面。本文将介绍贪心算法在IT领域的一些应用场景,以及其在实际编程中的实现。 应用场景 https://www.imooc.com/article/338993
3.Unity+c#贪心算法求解旅行商问题旅行资源unity 贪心算法 旅行商问题 需积分: 1 18 浏览量 2024-06-18 上传 评论 收藏 35.06MB ZIP 举报 立即下载 开通VIP(低至0.43/天) 买1年送1年 Unity+c#贪心算法求解旅行商问题,内有demo演示资源推荐 资源评论 c# 动态规划求解旅行商问题 浏览:21 5星 · 资源好评率100% 1.NET下可以直接运行 2.关键https://download.csdn.net/download/qq_42437783/89449418
4.运筹学Python实现图论与最短距离python2 案例1——贪心算法实现 2.1 旅行商问题(TSP) 旅行商问题(TravelingSalesmanProblem,TSP)一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要遍历所有城市一次且只能一次,回到出发地。应如何选择行进路线,以使总的行程最短。 旅行商问题(TSP)即给定一组城市以及每对城市之间的距离,需要找到一条最https://www.jb51.net/article/234785.htm
5.《图解算法》:贪心算法没办法判断问题是不是NP完全问题,但还是有一些蛛丝马迹可循的 不能将问题分成小问题,必须考虑各种可能的情况。这可能是NP完全问题。 如果问题涉及集合(如集合覆盖问题)且难以解决,它可能就是NP完全问题。 如果问题涉及序列(如旅行商问题中的城市序列)且难以解决,它可能就是NP完全问题。 https://www.pianshen.com/article/3361833437/
6.旅行商问题(TSP)学术百科提供全面的“旅行商问题(TSP)”相关文献(论文)下载,论文摘要免费查询,旅行商问题(TSP)论文全文下载提供PDF格式文件。旅行商问题(TSP)中文、英文词汇释义(解释),“旅行商问题(TSP)”各类研究资料、调研报告等。https://wiki.cnki.com.cn/HotWord/12369.htm
7.TSPTSP-旅行商问题,是一个经典问题,如下图所示,描述为“有n个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少”。围绕TSP,回答下列问题。关于TSP的贪心算法的求解思想,下列说法http://www.ppkao.com/wangke/daan/ada5d14898a14b399148dd3228e94dd3
8.宇宙无敌PATA不完全考纲3. 理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等; 4. 具备较强的问题抽象和建模能力,能实现对复杂实际问题的模拟求解。 总而言之描述的相当宽泛,你行就你行,你不行就不行 下面https://www.jianshu.com/p/3814d99bed25
9.javascript数据结构与算法:二分查找镜心的小树屋O(n),也叫线性时间,这样的算法包括简单查找。 O(n * log n),这样的算法包括快速排序——一种速度较快的排序算法。 ,这样的算法包括选择排序——一种速度较慢的排序算法 O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法 https://segmentfault.com/a/1190000018342920/
10.算法分析与设计期末答案2023秋1.给定二分图G = 中无孤立点,|V|=n,其最大流算法求得最大流f, 则 G的()=f.A:最大匹配数 B:最小顶点覆盖 C:最大独立数 D:最小边覆盖 答案:最大匹配数###最小顶点覆盖 2.贪心算法的基本要素是A:最优子结构性质 B:独立子问题的性质 C:贪心选择的性质 D:无后效性性质 答案:最优子结构 3.https://www.wkebb.com/c/776b56604264529595bfd59c2f472142.html
11.腕关节活动度测量,一般尺偏的角度大于桡偏的角度。在计算机科学中,哪种算法是解决旅行商问题(TSP)的经典算法之一? A. 贪心算法 B. 动态规划 C. 回溯法 D. 遗传算法 查看完整题目与答案 哪个学派强调“无为而治”,主张顺应自然、清静无为? A. 儒家 B. 道家 C. 墨家 D. 法家 查看完整题目与答案 在经济学中,哪个理论提出了“看不见的手”https://www.shuashuati.com/ti/c6bc7ed0dec74447a876d6e4f4c18f16.html
12.算法所有常见知识点总结要注意二分搜索的输入一定是一个升序的数组,实质就是一个二叉搜索树(所以也把二分搜索的执行描述为决策树),对于一个大小为n的排序数组,算法Binarysearch执行比较的最大次数为$()int(log_n)+1$(如果输入数组不是递增排好序的,则可在$nlog_n$内对其进行排序后再进行二分搜索)。 http://www.360doc.com/content/19/1016/18/32762466_867273134.shtml
13.迷茫的旅行商图书简介 假设一名旅行商打算拜访一张城市列表中的所有城市,每座城市只去一次,最后回到出发地。要怎么走才能让路线最短呢?这就是旅行商问题,乍一听很简单,在应展开短评 打开App写短评 巩庆奎2015-03-28 21:40:24 其实我努力试图在算法中读出人生哲理:贪心算法的局部最优解并不能代表全局最优解,就像我们生活https://m.douban.com/book/subject/25713498/
14.贪心算法详解二、贪心算法的应用场景 贪心算法经常被用来解决优化问题,例如: 1、集合覆盖问题:有一些广播台,每个广播台可以覆盖一些地区,求出覆盖所有地区需要选择哪些广播台。 2、背包问题:有一个固定大小的背包,要尽可能装入最有价值的物品,求最大价值量。 3、旅行商问题:有一个旅行商需要访问多个城市,每个城市之间的距离已知https://developer.aliyun.com/article/1356247
15.内含贪心算法详解,老师用ppt码农集市专业分享IT编程学习资源内含贪心算法详解,老师用pptTr**xx 上传1.13 MB 文件格式 ppt 贪心算法 贪心算法详解!若要用贪心算法求解某问题的整体最优解,必须首先证明贪心思想在该问题的应用结果就是最优解!!点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 yhyyxt 2018-05-02 19:38:56 评论 https://www.coder100.com/index/index/content/id/793630