Algorithm 寻找一个模型来表示这个问题,我怀疑它可能是NP完全的

Algorithm 寻找一个模型来表示这个问题,我怀疑它可能是NP完全的,algorithm,computer-science,theory,np-complete,Algorithm,Computer Science,Theory,Np Complete,(我改变了这个问题的细节,以避免NDA问题。我知道,如果照字面理解,有更好的方法来经营这家理论公司。) 有一组仓库,每个仓库能够储存和分销200种不同的产品,而a公司生产的产品可能总共有1000种。每个仓库储存200种产品,并分配订单,然后他们将从现有库存中填写这些订单 挑战在于每个仓库都需要自给自足。将有一个指定给仓库的任意数量的产品订单(通常为5-10个)。然后仓库包装订单所需的产品,并一起装运。对于仓库中不可用的任何项目,必须在订单发货之前将项目单独交付给仓库 因此,问题在于确定最佳仓库/

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

有一组仓库,每个仓库能够储存和分销200种不同的产品,而a公司生产的产品可能总共有1000种。每个仓库储存200种产品,并分配订单,然后他们将从现有库存中填写这些订单

挑战在于每个仓库都需要自给自足。将有一个指定给仓库的任意数量的产品订单(通常为5-10个)。然后仓库包装订单所需的产品,并一起装运。对于仓库中不可用的任何项目,必须在订单发货之前将项目单独交付给仓库

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

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

目标是使用历史数据,以尽量减少未来单独订购产品的数量。一旦仓库以某种方式建立起来,软件就会确定哪个仓库能够以最小的开销处理订单

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


是否存在表示此类问题的模型?

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

  • 预测每个仓库应该预购什么
  • 为订单获取最佳仓库
对于第一个问题,我向你们指出:这几乎是同一个问题,已经提出了很好的解决方案。(我的数据挖掘手册在家里,我记不起谷歌的确切关键词,抱歉。试试“数据挖掘时间序列”)

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

  • 设置单独订购项目的成本
  • 设置成本,例如,idk,与客户的距离
  • 将已拥有产品的成本设置为0
  • 制定购买产品的规则:没有就买,有就买
  • 制定规则以获取所有产品:foreach产品,上面的规则
  • 获取此规则的成本
  • 轻轻地让Prolog获得解决方案。如果还不够好,多问一些

如果您不想使用Prolog,那么有几个约束库。仅google“constraint library

问题的第一部分(经常将项目排序在一起)有时被称为共现问题,并且是数据挖掘文献的一大部分。(我记得这个问题是NP问题,但有相当好的近似算法)

一旦您有了满意的共现数据,您仍然需要将项目分配给仓库。这有点像集合覆盖问题,但不完全一样。这个问题是NP难的。

你说的“模型”是什么意思?(我的意思是,你在寻找什么样的答案?一个你可以使用算法的著名问题的简化?或者线性/整数规划?或者其他什么?)我的意思是“旅行推销员”问题可以被视为真实问题的模型。这只是一个一般性的、经过充分研究的comp-sci问题,符合我目前的工作。不一定有一个理想的答案,但只是为了不重复(可能)多年的思考/研究。
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)