Optimization 多路径旅行商优化
我试图用一个不完全图来解一个多路径旅行商的变量 编辑:根据@daniel_junglas的反馈更改了描述(两次) 换言之:Optimization 多路径旅行商优化,optimization,cplex,traveling-salesman,Optimization,Cplex,Traveling Salesman,我试图用一个不完全图来解一个多路径旅行商的变量 编辑:根据@daniel_junglas的反馈更改了描述(两次) 换言之: 只有一名销售人员 销售人员只能访问每个城市一次 销售人员可以驾驶各种交通工具(如火车、汽车、轮船)。每种交通方式都会改变城市之间的旅行时间 销售人员可以改变城市之间的交通方式(收费),但不能改变城市内的交通方式。这一变化可以看作是这两个城市之间的又一个边缘,两者之间有着特定的关联权重 并非每个城市都可以通过各种交通方式到达(例如,只有一艘船可以到达D市) 该图不完整,因此
- 只有一名销售人员
- 销售人员只能访问每个城市一次
- 销售人员可以驾驶各种交通工具(如火车、汽车、轮船)。每种交通方式都会改变城市之间的旅行时间
- 销售人员可以改变城市之间的交通方式(收费),但不能改变城市内的交通方式。这一变化可以看作是这两个城市之间的又一个边缘,两者之间有着特定的关联权重
- 并非每个城市都可以通过各种交通方式到达(例如,只有一艘船可以到达D市)
- 该图不完整,因此并非所有城市都是连通的,但存在一条或多条哈密顿路径
- 4个城市(1-4),每个节点有一个停车场(C)、火车站(T)、船只港口(B)李>
- 以1C开始和结束
- 每个城市都要参观一次
- 没有从火车站到港口再到停车场的连接,只能在城外换车(例如1C到2T)李>
- 每个链路都有一个与其相关联的权重,该权重基于距离、运输模式的速度和改变运输模式的时间惩罚
- 示例路径:
- 1C->2T->3T->4T->1C
- 1C->2C->3T->4T->1C
我知道这个问题可能涉及面很广。为了改进我的问题,我愿意接受任何评论古罗比有一个很好的例子,其中有一个交互式地图和示例代码。他们在解决与你描述的基本相同的问题,您只需要提供自己的输入位置和连接。我不确定您是否可以创建一个表示您的模型的图形,并在该图形上解决一个普通TSP:如果节点之间有多条边,那么我们已经同意您可以删除任何边,但最便宜的边除外。如果您改为复制节点,则存在这样的问题:您不再希望访问所有节点,而只希望访问一组重复节点中的一个节点。TSP解算器无法解决这一问题
然而,你说你想解决协和式飞机/cplex。放弃协和式飞机的部分怎么样?你可以用MIP配方来治疗TSP。这应该很容易扩展,以包括您的附加约束。例如,您可以返回到多个边缘并添加条件,如“如果您开车进入城市A,那么您必须开车离开或额外支付N”。然后,您可以将其提供给CPLEX之类的通用MIP解算器。在较高级别上,Concorde是TSP列生成(分支、价格和切割)的非常高效的实现 您当然可以为您的问题开发一个非常高效的列生成实现,其中路由将满足您的约束
马可·卢贝克有。是关于这个主题的参考资料。你说的是
,但我的解决方案包括了每个节点。为什么这是个问题?这不是TSP的定义吗?或者您的问题是必须访问图中的某些节点,但其他节点是可选的?这会让人想起Steiner树的问题,也许有“Steiner版本”的TSP,你可以找到它的软件?顺便说一句,如果你有两个城市之间的多条路径,那么首先计算任意两个城市之间的最短路径,然后删除除这些最短路径以外的所有路径不是更容易吗。这将为您提供一个可以解决标准TSP的图表。@DanielJunglas根据您的反馈更新了描述。*很抱歉,在我的实现中,我使用了虚拟节点A',A'',等等,因为我不知道如何放入并行边缘*您是对的,我忘记添加传输模式限制。在这种情况下,您可以首先在本地进行优化,但在不断更改传输模式时会产生高昂的成本,谢谢,但这个示例似乎是一个普通的TSP实现。我的问题是关于扩展的。