Algorithm 容器中具有预定义间隙的二维装箱
我有一个问题,就是如何在矩形容器中优化放置不同大小和数量的矩形对象。该问题可以完美地解决了二维装箱算法,但只有在空集装箱。对我来说,这几乎总是不可能的。我的容器可以有一个限制的地方,在那里不能放置任何物体。 当然,我不是第一个遇到这种问题的人,我希望有人已经为它找到了一个好的解决方案。任何东西都是好的:参考书、文章、代码片段等等。Algorithm 容器中具有预定义间隙的二维装箱,algorithm,bin-packing,Algorithm,Bin Packing,我有一个问题,就是如何在矩形容器中优化放置不同大小和数量的矩形对象。该问题可以完美地解决了二维装箱算法,但只有在空集装箱。对我来说,这几乎总是不可能的。我的容器可以有一个限制的地方,在那里不能放置任何物体。 当然,我不是第一个遇到这种问题的人,我希望有人已经为它找到了一个好的解决方案。任何东西都是好的:参考书、文章、代码片段等等。 形式算法优先于神经网络和这类东西 解决这个问题的一个可能方法是使用整数线性规划。有不同的模型,但这里是一个简单的模型(有点问题,但如果需要,您可以对此进行改进) 将
形式算法优先于神经网络和这类东西 解决这个问题的一个可能方法是使用整数线性规划。有不同的模型,但这里是一个简单的模型(有点问题,但如果需要,您可以对此进行改进) 将问题分为主问题和子问题,主问题如下所示:
minimize sum(p)
s.t.
for all i: sum[j] p[j]*count[j,i] >= n[i]
p[i] >= 0 (and integer, don't add this constraint)
其中:
是决策变量,决定将可用项目的特定“包装”到容器中的实例数量。显然有太多的信息需要提前列出,但它们可以动态生成p
是包装count[j,i]
包含项目j
的次数i
是我们想要项目n[i]
的次数i
- 约束条件是
,因为打包两个额外的项目是可以的,它允许我们使用更少的不同包装(否则,主问题将需要特殊的“故意次级”包装才能满足约束条件)=
- 如果使用解算器,则不应显式添加整数约束,因为整数解可能需要分数解中尚不需要的列
C
行的双重成本(不同种类的项目数量相同),并解决
maximize y.C
s.t.
1) for all i: y[i] <= n[i]
2) for all i: y[i] = sum[j] P[j] if j is a placement of item i
3) for all cells (a,b): sum[j] P[j] (if j covers a,b) <= 1
4) for all existing packings e: e.y <= sum(e) - 1
y >= 0 and integer
P boolean
最大化y.C
s、 t。
1) 对于所有i:y[i],根据基本算法,可能只需稍加调整即可将其从“普通矩形”更改为“带孔矩形”。你想用什么?事实上我还没有选一个,因为我不知道哪一个能以最好的方式适合我的目的。对我来说,这项任务似乎可以用改进的最大矩形算法来完成,但我不确定。从阅读到正确理解这项任务需要一些时间。谢谢。@Dmytro运气好吗?如果需要的话,我可以解释得更多