1、TSP 的几种求解方法及其优缺点一、什么是 TSP 问题旅行商问题,简称 TSP,即给定 n 个城市和两两城市之间的距离,要求确定一条经过各城市当且仅当一次的最短路线。其图论描述为:给定图 G=(V,A) ,其中 V 为顶点集,A 为各顶点相互连接组成的边集,设 D=(dij)是由顶点 i 和顶点 j 之间的距离所组成的距离矩阵,要求确定一条长度最短的 Hamilton 回路,即遍历所有顶点当且仅当一次的最短距离。旅行商问题可分为如下两类:1)对称旅行商问题(dij=dji,i,j=1 ,2,3,n) ;2)非对称旅行商问题(dijdji,i,j=1,2,3,n) 。非对称旅行商问题较难求解,
2、我们一般是探讨对称旅行商问题的求解。若对于城市 V=v1,v 2,v 3,v n的一个访问顺序为 T=t1,t 2,t 3,t i,t n,其中 tiV(i=1 ,2,3,n) ,且记 tn+1=t1,则旅行商问题的数学模型为:minL=。TSP 是一个典型的组合优化问题,并且是一个 NP 完全难题,是诸多领域内出现的多种复杂问题的集中概括和简化形式,并且已成为各种启发式的搜索、优化算法的间接比较标准。因此,快速、有效地解决 TSP 有着重要的理论价值和极高的实际应用价值。二、主要求解方法基于 TSP 的问题特性,构造型算法成为最先开发的求解算法,如最近邻点、最近合并、最近插入、最远插入、最近
3、添加、贪婪插入等。但是,由于构造型算法优化质量较差,迄今为止已开发了许多性能较好的改进型搜索算法,主要有:1)模拟退火算法2)禁忌搜索算法3)Hopfield 神经网络优化算法4)蚁群算法5)遗传算法6)混合优化策略2.1 模拟退火算法方法1)编码选择:采用描述 TSP 解的最常用的一种策略 路径编码。2)SA 状态产生函数的设计:对于基于路径编码的 SA 状态产生函数操作,可将其设计为:互换操作(SWAP) ;逆序操作(INV) ;插入操作( INS) 。3)SA 状态接受函数的设计:min1 ,exp (- /t)random0,1准则是作为接受新状态的条件最常用的方案,其中为新旧状态的目
4、标值差,t 为”温度” 。4)初温和初始状态:最常用且可理解的初温确定方案是,首先随机产生一组状态,确定两两状态间的最大目标值差:|max| ,然后由式 t0=-max/lnpr,其中 pr 为初始接受概率(理论上应接近 1,实际设计时也可以取 0.1) 。初始状态可采用启发式算法(如 2opt 方法)快速得到一个解,并以此为 SA 的初始状态。5)退温函数的设计:指数退温函数是最常用的退温策略(tk=tk-1, 为退温速率) 。6)温度修改准则和算法终止准则的设计:可采用阈值法设计的”温度修改”和”算法终止”两准则。2.2 禁忌搜索算法基于禁忌搜索算法的一般设计原则,对典型的组合优化问题 T
5、SP,其算法可以按如下方案实现:1)初始解:可随机产生也可基于问题信息借助一些启发式方法产生以保证一定的初始性能。2)邻域结构:常用方法是互换(SWAP) 、插入(INSERT) 、逆序(INVERSE )等操作。3)候选解的选择:通常取当前解的邻域解集的一个子集作为候选解集,而取其中的满足藐视准则或非禁忌的最优状态为最佳候选解。4)禁忌表及其长度:建议尝试自适应长度法,譬如根据目标值更新的情况或禁忌频率信息来适当增加或缩短禁忌表长度。5)藐视准则:采用若某个状态的性能优于”bestsofar ”状态,则忽视其禁忌属性,直接选取它为当前状态。6)集中搜索和分散搜索策略:分别采用在一定步数的迭代
6、后基于最佳状态进行重新初始化并对其邻域进行多步趋化性搜索和对算法的重新随机初始化或是根据频率信息对一些已知对象进行惩罚。7)终止条件:给定最优状态连续保持不变的最大持续迭代步数。大量研究表明禁忌搜索算法具有模拟退火、遗传算法等智能优化算法相当的性能,甚至更优越。2.3 Hopfield 神经网络优化算法在用 Hopfield 网络求解优化问题之前,必须将问题映射为相应的神经网络。对 TSP 的求解,首先将问题的合法解映射为一个置换矩阵,并给出相应的能量函数,然后将满足置换矩阵要求的能量函数的最小值与问题的最优解相对应。若以 X,Y 表示城市,i 表示第几次访问,dXY 表示城市间的距离,VXi
7、 表示矩阵中的第 X 行第 i 列的元素,则可构造出能量函数为:这是 nn 个神经元状态方程的通用表达式。为求得 TSP 的优化结果,需要求解 nn个非线性一阶联立微分方程式,以得到置换矩阵中 nn 个元素的全部状态。例如可采用如下参数并给定个城市的位置和相互距离求解 n 个城市的TSP:t=1,A=B=500,C=200,D=500,u0=0.02 起始条件为随机噪声,令起始 uXi 如下式而 u00 满足在 t=0 时XiVXi=n 以利于收敛7 。利用数值计算方法对此微分方程组求解,经若干次迭代即可求得网络各神经元的最终状态。2.4 蚁群算法方法蚁群算法与其他模拟进化算法一样,通过候选解
8、组成的群体进化过程来寻找最优解。求解 TSP 的工作过程为:首先将 m 只蚂蚁按照一定的规则(例如随机)分布在 n 个城市,然后每一只蚂蚁寻找出一条可行路径并进行局部信息更新,最后寻出所有蚂蚁找到的最好路径进行全局信息更新。2.5 遗传算法方法近年来,遗传算法已被成功的应用于工业、经济管理、交通运输、工业设计等不同领域,解决了许多问题。基于遗传算法求解 TSP 的算法实现,以下几个方面需要说明:1) 遗传基因编码方法:目前主要有以下三种比较有效的方法:顺序表示路径表示布尔矩阵表示2)遗传操作算子:选择算子:对于求解 TSP,常用的选择机制有轮盘赌选择机制、最佳个体保存选择机制、期望值模型选择机
9、制、排序选择机制、联赛选择模型机制等。交叉算子:采用顺序表示技术可以采用基本遗传算法的交叉操作例如单点交叉、两点交叉、多点交叉和均匀交叉;采用路径表示的可用部分匹配交叉、顺序交叉、循环交叉、边重组交叉;采用布尔矩阵表示的有它独特的交和并算子。变异算子:采用顺序表示的可采用基本位变异、均匀变异、边界变异、非均匀变异和高斯变异;采用路径表示的可用位点变异、逆转变异、对换变异和插入变异。另外适应度函数可取为哈密尔顿圈的长度的倒数(无惩罚函数) ,初始种群可用随机方法产生,再确定相应的控制参数及可求解。2.6 混合优化策略方法譬如大规模 TSP 的求解,鉴于问题整体求解的复杂性,在设计算法时可以先考虑
10、空间的分解,利用聚类的方法将问题分解为若干子问题,然后先用启发式方法快速得到子问题的近似解,而后以其为初始状态利用 GA,SA,TS 等方法和规则性搜索在一定的混合方式下进行指导性优化,待各子问题求解完毕用临近原则确定问题的整体解,再利用局部改进算法对其作进一步加工以得到问题的最终解。三、各种方法的优缺点及比较由于 TSP 的典型性,在过去的几十年里人们研究了许许多多的求解方法。除了以上介绍的求解方法以及它们的各种改进型方法外,还有一些其他的方法也可求解 TSP,比如:n-opt 法,贪心算法,爬山法,回溯法,分支限界法,EP ,混沌搜索、模糊优化等。SA,GA 和 TS 作为具有全局优化性能
11、的典型 Meta-heuristic 算法代表,与人工神经网络统称为四大现代启发式算法。蚁群算法是 90 年代初才被提出的全新的算法,而混合优化策略由于缺乏严格且丰富的理论研究和效率分析也是近年来也才得到发展和应用。概括地讲,SA 算法的实验性能具有质量高、初值鲁棒性强、通用易实现的优点,最大缺点是往往优化过程较长;GA 的两个最显著的优点是隐含并行性和全局解空间搜索,但实际应用时易出现早熟收敛和收敛性能差等缺点;TS 算法是一种局部搜索能力很强的全局迭代寻优算法,不足之处在于对初始解较强的依赖性和串行的迭代搜索过程;Hopfield 神经网络优化算法具有简单、规范、快速等优点,但是其优化性和
12、鲁棒性比较差;蚁群算法是一种本质并行的算法,但其搜索时间比较长,也容易陷于局部最优解,使搜索停滞;混合优化策略若能得到有效的设计,真正做到不同方法的取长补短将会产生更好的优化效率。由于很少有论文提供求解 TSP 的一些特定实例的计算时间,而只报道函数评估的次数,这使得不同方法之间的比较略显困难,因为不同的算子具有不同的时间复杂性。目前的大多数文献都是将所提方法与其他方法作比较,比较中使用的两类主要的测试实例为:1)随机分布的 TSP 城市。典型情况是与一个均匀随机变量相对应并假定采用欧式距离度量。这里,关于最短的 TSP 路径的期望长度 L3 的一个经典公式为 L3=knR,其中 n为城市数目
13、,R 是一个正方形的面积,随机放置的各城市均位于该正方形之内,k 为一个经验常数,称为 Held-Karp 下界。对于 n 城市的随机欧氏 TS(n100) ,k 与 n 的期望比例关系为 k=0.70805+0.52229n+1.31572n-3.07474nn。Bonomi 和 Lutton 建议采用 k=0.749。2)TSP 公共测试实例库(TSPLIB18) 。它还提供了有文献报道的最优解或目前已知的最好解。四、结论对于 TSP,目前还不存在能找到完美解的方法,这个问题是 NP 难的:目前还没有任何算法能在与城市总数呈多项式关系的时间复杂性下找到完美解。我们只能产生一些近似完美解,在
14、合理的运行时间里使其与完美解尽可能的接近。从目前发表的各种求解 TSP 的论文的结论来看,少于 100 个城市的 TSP 例子很适合于用全局优化技术求解,但是要考虑城市规模比这大得多的 TSP 实例则需要采用启发式方法。为了进一步提高算法的全局优化能力,避免搜索过程陷入局部极小,现已提出的改进策略主要有:并行多邻域搜索,平滑优化曲面形状,引进重升温、熵抽样等高级技术等。对于复杂优化问题,单一机制的优化算法很难实现全局优化,且效率较低。多种优化机制和邻域搜索结构相混合,是能较大程度提高全局优化度和鲁棒性的有力途径,并可一定程度上放松对单一算法参数选择的苛刻性。所以混合优化策略会是一种趋势。对于 TSP 的求解,我认为以后在以下几个方面可能会有很好的进展:1)新的方法的提出;2)基于目前各种方法的改进;3)混合优化策略的发展等。我们希望最终人们能找到一种求解 TSP 的完美方法。