3

(我已经更改了这个问题的细节以避免 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 完全问题的组合,尽管它们似乎都不合适。

是否有代表此类问题的模型?

4

2 回答 2

2

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

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

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

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

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

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

于 2010-08-23T08:19:21.903 回答
1

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

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

于 2010-08-23T10:26:22.113 回答