Optimization 多路径旅行商优化

Optimization 多路径旅行商优化,optimization,cplex,traveling-salesman,Optimization,Cplex,Traveling Salesman,我试图用一个不完全图来解一个多路径旅行商的变量 编辑:根据@daniel_junglas的反馈更改了描述(两次) 换言之: 只有一名销售人员 销售人员只能访问每个城市一次 销售人员可以驾驶各种交通工具(如火车、汽车、轮船)。每种交通方式都会改变城市之间的旅行时间 销售人员可以改变城市之间的交通方式(收费),但不能改变城市内的交通方式。这一变化可以看作是这两个城市之间的又一个边缘,两者之间有着特定的关联权重 并非每个城市都可以通过各种交通方式到达(例如,只有一艘船可以到达D市) 该图不完整,因此

我试图用一个不完全图来解一个多路径旅行商的变量

编辑:根据@daniel_junglas的反馈更改了描述(两次)

换言之:

  • 只有一名销售人员
  • 销售人员只能访问每个城市一次
  • 销售人员可以驾驶各种交通工具(如火车、汽车、轮船)。每种交通方式都会改变城市之间的旅行时间
  • 销售人员可以改变城市之间的交通方式(收费),但不能改变城市内的交通方式。这一变化可以看作是这两个城市之间的又一个边缘,两者之间有着特定的关联权重
  • 并非每个城市都可以通过各种交通方式到达(例如,只有一艘船可以到达D市)
  • 该图不完整,因此并非所有城市都是连通的,但存在一条或多条哈密顿路径

根据示例:

  • 4个城市(1-4),每个节点有一个停车场(C)、火车站(T)、船只港口(B)
  • 以1C开始和结束
  • 每个城市都要参观一次
  • 没有从火车站到港口再到停车场的连接,只能在城外换车(例如1C到2T)
  • 每个链路都有一个与其相关联的权重,该权重基于距离、运输模式的速度和改变运输模式的时间惩罚
  • 示例路径:
    • 1C->2T->3T->4T->1C
    • 1C->2C->3T->4T->1C
我计划用协和式飞机/cplex解决这个问题

我试着用协和式飞机解决它。为此,我将每个平行边编码为与新节点相同的节点(a,a',a“”),但我找不到只应访问一个a节点的限制。我看到许多a对称TSP和多TSP解决方案,但没有一个符合我的要求

我的问题:我应该如何解决这个问题(教程链接、嵌入建议等),以找到恰好访问所有城市一次的最短路线?哪种工具对我有帮助

另外,我知道各种单一算法的解决方案,包括概率和精确。然而,我正在寻找一种结合了各种技术的工具,如cplex,希望能为我的特定数据获得更好的结果

我知道这个问题可能涉及面很广。为了改进我的问题,我愿意接受任何评论

古罗比有一个很好的例子,其中有一个交互式地图和示例代码。他们在解决与你描述的基本相同的问题,您只需要提供自己的输入位置和连接。

我不确定您是否可以创建一个表示您的模型的图形,并在该图形上解决一个普通TSP:如果节点之间有多条边,那么我们已经同意您可以删除任何边,但最便宜的边除外。如果您改为复制节点,则存在这样的问题:您不再希望访问所有节点,而只希望访问一组重复节点中的一个节点。TSP解算器无法解决这一问题


然而,你说你想解决协和式飞机/cplex。放弃协和式飞机的部分怎么样?你可以用MIP配方来治疗TSP。这应该很容易扩展,以包括您的附加约束。例如,您可以返回到多个边缘并添加条件,如“如果您开车进入城市A,那么您必须开车离开或额外支付N”。然后,您可以将其提供给CPLEX之类的通用MIP解算器。

在较高级别上,Concorde是TSP列生成(分支、价格和切割)的非常高效的实现

您当然可以为您的问题开发一个非常高效的列生成实现,其中路由将满足您的约束


马可·卢贝克有。是关于这个主题的参考资料。

你说的是
,但我的解决方案包括了每个节点。为什么这是个问题?这不是TSP的定义吗?或者您的问题是必须访问图中的某些节点,但其他节点是可选的?这会让人想起Steiner树的问题,也许有“Steiner版本”的TSP,你可以找到它的软件?顺便说一句,如果你有两个城市之间的多条路径,那么首先计算任意两个城市之间的最短路径,然后删除除这些最短路径以外的所有路径不是更容易吗。这将为您提供一个可以解决标准TSP的图表。@DanielJunglas根据您的反馈更新了描述。*很抱歉,在我的实现中,我使用了虚拟节点A',A'',等等,因为我不知道如何放入并行边缘*您是对的,我忘记添加传输模式限制。在这种情况下,您可以首先在本地进行优化,但在不断更改传输模式时会产生高昂的成本,谢谢,但这个示例似乎是一个普通的TSP实现。我的问题是关于扩展的。