具有最大日长和特定节点开始/结束日的旅行商问题

问题描述

旅行商问题 (TSP) 表述如下:

  • 给定一个有向图 G = (V,E),其中 V = {1,...,n} 是一组节点,E
  • 还让每个弧 e = (i,j) 被分配一个数字 c[i,j],这是弧 e 的长度。
  • 问题是找到一条最短长度的闭合路径,只通过 G 的每个节点一次。

问题的一些额外限制/修改

  • “推销员”每天在同一个节点(比如节点 1)开始和结束。
  • 销售员每天最多可以工作 10 小时。
  • 销售员到达节点后,必须执行一些工作,每个节点的工作量将在 1-4 小时之间变化。在开始/结束节点(节点 1)不需要做任何工作。
  • 销售员可以多次通过同一个节点,但任何重复的节点访问都不需要任何额外的工作(即销售员只是在前往下一个节点的途中通过节点)。根据节点的地理位置,销售员很可能多次穿越一个节点。

任何人都可以向我指出此问题的现有解决方案吗?最好使用 MiniZinc(我最近完成了 coursera 课程),但也可能会解释 Python 解决方案。

解决方法

TSP in AMPL

这是我使用的版本,它是用 AMPL(另一种数学语言)编写的,您可以轻松地将其转换为 minizinc, 并添加额外的约束