首先我想澄清一下,英语不是我的母语,所以请耐心等待 :)
我正在尝试仅使用一个容器(背包)来解决 3D 装箱问题,并且我对目标函数的制定有疑问。我有一个容器和一个包列表:
容器:
- 宽度
- 深度
- 高度
- 容量
- 三维矩阵
包裹:
- 宽度
- 深度
- 高度
- 位置 (X,Y,Z)
- 重量
- 位置因素
每个包裹都会有一个位置因子,它告诉我们要在什么位置装载包裹,因子范围从 1 到 5,1 表示包裹应该放在容器的前面,5 表示应该放在容器的后面容器。
现在我的目标函数是最大化集装箱上的空间,并且具有较大因素的包裹必须在集装箱的后部,而具有较低因素的包裹必须在卡车的前部。
如果我想最大化空间,我只需要最大化所有包裹体积的总和,但我应该将它与目标函数的惩罚结合起来,例如,当一个因子为 5 的包裹位于前面的容器。
我想通过排列成一行的相同大小的示例包来澄清一些事情
- 背面 5 1 5 4 4 4 3 3 2 2 正面
- 背面 5 5 4 4 4 3 3 2 1 2 正面
在第一个分发包中,您看到因子为 1 的包裹几乎在容器的后面,而在第二个分发中,因子为 1 的包裹位于应该在(前面)的位置附近,所以第二个分布更好。
问题是数据包有不同的大小,可以放在任何位置。我希望你能帮助我:D!