基于模拟退火算法的TSP算法
1.1通俗解释matlab之模拟退火求TSP问题

1.初识模拟退火算法说起模拟退火算法,不管哪个地方讲反正都有那么一段历史来源,模拟退火据说就是根据物理学上物质分子在温度较高的时候运动剧烈,很容易从一个转台转到另一个状态,而在温度较低的时候运动缓慢,状态也就基本上固定而不宜发生转变。
明不明白这个具体的物理过程无所谓,理解后面算法流程后就明白了什么是退火降温。
说白了,如果和算法结合起来的话,就是高温的时候问题的解很容易发生改变,从一个解很容易变化到另外的一个解,随着温度的降低,解的这种改变性越来越低。
而在每一次降温的过程中,算法都会记录上在本次温度下的所有改变的解中的优秀解,并传递到下一次的降温过程中。
这样,你想一想,开始解的变化范围很大,并一直在寻找优解,慢慢的变化范围变小,就变成了锁定前一次寻找到的最优解。
其实基本上所有的算法都是这样的一个过程,先广度搜索,在集中寻找等等,不同的是不同的算法他们的搜索速度、搜索的准确率不同而已。
2.我要解决的问题既然是优化算法,那就用它来解决一个常见的问题---旅行商问题,也叫TSP问题。
问题是什么样子的呢,就是随机给你不同的地点,要你每个地点走一次的话,怎么走这个地点的顺序才能使得你走的总路程最短呢,像这类问题最好的验证实例就是邮递员了吧,他会想怎么邮递所有的包裹才能使得他要走的总路线最少吧。
好了下面我随便给出30个不同的点代表不同的位置吧,点的左边都在0~1之间,如下:cities1=[0.6606,0.9695,0.5906,0.2124,0.0398,0.1367,0.9536,0.6091,0.8767,0.8148,0.38 76,0.7041,0.0213,0.3429,0.7471,0.4606,0.7695,0.5006,0.3124,0.0098,0.3637,0.5336,0.2 091,0.4767,0.4148,0.5876,0.6041,0.3213,0.6429,0.7471;0.9500,0.6740,0.5029,0.8274,0.9697,0.5979,0.2184,0.7148,0.2395,0.2867,0.8200,0.329 6,0.1649,0.3025,0.8192,0.6500,0.7420,0.0229,0.7274,0.4697,0.0979,0.2684,0.7948,0.43 95,0.8867,0.3200,0.5296,0.3649,0.7025,0.9192];注意了,这就是30对(x,y)的值,在matlab下画出来就如图所示:plot(cities1(1,:),cities1(2,:),'*')现在问题就是怎么首尾相连这些点才能是他们点之间的距离最小。
模拟退火算法(SA)求解TSP问题(C语言实现)

模拟退⽕算法(SA)求解TSP问题(C语⾔实现) 这篇⽂章是之前写的智能算法(遗传算法(GA)、粒⼦群算法(PSO))的补充。
其实代码我⽼早之前就写完了,今天恰好重新翻到了,就拿出来给⼤家分享⼀下,也当是回顾与总结了。
⾸先介绍⼀下模拟退⽕算法(SA)。
模拟退⽕算法(simulated annealing,SA)算法最早是由Metropolis等⼈提出的。
其出发点是基于物理中固体物质的退⽕过程与⼀般组合优化问题之间的相似性。
模拟退⽕算法是⼀种通⽤的优化算法,其物理退⽕过程由以下三部分组成: (1)加温过程 (2)等温过程 (3)冷却过程 其中加温过程对应算法设定的初始温度,等温过程对应算法的Metropolis抽样过程,冷却过程对应控制参数的下降。
这⾥能量的变化就是⽬标函数,要得到的最优解就是能量最低状态。
Metropolis准则是SA算法收敛于全局最优解的关键所在,Metropolis准则以⼀定的概率接受恶化解,这样就使得算法可以跳离局部最优解的陷阱。
模拟退⽕算法为求解传统⽅法难以处理的TSP问题提供了⼀个有效的途径和通⽤的处理框架,并逐渐发展成为⼀种迭代⾃适应启发式概率搜索算法。
模拟退⽕算法可以⽤于求解不同的⾮线性问题,对于不可微甚⾄不连续函数的优化,能以较⼤概率求得全局最优解,该算法还具有较强的鲁棒性、全局收敛性、隐含并⾏性以及⼴泛的适应性,对⽬标函数以及约束函数没有任何要求。
SA 算法实现的步骤如下:(下⾯以最⼩化问题为例) (1)初始化:取温度T0⾜够⼤,令T = T0,取任意解S1,确定每个T时的迭代次数,即 Metropolis链长L。
(2)对当前温度T和k=1,2,3,...,L,重复步骤(3)~(6) (3)对当前解S1随机产⽣⼀个扰动得到⼀个新解 S2. (4)计算S2的增量df = f(S2) - f(S1),其中f(S1)为S1的代价函数。
(5)若df < 0,接受S2作为新的当前解,即S1 = S2;否则S2的接受概率为 exp(-df/T),即随机产⽣(0,1)上的均匀分布的随机数rand,若 exp(-df/T)>rand,则接受S2作为新的当前解,S1 = S2;否则保留当前解。
基于模拟退火算法的TSP问题研究报告附MATLAB程序

