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

合集下载

模拟退火算法

模拟退火算法

➢尽可能保证产生的候选解遍布整个解空间.
➢应能使解空间中的任何两个状态可达.
2.解接受函数
➢判断新解是否被接受的依据是Metropolis准则:
1,
f 0
P expf/t, f 0 On the evening of July 24, 2021
3.初始温度
Courseware template
➢从理论上说,初始温度t0应使平稳分布中每一状态
➢与局部搜索算法相比,SA的性能可概括为高效、 健壮、通用和灵活. (1)高效性.SA可在较短时间里求得更好的最终 解.
(2)健壮性(鲁棒性,robust).即算法的最终解并 不十分依赖初始解的选取.
(3)通用性和灵活性.SA能应用于求解多种组合优 化问题,为一个问题编制的程序可以有效地用于其 它问题.
➢SA具有如下特点:
(1)优于局部搜索算法.
(2) 若在每个t值都达到平衡分布,且所构造的邻域 结构能使解空间中的任何两个状态可达,则SA渐 近收敛于全局最优解.
(3)随着控制参数t值的减小,算法返回某个全局最 优解的概率单调增大.
On the evening of July 24, 2021
Courseware template
模拟退火算法
It is applicable to work report, lecture and teaching
第5章 模拟退火算法
Courseware template
➢模拟退火算法(Simulated Annealing, SA)是 Kirkpatrick等人于1982年提出的一种适合求解大规 模组合优化问题,特别是NP-难问题的通用启发式 算法.
Courseware template

模拟退火算法及应用

模拟退火算法及应用

一、概论1.1 问题概述在自然科学以及大多数科学当中和社会生活里经常出现最大或最小的问题,我们从小学开始学习大小比较,一直到高中大学时的最优解问题,都是一种名为最优化问题.最优化问题在大多是领域中都有重要的地位,例如管理科学、计算机科学、图像处理等等需要大量数据的学科中都存在着需要解决的组合优化问题。

用我们比较容易理解的说法就是已知一组固定的函数,令这组函数所对应的函数到达最大或最小值.而我们所想到的最简单的方法便是穷举法,然而这种方式存在这大量的数据计算穷举的缺点。

优化组合问题中的NP问题是一个很麻烦的问题,它解得规模会随着问题的规模增大而增大,求解所需的时间也会随问题的规模增大而成指数级增长,而当规模过大时就会因为时间的限制而失去了可行性。

旅行商问题(TSP)是优化组合问题中最为著名的一个问题,它的特点是容易描述却难于求解.这是一个经典的图论问题,假设有n个城市,用表示.城市之间距离为,i,j=1,2,3,···,n,假设所有城市之间两两连通,要求从一个城市出发,把所有城市都走一遍,而TSP问题就是恰好所有城市都走一遍,而所走路径形成回路且路径最短.将这个问题对应在一个n个顶点的完全图上,假设图为对称图,则要从个可能的解当中找到最小的解,需要的对比则要进行次,当的数值增大时,那么需要的次数也会随之以几何数倍增长,例如每秒运算一亿次的计算机,当需要的时间也只是0.0018秒,当需要的时间却是17年,可当时所需的时间却猛增到年,这个结果是我们所不想看到的。

优化组合问题的目标函数是从组合优化问题的可行解集当中求出最优解。

组合优化问题有三个基本要素:变量,约束和目标函数,在求解过程中选定的基本参数成为标量,对于变量的取值的所有限制称之为约束,表示可行的方案的标准的函数称之为目标函数。

随着问题种类的不同以及问题规模的扩大,要找到一种能够已有限代价来求解最优化问题的通用方法一直都是一个难题,建立用最大的可能性求解全局解一直是一个重要问题。

模拟退火算法

