将192个物品分成包装(每个包装最多12个),同时最小化总表面积

时间:2012-07-18 19:10:34

标签: loading mathematical-optimization bin pallet

我正在尝试解决以下问题。 鉴于192个具有指定长度和宽度的项目,我想找到一个包装顺序,以最小化总表面积。这些项目都具有相同的高度(未指定)。每个包装不能包含超过12个物品,并且由于物品的尺寸,不可能在同一层中存储多于1个物品。如果项目的宽度和长度不超过下方项目的宽度和长度,则只能堆叠在另一项目的顶部。

目标是最小化总表面积,作为最大物体的表面(在底部)。

我发现了大量有关托盘和装箱装载的文献,但我无法弄清楚我需要什么。以下是我的想法:

1)选择具有最大表面(宽度*长度)的项目i并将其放置在堆栈j的底部。

2)选择具有第二大表面的项目i

a)如果其宽度和高度不超过堆叠j的底部项目的宽度和高度,请将其放置在堆栈中的底部项目顶部j = 1

b)如果其宽度和高度确实超过了堆叠j的底部项目的宽度和高度,请旋转该项目。如果它适合,将它放在堆栈j = 1的底部项目的顶部。

c)如果旋转物品的宽度和高度超过堆叠j的底部物品的宽度和高度,则将其放置在堆栈底部j + 1 = 2

3)选择具有第三大表面的项目并重复步骤a,b和c

依旧......

任何评论或提示?我不知道这是否会产生(最佳)解决方案。

1 个答案:

答案 0 :(得分:1)

只是思考的一个提示:“可以堆叠在上面”约束定义了项目的部分排序。部分排序可以通过拓扑排序表示为图形。

现在,您可以考虑从每个项目开始的路径,长度不超过12个。可以尝试通过从图形中迭代删除这些路径直到图表耗尽来尝试暂定解决方案。 (当您删除路径时,您将必须修复具有与其共同的项目的其他路径。)

根据路径表达的问题可能比用节点表达的问题更容易解决。

必须解决一个问题:在删除路径时,它是否总是具有最大长度,或者更短的路径能否产生更好的全局解决方案?