分支限界TSP(旅行商问题)

这篇具有很好参考价值的文章主要介绍了分支限界TSP(旅行商问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分支限界TSP(旅行商问题)

TSP 问题

【问题】

TSP 问题(traveling salesman problem) 是指旅行家要旅行 n 个城市, 要求各个城市经历且仅经历一次然后回到出发城市, 并要求所走的路程最短。

【想法】

首先确定目标函数的界[down, up], 可以采用贪心法确定 TSP 问题的一个上界。 如何求得 TSP 问题的一个合理的下界呢? 对于无向图的代价矩阵, 把矩阵中每一行最小的元素相加, 可以得到一个简单的下界。 但是还有一个信息量更大的下界: 考虑一个 TSP 问题的完整解, 在每条路径上, 每个城市都有两条邻接边, 一条是进入这个城市的, 另一条是离开这个城市的, 那么, 如果把矩阵中每一行最小的两个元素相加再除以 2, 假设图中所有的代价都是整数, 再对这个结果向上取整, 就得到了一个合理的下界。 需要强调的是, 这个解可能不是一个可行解(可能没有构成哈密顿回路) , 但给出了一个参考下界。 例如, 对于图 (a)所示带权无向图, (b)是该图的代价矩阵, 采用贪心法求得近似解为为 1→3→5→4→2→1, 其路径长度为 1+2+3+7+3=16, 这可以作为 TSP问题的上界。 把矩阵中每一行最小的两个元素相加再除以 2, 得到 TSP 问题的下界:[(1+3)+(3+6)+(1+2)+(3+4)+(2+3)]/2=14。 于是, 得到了目标函数的界[14, 16]。
分支限界TSP(旅行商问题)
一般情况下, 假设当前已确定的路径为 U=(r 1 , r 2 , …, r k ), 即路径上已确定了 k 个顶点, 此时, 该部分解的目标函数值的计算方法(即界限函数) 如下:
分支限界TSP(旅行商问题)
例如, 对于 所示无向图, 如果部分解包含的路径是 1-3-5, 则该部分解的下界是 lb=[2×(1+2)+3+3+(3+6)+(3+4)]/2=14。
应用分支限界法求解 所示无向图的 TSP 问题, 其搜索空间如图所示, 具体的搜索过程如下(其中加黑部分表示已经确定的路径) :
(1) 在根结点 1, 计算目标函数值为 lb=[(1+3)+(3+6)+(1+2)+(3+4)+(2+3)]/2=14, 将根结点加入待处理结点表 PT;
(2) 依次处理根结点的每一个孩子结点。 在结点 2, 已确定的路径是 1-2, 路径长度为 3, 则目标函数值为[2×3+1+6+(1+2)+(3+4)+(2+3)]/2=14, 将结点 2 加入表 PT;在结点 3, 已确定的路径是 1-3, 路径长度为 1, 则目标函数的值为[2×1+3+1+(3+6)+(3+4)+(2+3)]/2=14, 将结点 3 加入表 PT 中;在结点 4, 已确定的路径是 1-4, 路径长度为 5, 则目标函数的值为[2×5+1+3+(3+6)+(1+2)+(2+3)]/2=16, 将结点 4 加入表 PT 中;在结点 5, 已确定的路径是 1-5, 路径长度为 8, 则目标函数的值为[2×8+1+2+(3+6)+(1+2)+(3+4)]/2=19, 超出目标函数的界, 将结点 5 丢弃;
(3) 在表 PT 中选取目标函数值极小的结点 2 优先进行搜索;
(4) 依次处理结点 2 的每一个孩子结点。 在结点 6, 已确定路径 1-2-3, 路径长度为 3+6=9, 则目标函数值为[2×9+1+1+(3+4)+(2+3)]/2=16, 将结点 6 加入表 PT;在结点 7, 已确定路径 1-2-4, 路径长度为 3+7=10, 则目标函数值为[2×10+1+3+(1+2)+(2+3)]/2=16, 将结点 7 加入表 PT;
在结点 8, 已确定路径 1-2-5, 路径长度为 3+9=12, 则目标函数值为[2×12+1+2+(1+2)+(3+4)]/2=19, 超出目标函数的界, 将结点 8 丢弃;
(5) 在表 PT 中选取目标函数值极小的结点 3 优先进行搜索;
(6) 依次处理结点 3 的每一个孩子结点。 在结点 9, 已确定路径 1-3-2, 路径长度为 1+6=7, 则目标函数值为[2×7+3+3+(3+4)+(2+3)]/2=16, 将结点 9 加入表 PT 中;在结点 10, 已确定路径 1-3-4, 路径长度为 1+4=5, 则目标函数值为[2×5+3+3+(3+6)+(2+3)]/2=15, 将结点 10 加入表 PT;在结点 11, 已确定路径 1-3-5, 路径长度为 1+2=3, 则目标函数值为[2×3+3+3+(3+6)+(3+4)]/2=14, 将结点 11 加入表 PT;
(7) 在表 PT 中选取目标函数值极小的结点 11 优先进行搜索;
(8) 依次处理结点 11 的每一个孩子结点。 在结点 12, 已确定路径 1-3-5-2,路径长度为 1+2+9=12, 则目标函数值为[2×12+3+3+(3+4)]/2=19, 超出目标函数的界,将结点 12 丢弃;在结点 13, 已确定路径 1-3-5-4, 路径长度为 1+2+3=6, 则目标函数值为[2×6+3+4+(3+6)]/2=14, 将结点 13 加入表 PT 中;
(9) 在表 PT 中选取目标函数值极小的结点 13 优先进行搜索;
(10) 依次处理结点 13 的每一个孩子结点。 在结点 14, 已确定路径 1-3-5-4-2, 路径长度为1+2+3+7=13, 则目标函数值为(2×13+3+3)/2=16, 最后从城市 2 回到城市 1, 路径长度为1+2+3+7+3=16, 由于结点 14 为叶子结点, 得到一个可行解, 其路径长度为 16;
(11) 在表 PT 中选取目标函数值极小的结点 10 优先进行搜索;
(12) 依次处理结点 10 的每一个孩子结点。 在结点 15, 已确定路径 1-3-4-2,路径长度1+4+7=12, 则目标函数值为[2×12+3+3+(2+3)]/2=18, 超出目标函数的界,将结点 15 丢弃;在结点 16, 已确定路径 1-3-4-5, 路径长度为 1+4+3=8, 则目标函数值为[2×8+3+2+(3+6)]/2=15, 将结点 16 加入表 PT 中;
(13) 在表 PT 中选取目标函数值极小的结点 16 优先进行搜索;
(14) 依次处理结点 16 的每一个孩子结点。 在结点 17, 已确定路径 1-3-4-5-2, 路径长度为1+4+3+9=17, 则目标函数的值为(2×17+3+3)/2=20, 超出目标函数的界,将结点 17 丢弃;
(15) 表 PT 中目标函数值均为 16, 且有一个是叶子结点 14, 所以, 结点 14 对应的解即是 TSP 问题的最优解, 搜索过程结束。 为了求得最优解的各个分量, 从结点 14开始向父结点进行回溯, 得到最优解为 1→3→5→4→2→1。
分支限界TSP(旅行商问题)
分支限界TSP(旅行商问题)文章来源地址https://www.toymoban.com/news/detail-480511.html

到了这里,关于分支限界TSP(旅行商问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 旅行商问题(TSP)及Python图论求解

    旅行商问题(Traveling Salesman Problem, TSP)是指给定一个城市的集合以及每两个城市之间的距离,找到一条经过每个城市恰好一次且路径最短的回路。 可以想象成一个旅行商要拜访多个城市,问他如何安排路线,使得行程最短。这个问题可能看起来简单,但是随着城市数量的增

    2024年02月12日
    浏览(35)
  • Hopfield神经网络求解旅行商(TSP)问题matlab代码

            1.网络结构         连续Hopfield神经网络(Continuous Hopfield Neural Network,CHNN)的拓扑结构和离散Hopfield神经网络的结构类似,如图11-1所示。连续Hopfield网络和离散Hopfield 网络的不同点在于其传递函数不是阶跃函数,而是连续函数。         与离散型Hopfield神经网络不

    2024年02月14日
    浏览(40)
  • 强化学习求解TSP:Qlearning求解旅行商问题(Traveling salesman problem, TSP)提供Python代码

    Q-learning是一种强化学习算法,用于解决基于奖励的决策问题。它是一种无模型的学习方法,通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策,该函数表示在给定状态下采取某个动作所获得的累积奖励。 Q-learning的训练过程如下: 1. 初

    2024年02月03日
    浏览(40)
  • 基于TSP(旅行商)问题的混合粒子群算法 附直接运行代码

    如果对粒子群一点都不知道的可以看看上文标准粒子群算法, 想看代码的直接去下面1.4标题 即可 链接:(105条消息) 自己对粒子群算法的理解(附matlab直接运行代码)(二维)_吕浩轩的博客-CSDN博客_二维粒子群算法​​​​​​h 好现在开始正文: 标准粒子群通过追随个体极值和

    2023年04月16日
    浏览(73)
  • python实现大规模邻域搜索(LNS)求解旅行商问题(TSP)

    参考《Handbook of Metaheuristics (Third Edition)》中的Large neighborhood search章节, 建议直接阅读英文原版 大规模邻域搜索(LNS) 属于超大邻域搜索(Very Large-Scale Neighborhood Search, VLNS)的一类 ,随着算例规模的增大,邻域搜索算法的邻域规模呈指数增长或者当邻域太大而不能在实际中明确搜索

    2024年02月08日
    浏览(40)
  • N皇后问题(分支限界法)

    在 n * n 格的棋盘上放置彼此不受攻击的 n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题等价于在 n * n 的棋盘上放置 n 个皇后,任何 2个皇后不放在同一行或同一列或同一斜线上。 设计一个解 n 皇后问题的队列式分支

    2024年02月04日
    浏览(33)
  • 分支限界法求0-1背包问题

    (1)画出解空间树 (2)Say如何剪枝 (3)求出最优解 假设物品的个数n=3,背包容量W = 30, 重量w =(16,15,15),价值v =(45,25,25) (1)队列式(FIFO)分支限界法:按照队列 先进先出 (FIFO)原则选取下一个结点为扩展结点。 (2)优先队列式分支限界法:按照优先队列中规定的

    2024年02月13日
    浏览(29)
  • 最小长度电路板排列问题(分支限界法)

    分支限界法求最佳排列。 具体细节见注释。

    2024年02月03日
    浏览(44)
  • 单源最短路径问题——分支限界法(Java)

    1.1 分支限界法求解目标 分支限界法与回溯法的不同求解目标: 回溯法的求解目标:找出解空间树中满足约束条件的 所有解 ; 分支限界法的求解目标:找出满足约束条件的 一个解 ,或是在满足约束条件的解中找出使用某一目标函数值达到极大或极小的解,即在某种意义下

    2024年02月06日
    浏览(35)
  • 最大团问题(MPP)之回溯法、分支限界法

    给定一个无向图 G = ( V , E ) G=(V, E) G = ( V , E ) , 其中 V V V 是图的顶点集, E E E 是图的边集: 完全子图:如果 U ⊆ V U⊆V U ⊆ V ,对任意的 u , v ∈ U u, v∈U u , v ∈ U , 有 ( u , v ) ∈ E (u, v)∈E ( u , v ) ∈ E , 则称 U U U 是 V V V 的完全子图 团: G G G 的完全子图 U U U 就是 G G G 的团。

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包