01 什么是旅行商问题(TSP)?
TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出。问题描述如下:
有若干个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只在一个城市逗留一次,最后回到出发的城市,问如何事先确定一条最短的线路已保证其旅行的费用最少?
如下图所示:
02 模拟退火算法(Simulate Annealing Arithmetic,SAA)
2.1 什么是模拟退火算法(简介)?
模拟退火算法(Simulate Annealing Arithmetic,SAA)**是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。**它是基于Monte-Carlo迭代求解策略的一种随机寻优算法。
模拟退火算法是S.Kirkpatrick, C.D.Gelatt和M.P.Vecchi等人在1983年发明的,1985年,V.Černý也独立发明了此演算法。模拟退火算法是解决TSP问题的有效方法之一。
2.2 模拟退火算法的来源
模拟退火算法来源于固体退火原理。
物理退火: 将材料加热后再经特定速率冷却,目的是增大晶粒的体积,并且减少晶格中的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来位置,而随机在其他位置中移动。退火冷却时速度较慢,使得原子有较多可能可以找到内能比原先更低的位置。
模拟退火: 其原理也和固体退火的原理近似。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
2.3 模拟退火算法思想
在介绍模拟退火算法之前,有必要给大家科普一下爬山算法 (Hill Climbing)。
2.3.1 爬山算法
爬山算法是一种简单的贪心搜索算法,该算法**每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。**这种算法思想很单纯,但是也存在一个很大的缺陷。在搜索选择的过程中有可能会陷入局部最优解,**而这个局部最优解不一定是全局最优解。**比如下面这个问题:
假设A是当前解,爬山算法往前继续搜索,当搜索到B这个局部最优解