模拟退火算法
模拟退火算法 (Simulated Annealing)
Keynote:尤志强
背景
模拟退火算法是Kirkpatrick提出,应组合优化问题而产生的,主要解决的是NP-hard问题。 优化问题可以分为:函数优化问题和组合优化问题两大类
1、函数优化问题: 可以描述为:令S为上的有界子集(即变量的定义域),f:S—>R为n维实值函数,所谓函数f在S域上全局最 小化就是寻求点XminS使得f(Xmin)在S域上全局最小,即X S:f(Xmin)<=f(X)
pr exp[(E j Ei ) / kt]
大于[0,1)区间内的随机数则仍旧接受新状态j为当前状态,若不成立则保留i为当前状态,其中k为 Boltzmann常数。 这种重要性采样过程在高温下可接受与当前状态能量差较大的新状态,而在低温下基本只接受与当 前能量差较小的新状态,而且当温度趋于零时,就不能接受比当前状态能量高的新状态。
背景
计算复杂度
由于某些优化算法所需的计算时间和存储空间难以承受,因此算法可解的问题在实践中不 一定可解。如TSP问题,可能的路径有n!,暴力求解显然是不行的。所以只有了解了研究 问题的复杂性,才能有针对性地设计算法,进而提高优化效率。
算法的时间和空间复杂性对计算机求解非常重要。问题的时间复杂性是指求解该问题的所 有算法中时间复杂性最小的算法的时间复杂性,同理,空间复杂性也有类似定义。这样, 按照计算复杂性理论研究问题求解的难易程度,可把问题分为P类、NP类和NP完全类。
背景
4、基于系统动态演化算法
将优化过程转化为系统动态的演化过程,基于系统动态的演化来实现优化,如神经网络和混沌 搜索等。
5、混合型算法 上述算法从结果或者操作上相混合而产生的各类算法

10个城市的TSP问题

10个城市的TSP问题

实验三10个城市的TSP问题一、问题描述旅行商问题旅行商按一定的顺序访问N个城市的每个城市,使得每个城市都能被访问且仅能被访问一次,最后回到起点,而使花费的代价最小。

二、设计思想1、算法的选择这是一个NP完全问题,穷举法显然是不可取的。

由于初始态和最终态无法界定,因此没有采用了A*算法。

通过查阅资料,发现模拟退火算法能较好地解决这一问题。

2、算法思想模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。

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

接受概率p=exp(-Δf/Ti)。

求解TSP的模拟退火算法模型可描述如下:解空间:解空间S是遍访每个城市恰好一次的所有路经,解可以表示为{w1,w2 ,……, wn},w1, ……, wn是1,2,……,n的一个排列,表明w1城市出发,依次经过w2, ……, wn城市,再返回w1城市。

初始解可选为(1,……, n) ;目标函数:目标函数为访问所有城市的路径总长度;我们要求的最优路径为目标函数为最小值时对应的路径。

新路径的产生:随机产生1和n之间的两相异数k和m,不妨假设k<m,则将原路径(w1,w2,…,wk,wk+1,…,wm,wm+1,…,wn)变为新路径:(w1,w2,…,wm,wk+1,…,wk,wm+1,…,wn)上述变换方法就是将k和m对应的两个城市在路径序列中交换位置,称为2-opt映射。

模拟退火算法求解TSP问题

模拟退火算法求解TSP问题
而失去 可行性 。以 目前 已成熟 的数值 计算理 论 和算
计算机进行搜索 ,Ⅳ= 7时,需要 O0005s . 2 ;N 0 l 时 需要 18h 5 . ;N=2 0时猛 增 到 30a 5 ;N:5 0