minL(T ) dtiti1
i 1
• 解的邻域:随机产生2个位置,让序列T上对应的 两个位置上的城市顺序对换。
max{ dij | j i, j 1, n} min{dij | j i, j 1, n}
i 1 i 1 n n
4.模拟退火算法求TSP问题
岗位职责三工作总结项目运维项目实施银青高速视频监控东毛隧道停车场项目全面实施ip设置贵州独平高速项目全面实施监控室机柜布线四心得体会在这段时间的学习过程中我对部门很多产品从零学起刚到公司的时候感觉压力很大经过这些时间的认真学习和实际操作调整心态现已完全能融入公司的各项岗位职责和管理制度中
TSP问题的模拟退火算法
3. 参数选取
•
t0
优。
tk+1=α*tk maxstep=maxstep+a
t0太大,计算时间增加;t0太小,会过早陷入局部最
4.模拟退火算法求TSP问题
• 解的表示:用一个访问序列T=(t1,t2,t3…,tn,t1)来表示 经过n个城市的顺序。 • 距离矩阵:D=(dij)是由城市i和城市j之间的距离所 组成的距离矩阵。 n • 数学模型:
如需程序,点击上传者,见“我的文档”。
1. 模拟退火简介
1.1 问题讨论
2. 模拟退火算法步骤 3. 参数选取 4. 模拟退火算法求解TSP问题
1模拟退火简介
• 物理解释:材料中的原子原来会停留在使内能 有局部最小值的位置,加热使能量变大,原子 会离开原来位置,而随机在其他位置中移动。 退火冷却时速度较慢,使得原子有较多可能可 以找到内能比原先更低的位置。 • 统计学解释:我们将热力学的理论套用到统计 学上,将搜寻空间内每一点想像成空气内的分 子;搜寻空间内的每一点,也像空气分子一样 带有“动能”,以表示该点对命题的合适程度。 算法先以搜寻空间内一个任意点作起始:每一 步先选择一个“邻居”,然后再计算从现有位 置到达“邻居”的概率。
用模拟退火算法求解TSP

用模拟退火算法求解TSP
TSP问题(旅行商问题)是一个NP难问题。
模拟退火算法是一种解决复杂问题的启发式优化算法,被广泛应用于求解TSP问题。
下面是使用模拟退火算法求解TSP1650的步骤:
1. 初始化:随机生成一个初始解集,即随机生成一个城市序列,并计算其路径长度。
2. 降温:将系统温度下降,即通过调节温度参数来控制搜索范围,随着时间的推移,温度逐渐下降。
3. 移动:通过移动城市序列来扰动当前解集,得到新的解集。
比如,随机选择两个城市交换其顺序,得到新的城市序列。
4. 计算路径长度:计算新的城市序列的路径长度。
5. 判断是否接受新的解集:按照一定概率接受新的解集,比如如果新解集的路径长度更短,则接受新解集,否则以一定概率接受新解集,以避免陷入局部最优解。
6. 重复以上步骤,直到温度降至最低,或者找到满足要求的解。
7. 输出最优解:得到满足要求的解后,输出路径长度和城市序列。
求解TSP1650很困难,需要大量的计算资源和时间,运行时间可能需要数小时或数天。
用模拟退火方法解决TSP问题

