【问题标题】:The Traveling Salesman as Socialite旅行推销员 饰演 Socialite
【发布时间】:2015-01-10 17:29:21
【问题描述】:

我有一个旅行推销员问题,有一些额外的限制。 (注意:这不是家庭作业问题,我已经将其表述为一个抽象问题。)

给定具有特定开始时间和结束时间的特定日期的活动列表,最大化参加活动数量的最佳路线是什么?假设推销员/社交名流必须待到每场活动结束。虽然普通人可能会盯着列表并解决这个问题,但社交名流每晚会收到多达 20 个活动的邀请。

如何解决这样的问题?到目前为止,我已经调查了 Google Maps 和 ArcGIS 路线规划器的路线 API,但问题超出了他们的能力范围。

【问题讨论】:

  • 有人可以告诉我为什么这会被否决吗?如果它在错误的地方,我不介意重新标记。
  • 我认为这不是地点问题,而是您要求一些离题的问题。看这里:stackoverflow.com/help/on-topic(题外话的第 4 点。要求工具或库是题外话)
  • 很好。我已经改写了。但作为记录,我认为这是一个愚蠢的限制,因为我在 StackOverflow 上发现了无数很棒的特定工具推荐。有时它们甚至来自工具本身的作者。我认为该规则的目的是避免“我应该使用什么 MVC 框架?”问题。这个问题不太可能引发一场圣战。
  • 你没有错。你的问题比“什么 MVC 框架”更精确......你刚刚问为什么不赞成,我给了你一个可能的理由。而且很难查看问题并将其与您的问题进行比较。规则改变。这些工具推荐问题中的大多数都是旧的(或者至少是我看到的那些)。也许那时的堆栈不同......

标签: google-maps gis traveling-salesman


【解决方案1】:

我不明白这与 GIS 有什么关系。但如果唯一的目标是最大化参加的事件数量(而不是最小化行进的距离),它可以建模为线性整数规划问题并解决。

目标函数:最大 z = x(1) + x(2) + .... + x(N)

约束:

对于所有 x(i):x(i) = 0 或 1

对于所有 x(i), x(j) 其中 i != j: M.x(i).E(i) + T(i,j)

x(i) 如果参加第 i 个事件,则为 1,否则为 0。 S(i) 和 E(i) 表示事件的开始和结束时间,以一天中的小时为单位。例如,如果列表中的第 5 个事件从上午 10 点开始并在上午 11.30 结束,则 S(5) 为 10,E(5) 为 11.5。 T(i, j) 是举办事件 i 和事件 j 的地点之间的旅行时间。 M 是一个很大的任意缩放常数。

目标函数最大化参加的活动数量。第一个约束指定每个事件要么参加,要么不参加。第二个约束确保如果参加两个活动,则社交名流有足够的时间在第一个参加活动的结束时间和第二个参加活动的开始时间之间旅行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 2015-04-28
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多