【问题标题】:Looking for a model to represent this problem, which I suspect may be NP-complete寻找一个模型来表示这个问题,我怀疑这可能是 NP 完全的
【发布时间】:2010-08-23 06:30:13
【问题描述】:

(我已更改此问题的细节以避免 NDA 问题。我知道,如果从字面上理解,有更好的方法来经营这家理论上的公司。)

有一组仓库,每个仓库都能够存储和分发 200 种不同的产品,而 A 公司可能生产 1000 种产品。每个仓库都备有 200 种产品,并分配了订单,然后从他们手头的库存中完成。

挑战在于每个仓库都需要自给自足。将有一个任意数量的产品(通常为 5-10 个)的订单,该订单被分配到一个仓库。然后,仓库为订单打包所需的产品,并将它们一起运送。对于仓库中没有的任何物品,必须先将物品单独交付到仓库,然后才能发货。

因此,问题在于确定最佳仓库/产品配置,以便打包尽可能多的订单,而无需订购和等待单个物品。

例如(使用每个由一个字母表示的产品,以及能够储存 5 个产品线的仓库):

Warehouse 1: [A, B, C, D, E]
Warehouse 2: [A, D, F, G, H]

Order: [A, C, D] -> Warehouse 1
Order: [A, D, H] -> Warehouse 2
Order: [A, B, E, F] -> Warehouse 1 (+1 separately ordered)
Order: [A, D, E, F] -> Warehouse 2 (+1 separately ordered)

我们的目标是使用历史数据来尽量减少将来单独订购的产品数量。一旦以某种方式设置了仓库,软件就会确定哪个仓库可以以最小的开销处理订单。

这立即让我觉得这是一个机器学习风格的问题。它也似乎是某些众所周知的 NP 完全问题的组合,尽管它们似乎都不适合。

有代表这类问题的模型吗?

【问题讨论】:

  • “模型”是什么意思? (我的意思是,你在寻找什么样的答案?简化一些你可以使用算法解决的众所周知的问题?或者线性/整数程序?或者其他什么?)
  • 我的意思是“旅行推销员”问题可以被视为实际问题的模型。只是一个通用且经过充分研究的 comp-sci 问题,它适合我正在做的相当好的事情。不一定有一个理想的答案,但只是为了不重复(可能)多年的思想/研究的努力。

标签: algorithm computer-science theory np-complete


【解决方案1】:

如果我理解正确,您必须将问题分开:

  • 预测每个仓库应该预购什么
  • 为订单获取最佳仓库

对于第一个问题,我将您指向netflix prize:这几乎是相同的问题,并且已经提出了很好的解决方案。 (我的数据挖掘手册在家里,我不记得谷歌的精确关键字,对不起。试试“数据挖掘时间序列”)

对于第二个,这是 Prolog 的问题。

  • 设置单独订购商品的费用
  • 设置成本,idk,接近客户
  • 将已经拥有该产品的成本设置为 0
  • 制定获得产品的规则:没有就买,有就买
  • 制定获取所有产品的规则:foreach product, rule above
  • 获取此规则的成本
  • 请 Prolog 寻求解决方案。如果还不够好,请多问。

如果您不想使用 Prolog,可以使用几个约束库。只需谷歌“约束库<insert your programming language here>”

【讨论】:

    【解决方案2】:

    问题的第一部分(哪些项目经常一起排序)有时被称为共现问题,是数据挖掘文献的重要组成部分。 (我记得问题出在 NP 上,但是有相当不错的近似算法)。

    获得满意的共现数据后,您仍然需要将项目分配到仓库。这有点像集合覆盖问题,但不完全相同。这个问题是 NP 难的。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2019-04-21
      • 1970-01-01
      • 2010-09-23
      • 2011-03-08
      • 2014-10-07
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多