用模拟退火方法解决TSP 问题
一、 退火原理
退火是一种物理过程,金属物体在加热到一定温度后,他的分子状态在状态空间D 中自由运动。
随着温度的降低,这些分子停留在低能量状态的概率逐渐增大,当温度趋进于0时,分子停留在低能量状态的概率趋向于1。
二、
退火原理运用于组合优化问题
组合优化问题
金属物体 解
状态
最优解 能量最低状态
目标函数
能量
三、 模拟退火算法
步骤 1 任选一个初始解i ,初始温度t ,给定降温比例系数α,以及一个纪录最优解的变量bi 和其函数值best=+∞;
步骤2 若1t <,则停止计算,输出最优解best ;否则执行3;
步骤 3 从i 的邻域中随机选择一个j , ()()ij f f j f i ∆=-;若0ij f ∆<,则令
i j =,执行4;否则若exp(/)(0,1)ij f t rand -∆>时,i j =,执行4;否则执行
3;
步骤4 若()f i best <,则bi i =,()best f i =,t t α=,执行2;否则t t α=,执行2; 四、
实验结果和分析
通过五个城市节点的TSP 问题的求解,其城市间的距离矩阵为:
01015621008139158020156132005291550⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭
模拟退火找到的最优路径为A C B D E →→→→,总路程为43;
由实验结果我们发现,对于小规模的TSP 问题,用模拟退火方法找到的解和用禁忌搜索方法找到的解不谋而合,都能够找到很好的解。
模拟退火算法解决TSP问题要点

