【问题标题】:a variation of TSP : limit time, visit as many nodes as possibleTSP 的一种变体:限制时间,访问尽可能多的节点
【发布时间】:2014-11-14 10:32:31
【问题描述】:

让我们再次使用推销员上下文:

如果销售员不需要拜访所有客户,但有时间限制,他必须拜访尽可能多的客户。我们如何找到最佳路线?

一个稍微高级的版本是,假设每个客户都被标记为货币收益,因此我们的销售人员希望最大化他实际访问的那些客户的总货币收益,只要他在时间限制内完成访问他们

我试图搜索一些研究论文。但我发现的最接近的是关于 k-TSP 的工作,其中要求推销员在小于 k 跳的路径上最大化总增益。这是完全不同的,因为边缘时间成本不存在,或者只是 1。

有人知道关于这个问题的任何现有研究工作吗?

谢谢 杨

【问题讨论】:

  • 你提到的第二个变体听起来像奖品收集 TSP。
  • 第二个变化是几乎奖品收集 TSP -- PCTSP 通常不包括时间限制。这更像是一个只允许一辆车的奖品收集车辆路线问题 (VRP)。不确定这种变化是否出现在文献中,但可能。
  • 谢谢大家。 PCTSP 是重要参考
  • 您找到第一个变体的解决方案了吗?如果你这样做了,你能告诉我什么算法适合它。谢谢

标签: algorithm routing combinatorics traveling-salesman


【解决方案1】:

看看jsprit。它让你定义:

  • 有时间限制的旅行推销员,即在起点/站点位置的 earlyStart 和 latestArrival,
  • 每位客户访问的利润和
  • 考虑这些利润的目标函数。

因此jsprit决定了你需要访问的客户最多。考虑到运输成本和时间限制,您的利润。所有其他客户最终都会出现在未分配的工作列表中。请注意,jsprit 使用启发式方法来解决此类问题。

【讨论】:

  • Stefan:感谢您的指点。 2个问题:1)如果我对每个客户都有不同的利润,则需要对Service类进行子分类,对吗?目前 Service 没有 getProfit() 或类似的东西 2) 如果一个节点的利润非常大,我们可能会得到负循环。那么算法是否强制一个节点最多访问一次?
猜你喜欢
  • 1970-01-01
  • 2017-02-11
  • 2019-05-30
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多