【问题标题】:set covering in shipments between cities设置覆盖城市之间的出货量
【发布时间】:2013-05-30 18:44:08
【问题描述】:

在不同的城市有许多仓库存放不同的产品。每个仓库可能会保存许多单位的产品,例如(芝加哥的仓库保存 14 单位的 A 产品、20 单位的 B 产品、0 单位的 C 等)。还有一个订单列表(包括目的地城市和所需产品的数量)。我需要获得的是在完成所有订单时的最小发货数量(城市之间唯一对的最小数量)。这些城市之间的距离并不重要。

澄清一下:示例输入如下所示:

WAREHOUSES

LOCATION | PRODUCT | AMOUNT
---------+---------+-------
Chicago  |   p1    |   14 
Chicago  |   p2    |    3
New York |   p1    |    2  
New York |   p3    |    7
Dallas   |   p2    |    3


ORDERS

DESTINATION | PRODUCT | AMOUNT
------------+---------+-------
Houston     |   p1    |   12 
Phoenix     |   p1    |    4
Houston     |   p3    |    2  
Detroit     |   p2    |    3
Phoenix     |   p2    |    2

和输出:

LOCATION | DESTINATION | PRODUCT | AMOUNT
---------+-------------+---------+-------
Chicago  | Houston     |    p1   |   12
Chicago  | Phoenix     |    p1   |    2
New York | Phoenix     |    p1   |    2
Chicago  | Phoenix     |    p2   |    2
Dallas   | Detroit     |    p2   |    3
New York | Houston     |    p3   |    2

and number of unique pairs is: 5

该问题与此处发现的问题非常相似:Algorithm to Minimize Number of Shipments from Multiple Warehouses,但是,它没有考虑订购多件特定产品的可能性以及存在多个订单的事实。

对我来说,它看起来像是两种问题的混合体:集合覆盖和运输问题。有没有什么方法可以在不使用贪心算法的情况下解决这个任务?或者我只是遗漏了一些东西,可以通过简单的集合覆盖来解决?

【问题讨论】:

    标签: algorithm optimization


    【解决方案1】:

    如果您想要一个精确的解决方案,标准方法是将其建模为整数程序 (IP),然后使用 IP 求解器(例如 CBCGurobi 等)。如果您对启发式解决方案感到满意,simulated annealing 很容易实现。

    【讨论】:

      【解决方案2】:

      也许您可以根据您的问题创建一个二分图,并将其转换为具有多个源的最大流。那么有一些具有多项式时间常数的算法吗?在这里阅读:http://en.m.wikipedia.org/wiki/Bipartite_graph

      【讨论】:

        【解决方案3】:

        我没有一个完整的解决方案,但您可以通过单独考虑每个产品来简化它。

        除非您错误地陈述了问题并表示允许订单包含两种不同的产品。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-09
          • 1970-01-01
          • 2015-04-25
          • 2011-03-25
          • 2011-08-12
          • 2021-04-26
          • 2019-08-19
          相关资源
          最近更新 更多