智能优化方法课题报告专业班级:电子信息科学与技术12-3班课题名称:模拟退火算法解决TSP问题指导教师:姚睿学生姓名:蒋文斌学号: 08123453(课题设计时间:2015年3月28日——2015年 4月13日)中国矿业大学计算机学院一、问题描述旅行商问题(Traveling monituihuolesman Problem ,简称TSP )又名货郎担问题,是威廉·哈密尔顿爵士和英国数学家克克曼(T.P.Kirkman)于19世纪初提出的一个数学问题,也是著名的组合优化问题。
问题是这样描述的:一名商人要到若干城市去推销商品,已知城市个数和各城市间的路程(或旅费),要求找到一条从城市1出发,经过所有城市且每个城市只能访问一次,最后回到城市1的路线,使总的路程(或旅费)最小。
TSP 刚提出时,不少人认为这个问题很简单。
后来人们才逐步意识到这个问题只是表述简单,易于为人们所理解,而其计算复杂性却是问题的输入规模的指数函数,属于相当难解的问题。
这个问题数学描述为:假设有n 个城市,并分别编号,给定一个完全无向图G=(V ,E ),V={1,2,…,n},n>1。
其每一边(i,j)∈E 有一非负整数耗费 Ci,j(即上的权记为Ci,j ,i ,j ∈V)。
并设1,i j 0{ij X =边(,)在最优线路上, 其他G 的一条巡回路线是经过V 中的每个顶点恰好一次的回路。
一条巡回路线的耗费是这条路线上所有边的权值之和。
TSP 问题就是要找出G 的最小耗费回路。
人们在考虑解决这个问题时,一般首先想到的最原始的一种方法就是:列出每一条可供选择的路线(即对给定的城市进行排列组合),计算出每条路线的总里程,最后从中选出一条最短的路线。
假设现在给定的4个城市分别为A 、B 、C 和D ,各城市之间的耗费为己知数,如图1-1所示。
我们可以通过一个组合的状态空间图来表示所有的组合,如图1-2所示。
(1-1)图1-1 顶点带权图图1-2 TSP问题的解空间树1.模拟退火是什么?首先,让我们看看模拟退火是如何工作的,以及为什么它是善于解决旅行商问题。
用模拟退火算法解决TSP问题

用模拟退火算法解决TSP问题旅行商问题(Traveling Salesman Problem,TSP)是指一个旅行商要在不重复地经过全部的指定城市之后回到起点,所需要走的最短路径长度是多少。
由于TSP问题具有NP难度,因此传统的精确算法要花费大量的计算资源,得到的结果往往也只能是近似最优解。
而模拟退火算法是一种集合随机性和概率思想的启发式方法,可以快速地在解空间中搜索到一个较优的解。
一、模拟退火算法的原理及过程模拟退火算法是一种以概率为基础的全局优化算法,它的基本思想是利用随机性来逃离局部最优解,让搜索过程在解空间中跳跃,最终逐渐接近全局最优解。
模拟退火算法的过程可以分为三个阶段:初始化阶段、搜索阶段和收敛阶段。
初始化阶段:首先需要对问题进行建模,将问题转化为算法可处理的形式。
在TSP问题中,需要建立一个城市间距离矩阵。
然后随机生成一个初始解,通常是一个随机序列,表示旅行商经过城市的顺序。
搜索阶段:对生成的初始解进行扰动,得到一个新的解,并计算新解的目标函数值。
如果新解比原解更优,则直接接受该解。
如果新解比原解更劣,则有一定的概率接受该解,概率随着时间的推移逐渐降低。
收敛阶段:在搜索过程中,随着温度的不断下降,概率接受劣解的概率越来越小,这时算法逐渐收敛到一个局部最优解,也可能是全局最优解。
二、TSP问题的建模及求解TSP问题可以建立一张城市距离矩阵,然后用随机序列来表示旅行商经过城市的顺序。
目标函数可以定义为旅行商经过所有城市的总路径长度。
假设有n个城市,城市之间的距离矩阵为D,表示第i个城市和第j个城市之间的距离。
而旅行商经过城市的顺序可以用一个长度为n的序列{1,2,...,n}来表示,表示旅行商先经过第1个城市,然后是第2个城市,一直到第n个城市,然后再回到原点。
设目前的解序列为s={s1,s2,...,sn},则其总路径长度为:L(s) = ∑i=1n D(si,si+1) + D(sn,1)其中D(si,si+1)表示城市si和si+1之间的距离,D(sn,1)表示最后回到起点的距离。
模拟退火算法解决TSP问题-代码【范本模板】

模拟退火算法解决TSP问题一、算法说明:模拟退火算法求解TSP问题的流程框图如图所示二、结果分析蓝色字表示输出结果运行时间表示算法复杂度1)数据集一:模式城市数量为5时输入模式城市数量5为了方便查看,数据和结果保存在文件中〈<<<邻接矩阵保存在文件模拟退火算法—随机产生数据.txt 中〈<<<访问顺序保存在文件模拟退火算法-结果数据.txt 中模拟节点个数 5运行时间: 10 ms邻接矩阵0 1 57 20 811 0 59 49 3657 59 0 90 8220 49 90 0 7581 36 82 75 0访问节点顺序3 5 24 12)数据集二:模式城市数量为10时输入模式城市数量10为了方便查看,数据和结果保存在文件中〈<<<邻接矩阵保存在文件模拟退火算法—随机产生数据.txt 中〈<<〈访问顺序保存在文件模拟退火算法-结果数据。
txt 中模拟节点个数 10运行时间: 15 ms邻接矩阵0 1 57 20 81 59 49 36 90 821 0 75 18 86 71 52 31 2 1057 75 0 37 16 17 99 45 13 120 18 37 0 2 38 54 58 61 6181 86 16 2 0 17 67 46 36 759 71 17 38 17 0 61 79 80 5249 52 99 54 67 61 0 31 88 7336 31 45 58 46 79 31 0 96 9390 2 13 61 36 80 88 96 0 5482 10 1 61 7 52 73 93 54 0访问节点顺序1 7 6 10 82 9 4 5 33)数据集三:模式城市数量为20时输入模式城市数量20为了方便查看,数据和结果保存在文件中〈〈〈〈邻接矩阵保存在文件模拟退火算法-随机产生数据.txt 中<〈〈〈访问顺序保存在文件模拟退火算法-结果数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业综合设计报告课程名称:电子专业综合设计设计名称:基于模拟退火算法的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)4.2.仿真结果 (15)五体会 (20)六参考文献 (20)基于模拟退火算法的TSP算法一、设计目的和意义旅行商问题是组合优化领域里的一个典型的、易于描述却难以处理的NP难题,其可能的路径数目与城市数目是呈指数型增长的,求解非常困难。
首先介绍了旅行商问题,给出了其数学描述以及实际应用,进而给出解决TSP的一种比较精确的算法——模拟退火算法。
然后阐述了模拟退火算法的基本原理,重点说明了其基本思想及关键技术。
最后运用MATLAB语言实现了该算法,并将其运用到解决旅行商问题的优化之中。
数值仿真的结果表明了该方法能够对数据进行全局寻优,有效克服了基于导数的优化算法容易陷入局部最优的问题。
了解模拟退火算法的TSP算法的基本思路及原理,并应用MATLAB实现仿真,熟练掌握MATLAB的操作方式及应用,能正确书写报告。
二、设计原理2.1 模拟退火算法的基本原理模拟退火算法足2O世纪8O年代初提出的一种基于蒙特卡罗(Mente Carlo)迭代求解策略的启发式随机优化算法。
它通过Metropolis接受准则概率接受劣化解并以此跳出局部最优,通过温度更新函数的退温过程进行趋化式搜索并最终进入全局最优解集。
其出发点是基于物理中固体物质的退火过程与一搬的组合优化问题之间的相似性。
模拟退火法是一种通用的优化算法,其物理退火过程由以下三部分组成。
(1)加温过程。
其目的是增强粒子的热运动,使其偏离平衡位置。
当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态。
(2)等温过程。
对于与周围环境交换热量而温度不变的密封系统,系统状态的自发变化总是朝自由能减少的方向进行的,当自由能达到最小时,系统达到平衡状态。
(3)冷却过程。
使粒子热运动减弱,系统能量下降,得到晶体结构。
其中,加热过程对应算法的设定初温,等温过程对应算法的 Metropolis 抽样过程,冷却过程对应控制参数的下降。
这里能量的变化就是目标函数,要得到的最优解就是能量最低态。
Metropolis 准则是SA算法收敛于全局最优解的关键所在,Metropolis 准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱。
模拟退火算法为求解传统方法难处理的TSP问题提供了一个有效的途径和通用框架,并逐渐发展成一种迭代自适应启发式概率性搜索算法。
模拟退火算法可以用以求解不同的非线性问题,对不可微甚至不连续的函数优化,能以较大的概率求的全局有化解,该算法还具有较强的鲁棒性、全局收敛性、隐含并行性及广泛的适应性,并且能处理不同类型的优化设计变量(离散的、连续的和混合型的),不需要任何的辅助信息,对目标函数和约束函数没有任何要求。
利用 Metropolis 算法并适当的控制温度下降过程,在优化问题中具有很强的竞争力,此设计即为基于模拟退火算法的TSP算法。
SA算法实现过程如下(以最小化问题为例):(1)初始化:取初始温度T0足够大,令T=T0,任取初始解S1,确定每个T时的迭代次数,即 Metropolis 链长L。
(2)对当前温度T和k=1,2,……,l,重复步骤(3)~(6)。
(3)对当前S1随机扰动产生一个新解S2。
(4)计算S2的增量df=f(S2)-f(S1)其中f为S1的代价函数。
(5)若df<0 ,则接受S2作为新的当前解,即S1=S2;否则计算S2的接受概率exp (-df/T),即随机产生(0,1)区间上均匀分布的随机数 rand,若exp(-df/T)>rand 也接受S2作为新的当前解,S1=S2;否则保留当前解S1。
(6)如果满足终止条件Stop,则输出当前解s1为最优解,结束程序。
终止条件Stop 通常为:在连续若干个 Metropolis 链中新解s2都没有被接受时终止算法,或是设定结束温度。
否则按衰减函数衰减 T 后返回步骤(2)。
以上步骤成为 Metropolis 过程。
逐渐降低控制温度,重复 Metropolis 过程,直至满足结束准则 Stop,求出最优解。
2.2 TSP问题介绍旅行商问题(Traveling Salesman Problem,简称TSP)又名货郎担问题,是威廉·哈密尔顿爵士和英国数学家克克曼(T.P.Kirkman)于19世纪初提出的一个数学问题,也是著名的组合优化问题。
问题是这样描述的:一名商人要到若干城市去推销商品,已知城市个数和各城市间的路程(或旅费),要求找到一条从城市1出发,经过所有城市且每个城市只能访问一次,最后回到城市1的路线,使总的路程(或旅费)最小。
TSP 刚提出时,不少人认为这个问题很简单。
后来人们才逐步意识到这个问题只是表述简单,易于为人们所理解,而其计算复杂性却是问题的输入规模的指数函数,属于相当难解的问题。
这个问题数学描述为:假设有n个城市,并分别编号,给定一个完全无向图G=(V,E),V={1,2,…,n},n>1。
其每一边(i,j)∈E有一非负整数耗费 C i,j(即上的权记为C i,j,i,j∈V)。
G的一条巡回路线是经过V中的每个顶点恰好一次的回路。
一条巡回路线的耗费是这条路线上所有边的权值之和。
TSP问题就是要找出G的最小耗费回路。
人们在考虑解决这个问题时,一般首先想到的最原始的一种方法就是:列出每一条可供选择的路线(即对给定的城市进行排列组合),计算出每条路线的总里程,最后从中选出一条最短的路线。
假设现在给定的4个城市分别为A、B、C和D,各城市之间的耗费为己知数,如图1所示。
我们可以通过一个组合的状态空间图来表示所有的组合,如图(1-1)图 1 顶点带权图图 2 TSP问题的解空间树从图中不难看出,可供选择的路线共有6条,从中很快可以选出一条总耗费最短的路线:顶点序列为(A,C,B,D,A)。
由此推算,若设城市数目为n时,那么组合路径数则为(n-1)!。
很显然,当城市数目不多时要找到最短距离的路线并不难,但随着城市数目的不断增大,组合路线数将呈指数级数规律急剧增长,以至达到无法计算的地步,这就是所谓的“组合爆炸问题”。
假设现在城市的数目增为20个,组合路径数则为(20-1)!≈1.216×1017,如此庞大的组合数目,若计算机以每秒检索1000万条路线的速度计算,也需要花上386年的时间[6]。
三、详细设计步骤3.1算法流程模拟退火算法求解流程框图如图1所示。
图3 模拟退火算法求解流程框图3.2模拟退火算法实现步骤如下: (1)控制参数的设置需要设置的主要控制参数有降温速率q 、初始温度T 0、结束温度T end 以及链长L 。
(2)初始解对于n 个城市TSP 问题,得到的解就是对1~n 的一个排序,其中每个数字为对应城市的编号,如对10个城市的TSP 问题{1,2,3,4,5,6,7,8,9,10},则 |1|10|2|4|5|6|8|7|9|3就是一个合法的解,采用产生随机排列的方法产生一个初始解S 。
(3)解变换生成新解通过对当前解S 1进行变换,产生新的路径数组即新解,这里采用的变换是产生随机数的方法来产生将要交换的两个城市,用二邻域变换法产生新的路径,即新的可行解S 2。
例如n=10时,产生两个[1,10]范围内的随机整数r 1和r 2,确定两个位置,将其对换位置,如r 1=4,r 2=79 5 1 6 3 8 7 10 4 2 得到的新解为9 5 1 7 3 8 6 10 4 2(4)Metropolis 准则 若路径长度函数为f (S ),新解的路径为f (S 2),路径差为d f =f (S 2)-f (S 1),则Metropolis 准则为{1,0= exp(),0df P dfdf T <≥如果df<0,则以概率1接受新路线,否则以概率exp (-df/T )接受新路线。
(5)降温利用降温速率q 进行降温,即T=qT,若T 小于结束温度,则停止迭代输出当前状态,否则继续迭代。
四 、设计结果及分析 4.1 MATLAB 程序实现及主函数4.1.1 计算距离矩阵利用给出的N个城市的坐标,算出N个城市的两两之间的距离,得到距离矩阵(N N)。