202101 禁忌算法TS求解TSP问题及Matlab编程实现.pdfVIP

  • 599
  • 0
  • 约1.92万字
  • 约 16页
  • 2021-03-21 发布于江苏
  • 举报

202101 禁忌算法TS求解TSP问题及Matlab编程实现.pdf

第七章 禁忌算法求解 TSP 旅行商问题 Matlab 实现  主要学习和讲解禁忌算法求解 TSP ,为了对比顺便讲解了 2‐opt (全邻域搜索)求解 TSP 。                                         Created by Jiannywang@163.com ,  2021‐03‐20  视频和代码资料请访问:  7.1 旅行商问题概述  1  7.2 旅行商问题的应用  3  7.3 算例问题描述和模型构建  4  7.4 2‐opt 全邻域搜索求解 TSP 思路及 Matlab 实现  4  7.5 禁忌搜索算法求解 TSP 思路及 Matlab 实现  8  7.5.1 禁忌搜索算法简介  8  7.5.2 禁忌搜索算法基本思想  9  7.5.3 禁忌搜索基本流程  9  7.5.4 禁忌搜索算法基本构成  10  7.5.5 禁忌搜索计算流程及 Matlab 程序实现  12  7.6 禁忌搜索算法求解 TSP 备注  16      7.1 旅行商问题概述 旅行商问题(Traveling Salesman Problem,简称 TSP)又名货郎担问题, 是威廉•哈密尔顿爵士和英国数学家克克曼(T.P.Kirkman)于 19 世纪初提出的一 个数学问题,也是著名的组合优化问题。问题是这样描述的:一名商人要到若干 城市去推销商品,已知城市个数和各城市间的路程(或旅费),要求找到一条从 城市 1 出发,经过所有城市且每个城市只能访问一次,最后回到城市 1 的路线, 使总的路程(或旅费)最小。TSP刚提出时,不少人认为这个问题很简单。后来 人们才逐步意识到这个问题只是表述简单,易于为人们所理解,而其计算复杂性 却是问题的输入规模的指数函数,属于相当难解的问题。 在考虑解决这个问题时,首先想到的一种方法就是:列出每一条可供选择的 1    路线(即对给定的城市进行排列组合),计算出每条路线的总里程,最后从中选出 一条最短的路线。假设现在给定的 4 个城市分别为 A、B、C 和 D,各城市之间的 耗费为己知数,如图 1 所示。可以通过一个组合的状态空间图来表示所有的组合, 如图 2 所示。 图  1 顶点带权图                              图 2 TSP 问题的解空间树  列举法可以获得最优解,但是只有在节点数较少时可以快速求解,当节点数 增加时,搜索的路径组合数量将成指数级增长,从而使得状态空间搜索效率降低, 要耗费太长的计算时间。节点数为 N 的 TSP 问题,其路径组合数量为(N-1)!,在 使用列举法进行求解时,首先需要将这(N-1)!的回路列举出来,需要耗费计算机 (N-1)!的基本运算;再将每条回路的路程(或旅费)计算出来,以每条弧的路程 (或旅费)都是 1 位数为例,每条回路的总路程(或总旅费)需要耗费 N 个基本 运算,则全部回路的路程(或旅费)计算需要耗费计算机 N(N-1)!的基本运算; 最后再对这(N-1)!条回路路程(或旅费)进行比较,从而获得最优解。可以看出 列举法进行节点数为N的TSP问题求解至少要进行N(N-1)!+2(N-1)!步的基本运 算。当节点数较多时,列举法运算复杂性急剧增加,而且计算机的运算时间也急 剧增加,甚至导致无法进行实际应用。以 CPU 为 2Ghz 的计算机为例,其每秒钟 能够进行基本运算 2^30=1073741824 次,列举不同节点数量下 TSP 问题的回路总 数和计算时间如表 1 所示。 2    表1 TSP问题节点数量、回路总数和计算时间表 节点数量 3 6 9 12 15 18 21 24 27 399168 8.72E+ 3

文档评论(0)

1亿VIP精品文档

相关文档