我已按照所需顺序订购了一个拣配清单(要在仓库中挑选的物品清单)。每件商品都有宽度,长度和高度。当我首先报告拣配清单时,我必须选择一个包,以便将这些物品放在某处。包装还具有宽度,长度和高度(假设填充率= 100%)。拣配清单上的项目数量只能被整数整除。要回答的问题是;如果我想减少包的数量,我应该使用多少包?我如何知道包装顺序?(所以我知道每次开始报告拣配清单或开始新包装时要选择哪个包装?
对我来说,这些是一些变量和固定数字。
Item FIXED
Item Quantity FIXED
Item Width FIXED
Item Lenght FIXED
Item Height FIXED
Item volume FIXED
Package VARIABLE
Package Quantity VARIABLE
Package Width FIXED
Package Lenght FIXED
Package Height FIXED
Package Volume FIXED
Package fill rate FIXED
Package sequence VARIABLE
任何可以解决的人?
答案 0 :(得分:0)
这是一个称为Bin packing problem的一般问题。它有很多解决方案,但总体上是NP-hard problem,这意味着没有多项式解决方案。此外,您可能无法100%填写包裹。
大多数算法都试图找到最佳解决方案,但最快的解决方案是使用启发式方法。这些都是贪婪的算法,并产生适度有效的结果(例如,如果剩余项目,则不会有空箱少于半空)。
一本名为The Algorythm Design Manual的书写了关于这个问题的以下内容:
分析和实证结果表明“先适应减少” 是最好的启发式方法。按大小递减顺序对对象排序, 所以最大的对象是第一个,也是最小的。插入每个 逐个对象进入第一个有空间的垃圾箱。