首先,我想澄清一下,英语不是我的母语,所以请耐心等待一下:)
我试图解决3D装箱问题,只使用一个容器(背包),我对目标功能的制定有疑问。我有一个容器和一个包列表:
容器:
包装:
每个包装都有一个位置因子,告诉我们您要加载包装的位置,因子范围从1到5,1表示包装应放在容器的前面,而5位于容器的后面。
现在我的目标功能是最大化容器上的空间,并且具有更大因子的包装必须位于容器的后部,并且具有较低系数的包装在卡车的前部。
如果我想最大化空间,我只需要最大化所有包volumnes的总和,但是我应该将它与目标函数的惩罚结合起来,例如,当一个因子为5的包时定位容器的前部。
我想用一行排列的相同大小的示例包来澄清一些内容
在第一个分发包中,您看到因子1的包几乎位于容器的后面,而在第二个分发中,因子为1的包位于靠近容器的位置 应该是(前面),所以第二次分发更好。
问题是数据包的大小不同,可以放在任何位置。我希望你能帮助我:D!
答案 0 :(得分:0)
一种特定形式的目标函数取决于求解方法。
由于垃圾箱包装问题是NP难问题,我猜你会用一些启发式来解决它。在这种情况下,候选解决方案被设置为具有填充的位置(X,Y,Z)属性的所有包(P)。目标函数看起来像:
numbers = [f(n) for n in numbers]
所以你可以通过包因子来增加权重:最好的布局是从我理解的1到5的排序因子。它与当前布局之间的差异是你的系数(使用最小二乘):
F({P}) -> int