1

首先我想澄清一下,英语不是我的母语,所以请耐心等待 :)

我正在尝试仅使用一个容器(背包)来解决 3D 装箱问题,并且我对目标函数的制定有疑问。我有一个容器和一个包列表:

容器:

  • 宽度
  • 深度
  • 高度
  • 容量
  • 三维矩阵

包裹:

  • 宽度
  • 深度
  • 高度
  • 位置 (X,Y,Z)
  • 重量
  • 位置因素

每个包裹都会有一个位置因子,它告诉我们要在什么位置装载包裹,因子范围从 1 到 5,1 表示包裹应该放在容器的前面,5 表示应该放在容器的后面容器。

现在我的目标函数是最大化集装箱上的空间,并且具有较大因素的包裹必须在集装箱的后部,而具有较低因素的包裹必须在卡车的前部。

如果我想最大化空间,我只需要最大化所有包裹体积的总和,但我应该将它与目标函数的惩罚结合起来,例如,当一个因子为 5 的包裹位于前面的容器。

我想通过排列成一行的相同大小的示例包来澄清一些事情

  1. 背面 5 1 5 4 4 4 3 3 2 2 正面
  2. 背面 5 5 4 4 4 3 3 2 1 2 正面

在第一个分发包中,您看到因子为 1 的包裹几乎在容器的后面,而在第二个分发中,因子为 1 的包裹位于应该在(前面)的位置附近,所以第二个分布更好。

问题是数据包有不同的大小,可以放在任何位置。我希望你能帮助我:D!

4

1 回答 1

0

目标函数的特定形式取决于求解方法。

由于装箱问题是 NP 难题,我想您将使用一些启发式方法来解决它。在这种情况下,候选解决方案由所有具有填充位置 (X,Y,Z) 属性的包 (P) 组成。目标函数如下所示:

F({P}) -> int

因此,您可以通过包装因子添加其结果的权重:据我所知,最佳布局是从 1 到 5 的排序因子。它和当前布局之间的区别是你的系数(使用最小二乘):

ideal:   back 5 5 4 4 4 3 3 2 2 1 front
current: back 5 1 5 4 4 4 3 3 2 2 front 
coefficient: (5-5)^2 + (5-1)^2 + ... + (1-2)^2
于 2015-09-12T18:03:35.327 回答