【问题标题】:Delivery optimization with limits有限制的交付优化
【发布时间】:2015-06-08 15:05:36
【问题描述】:

我有以下问题要解决:

  1. 有 N 个城市。他们每个人都有一些需要在实验室(labs)处理的测试样本。
  2. 有 M 个实验室。他们处理样本,但每个都有限制。
  3. 我们需要处理所有样本。
  4. 应使用距离优化 - 尝试在最近的实验室处理城市样本。

如果没有限制,这很容易 - 我们会为每个城市确定最近的实验室并用于处理样本。但是如果有容量限制,某个实验室有可能溢出,所以我们需要另找一个实验室来处理这个城市的样本(当然这个实验室会远一点)。

那么,问题是:如何按距离以最佳方式分配样本流且不溢出?

我相信这是一些众所周知的算法。请你至少告诉我它是怎么称呼的?

谢谢!

【问题讨论】:

    标签: algorithm optimization


    【解决方案1】:

    尝试将其视为bipartite graph,尝试将其视为maximize the flow

    将城市和实验室之间的距离从最近到最远排序,然后遍历列表并:

    1. x 样品从城市转移到实验室 - 那里x=min(max_lab_capacity, number_of_samples)
    2. 城市和实验室之间的边缘现已删除。如果实验室已满 - 那么实验室节点也会被删除。如果该城市已处理所有样本 - 它的节点将被删除。
    3. 重复 #1 和 #2,直到删除所有城市节点。

    【讨论】:

    • 感谢您的快速回答!这个算法很棒,但还有一个我忘了提的附加条件(更新了问题):我们不能将样本拆分到不同的实验室。因此,可以在城市和实验室之间只进行一次交付。
    • 另一方面,如果您使用相同的算法会发生什么,但是在构建图形时您排除了所有不符合要求的边(一个城市将只连接到实验室可以满足城市需求)。这样你就可以回到经典的最大流量问题......
    • 所以,问题是如何建立这样的图尊重最佳距离。例如,假设我们有实验室 L1 (10) 和 L2 (15)。此外,还有城市C1(7)、C2(8)、C3(2)、C4(5)。按距离排序后,我们有连接 C1 和 C2 -> L1,以及 C3 和 C4->L2。现在我们需要一些算法,它可以将 C2 重新链接到 L2 并将 C3 重新链接到 L1……如果有很多实验室,将会有不止一个解决方案。所以,我们还需要分析解决方案,并通过一些标准选择最好的一个......这个问题让我想起了“硬币问题”,当你需要选择不同价值的硬币来达到某个给定数量时。
    • 这似乎是“具有相对成本的一维装箱算法”。我们将体积(样本)打包到箱(实验室)中,每个实验室的每个样本的成本(距离)矩阵。因此,总成本应该最小化。
    • 我在 SO 添加了另一个问题,因为这是完全不同的问题 (stackoverflow.com/questions/30911736/…) 感谢您的回答!标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多