基于模拟退火算法的TSP算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)初始化:取初始温度T
0足够大,令T=T
,任取初始解S1,确定每个T时的迭代次数,即
Metropolis 链长L。
(2)对当前温度T和k=1,2,……,l,重复步骤(3)~(6)。
(3)对当前S
1随机扰动产生一个新解S
2。
(4)计算S
2的增量df=f(S
2
)-f(S
1
)其中f为S
1
的代价函数。
(5)若df<0 ,则接受S
2作为新的当前解,即S
1
=S
2
;否则计算S
2
的接受概率exp
(-df/T),即随机产生(0,1)区间上均匀分布的随机数 rand,若exp(-df/T)>rand
也接受S
2作为新的当前解,S
1
=S
2
;否则保留当前解S
1
。
(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刚提出时,不少人认为这个问题很简单。后来人们才逐步意识到这个问题只是表述简单,易于