时则需要 5 0 年 !显然 ,如此求 TP问题 的方 ×l4 8 S
法是 不可行 的 。
如何选择路线可使他所走过的路程最短。TP问题 S 表面看 很简 单 ,其实不 然 。当 T P问题 的规 模 为 N S
个 城市 时 ,可行 解 集 中 的路 径 数 为 ( 一1 !/, N ) 2 要从 ( N一1 !/ 个 可 行 解 中找 出哪 条 路 径最 短 , ) 2
约束 函数没有任何要求。利用 M tpl 算法并适 eoos r i 当地控制温度下降过程 , 在优化问题中具有很强的 竞争 力 ,因此研 究 s A算 法 在优 化 中 的应 用显 得 尤 为重 要 。本 文就应 用 s A解决 T P问题 。】 S l
说 明模 拟退 火 算 法 的优 缺 点 。
关键词 :模拟退 火;组合优化 ;T P问题 S 中图分类号 :T 23 1 F7. 文献标识码 :A 文章编号 :10 —05 (08 1 09 —0 0 1 0X 20 )0 — 04 3 s ln s rbe o iga pP ol v m U ig i lt n el Agr h F n a , u Q N i esFr t n e i ,H t s Smua dA n a n e  ̄ l i m/egJ n Y e i( o hat oe r i rt a- ot i t syU v sy
( 北 林业 大学 哈 尔滨 东 104 ) 500

要 :模拟退 火算 法在处理全局 优化、 离散 变量优化等 困难 问题 中,具有传统优化 算法无可 比拟 的优 势。

求解TSP问题的几种算法比较

求解TSP问题的几种算法比较

求解TSP问题的几种算法比较侯淑静【摘要】The traveling salesman problem (TSP) is an important problem for the classical discrete optimization, which is very important to study the solving algorithm. After the introduction of the greedy algorithm, taboo search algorithm, simulated annealing algorithm, genetic algorithm, the author put forward the corresponding algorithm. Aiming at the four typical examples in the test base, we realized implementation of these algorithms with procedures, and the running time and the results of these algorithms are compared. The results show that the greedy algorithm can draw the solution in a short time, the taboo search algorithm and genetic algorithm have the same effect, and the results of simulated annealing algorithm is better than those of genetic algorithm.%旅行售货商问题(简称TSP )是离散优化的一个经典的重要问题,对求解算法的研究非常重要。

模拟退火算法

模拟退火算法 (Simulation Annealing) 及其改进
目录
搜索算法简介
模拟退火算法的原理
模拟退火算法的应用
英文文献介绍
参考文献
搜索问题
最小最优解的搜索
局部最优
除对当 前的位 置外, 对环境 无任何 感知。
全局最优
搜索算法
• 盲目搜索与启发式搜索 • 按照预定的控制策略实行搜索,在搜索过程中 获取的中间信息不用来改进控制策略,称之为 盲目搜索,反之,称为启发式搜索。 • 盲目搜索
文献讲解——问题描述
• 如图,为一个二维运输网,由供应商,直接转运设施与用 户组成,本文做出以下相关假设,约束条件方便建模。
文献讲解——算法应用
• 退火算法流程 所示如图
• 求新解的方法 1.改变货物的顺序 2.改变进入车的顺序 3.改变出去车的顺序
文献讲解——计算与结论
• 通过设置不同的参数(S/C/D/Fmax) • 文中设置了两个例子分析:单产品,单卡车模型与多产品 多卡车模型。
外文文献讲解[2]
• 文献题目:Simulated annealing approach for transportation problem of cross-docking network design • 译名:使用模拟退火方法解决运输问题中的直接转运网的 设计 • 2014年,Uludag 大学,第二届世界商业经济管理大会 • 研究背景:在产品供应链管理中,运输效率是一个重要因 素,高效的运输既满足了顾客的需求,也降低了成本。直 接转运策略降低了储存成本加速了产品流通,而直接转运 网的设计与优化是一个研究热点。 • 研究目的:设计二维的直接转运网络,设计卡车载运计划 与货物的流通路径来实现最低的运输费用。

TSP问题——实验报告

TSP问题目录1实验目的 (1)2问题描述与分析 (1)3算法分析 (1)3.1回溯法 (1)3.2 动态规划 (1)3.3 模拟退火算法 (2)4程序设计 (2)4.1回溯法 (2)4.2动态规划算法 (3)4.3模拟退火算法 (4)5实验结果及分析 (5)6实验总结 (6)7源代码 (6)1实验目的1.使用搜索方法进行TSP问题的求解2.了解相关智能算法3.了解NP难问题的求解策略2问题描述与分析某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。

他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(或旅费)最小。

分析:问题的本质是搜索问题,而且这个问题是NP完全问题,问题的复杂度指数增长,所以普通的搜索无法在有限的时间里完成搜索,尽管有各种优化的算法:启发式算法、深度优先搜索、动态规划、回溯等。

都无法改变复杂度。

实际上大多时候人们并不关心NP完全问题的最优解,只要得出一个近似的解就可以了,因此,人们发明了很多算法,例如粒子群算法、遗传算法、模拟退火算法,这一类算法被称为“智能算法”,但是,他们都无法求出最优解,仅能得到近似解,但这已经足够了。

在本次试验中,一共设计了三个算法:回溯法,动态规划,模拟退火算法。

3算法分析3.1回溯法回溯法采用深度优先方式系统地搜索问题的所有解,基本思路是:确定解空间的组织结构之后,从根结点出发,即第一个活结点和第一个扩展结点向纵深方向转移至一个新结点,这个结点成为新的活结点,并成为当前扩展结点。

如果在当前扩展结点处不能再向纵深方向转移,则当前扩展结点成为死结点。

此时,回溯到最近的活结点处,并使其成为当前扩展结点,回溯到以这种工作方式递归地在解空间中搜索,直到找到所求解空间中已经无活结点为止。

旅行商问题的解空间是一棵排列树.对于排列树的回溯搜索与生成1,2,……, n的所有排列的递归算法Perm类似,设开始时x=[ 1,2,… n ],则相应的排列树由x[ 1:n ]的所有排列构成.旅行商问题的回溯算法。

模拟退火算法原理及应用

模拟退火算法原理及应用模拟退火算法(Simulated Annealing,SA)是一种启发式搜索算法,用于在求解优化问题中寻找全局最优解。

它的名字源自金相学中的“退火”过程,可以将物质加热至高温状态,再逐渐冷却,使其达到稳定的低能量状态。

模拟退火算法以类似的方式,通过模拟物质退火过程来搜索最优解。

模拟退火算法的基本原理是在优化过程中,允许接受较劣的解,以避免陷入局部最优解而无法跳出。

在搜索的过程中,模拟退火算法会随机选择当前解的一个邻居,计算出其解的差异,并以一定的概率接受更劣的解。

这种“接受概率”是根据一定的函数关系与当前温度进行计算,随着搜索的进行,温度会逐渐降低,接受更劣的解的概率也会逐渐降低。

最终,搜索会在温度趋近于极低值时停止。

相比于其他优化算法,模拟退火算法具有以下几个优点:第一,模拟退火算法能够克服局部最优解的问题,并寻找全局最优解。

在搜索过程的一开始,算法会接受很劣的解,以免陷入局部最优解,使得搜索方向可以不断地进行调整,从而有望跨越不同的局部最优解,发现全局最优解。

第二,模拟退火算法比其他优化算法更加灵活。

在算法的初始阶段,允许以较高概率接受劣质解,便于快速地确定搜索方向。

而在搜索过程接近尾声时,模拟退火算法会逐渐降低接受劣质解的概率,以固定最优解。

第三,在实际应用上,模拟退火算法还具有较好的可扩展性和容错性。

由于算法在全局搜索中跳过局部最优解,因此可以应对优化问题的复杂度和参数数量的增加。

模拟退火算法应用广泛,以下是几个应用场景:第一,模拟退火算法可以应用在旅行商问题(TSP)中。

旅行商问题是一种经典的组合优化问题,旨在找到一条路径,使得旅行商必须访问每个城市,且在访问完所有城市后返回原点,且路径总长度最短。

模拟退火算法可以通过随机交换路径中的城市位置,以及接受劣质的解来最终找到该问题的全局最优解。

第二,模拟退火算法还可以应用在物理学中。

例如著名的Ising 模型,它对二维晶格中带有自旋的相互作用的电子系统进行建模,是研究磁性、相变等基本物理问题的一个重要手段。

模拟退火算法在排课问题中的应用

模拟退火算法在排课问题中的应用模拟退火算法(Simulated Annealing Algorithm,简称SA)是一种属于启发式的随机优化算法,它的启发式思想主要来自于物理学中的“退火”这一概念,该算法由Kirkpatrick 、Gelatt 和 Vecchi 三位作者于 1983 年提出,它利用类比物理的“退火”原理,使得算法能够从当前的解决方案(solution)进行逐步的变化,从而最终求得一个具有更高效率的解决方案。

因此,模拟退火算法在求解旅行商问题(TSP),排课问题,等离散优化问题中都有很好的应用,尤其是在复杂的排课问题中,模拟退火算法也能取得不错的效果。

排课问题(Course Scheduling Problem,CSP)是一类典型的组合优化问题,也是一种具有挑战性的复杂问题。

排课问题的目标是将一些任务(课程)排列在一个有约束的时间表上,使得课程安排满足所有的约束条件,同时可以最大程度地满足课程安排的目标。

排课问题是一个极具挑战性的组合优化问题,它需要考虑多个约束条件,需要计算量巨大,而且在搜索空间中有大量的局部最优解,而且很难从局部最优解推导出全局最优解。

模拟退火算法可以比较有效地求解排课问题,它可以解决排课问题的复杂性和约束条件。

在模拟退火算法中,主要采用退火温度(temperature)和冷却率(cooling rate)来控制算法的搜索过程,算法会从当前的解决方案开始,然后逐渐降低温度,并在一定概率下接受一个新的解决方案,同时保证该新的解决方案比当前解决方案更优,如果没有更优的解决方案,则会按照一定的概率接受当前的解决方案,并继续降低温度,直到算法到达最低温度,当温度到达最低温度时,算法便停止,并返回当前最优解。

在排课问题中,模拟退火算法可以有效地求解复杂的排课问题,该算法能够有效地解决复杂的约束条件,并在一定概率下接受一个新的解决方案,同时保证该新的解决方案比当前解决方案更优,从而可以最终求得一个具有更高效率的解决方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业综合设计报告课程名称:电子专业综合设计设计名称:基于模拟退火算法的TSP算法姓名:学号:班级:电子0903指导教师:***起止日期:2012.11.1-2012.12.30专业综合设计任务书学生班级:电子0903 学生:学号:20095830设计名称:基于模拟退火算法的TSP算法起止日期:2012.11.1-2012.12.30指导教师专业综合设计学生日志专业综合设计考勤表专业综合设计评语表一设计目的和意义 (5)二设计原理 (5)2.1 模拟退火算法的基本原理 (5)2.2 TSP问题介绍 (6)三详细设计步骤 (8)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)五体会 (18)六参考文献 (18)基于模拟退火算法的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=T,任取初始解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 顶点带权图图 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、初始温度T0、结束温度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)解变换生成新解通过对当前解S1进行变换,产生新的路径数组即新解,这里采用的变换是产生随机数的方法来产生将要交换的两个城市,用二邻域变换法产生新的路径,即新的可行解S2。

例如n=10时,产生两个[1,10]围的随机整数r1和r2,确定两个位置,将其对换位置,如r1=4,r2=79 5 1 6 3 8 7 10 4 2 得到的新解为9 5 1 7 3 8 6 10 4 2(4)Metropolis准则若路径长度函数为(S),新解的路径为(S2),路径差为d=(S2)-(S1),则Metropolis准则为如果df<0,则以概率1接受新路线,否则以概率exp(-df/T)接受新路线。

(5)降温利用降温速率q进行降温,即T=qT,若T小于结束温度,则停止迭代输出当前状态,否则继续迭代。

四、设计结果及分析4.1 MATLAB程序实现及主函数4.1.1 计算距离矩阵利用给出的N个城市的坐标,算出N个城市的两两之间的距离,得到距离矩阵(N N)。

计算函数为Distance,得到初始群种。

程序如下4.1.2 初始解初始解的产生直接使用MATLAB自带的函数randperm,如城市格式为N个,则产生初始解:4.1.3 生成新解解变换生成新解函数为NewAnswer,程序代码如下:4.1.4 Metropolis 准则函数Metropolis 准则函数为Metropolis,程序代码如下:4.1.5 画路线轨迹图画出给的路线的轨迹图函数为DrawPath,程序代码如下:4.1.6 输出路径函数将得到的路径输出显示在Command Window 中,函数名为OutputPath。

4.1.7 可行解路线长度函数计算可行解的路线长度函数为PathLength ,程序代码如下:4.1.8 模拟退火算法的主函数模拟退火算法参数设置如表一所列。

表一参数设定主函数代码如下:4.2仿真结果及分析优化前的一个随机路线图如图4所示:图4 总路线距离约为57.00优化以后的最优解路线如下图5:图5该优化路径的总路程近似为30.00,已为最优解。

模拟退火算法进化过程图如下图6:由图可以看出,优化前后路径长度得到很大改进,变为原来的52.4%,65代以后路径长度已经保持不变了,可以认为已经是最优解了。

相关文档
最新文档