【发布时间】:2016-05-22 10:43:26
【问题描述】:
我正在尝试将此(项目的一小部分)编码为线性编程:
对于每个包 p,我们知道它的长度 (xDimp) 和宽度 (yDimp)。此外,我们还有卡车的长度 (xTruck) 和宽度 (yTruck)。所有的数字都是整数。
由于包裹的设计,它们在放入卡车时无法旋转。
卡车被表示为一个二维矩阵,只有 x 和 y 坐标。我们忽略了高度。
决策变量:
– pxy[p,x,y] = 包p在右上坐标(x, y)的单元格中
– pbl[p,x,y] = p 的左下角单元格有右上坐标(x, y)
如何编写这样的约束来设置 pbl 和 pxy 变量?我想我应该设置变量 pbl 以确保包裹适合卡车,并且 pxy 变量的值取决于 pbl 的值。
谢谢,
【问题讨论】:
-
不是家庭作业,而是我正在(自学)学习线性规划和 CPLEX 的项目的一小部分。
-
这个打包问题的无重叠约束不能用(连续)线性规划公式来说明。为此,您需要二进制变量。
-
我认为,应该可以用线性规划来完成。
-
这看起来像一个打包问题(大部分时间都是 NP-complete;可以看作是 bin-packing 的概括)。所以在假设这个问题是NP完全的(我认为)和P = / NP,没有线性程序(除了具有指数大小的模型)可以解决这个问题(矛盾证明)。正如 Erwin 所提到的,您可以解决二进制变量,但在这种情况下,您有一个整数/混合整数问题,这通常也是 NP-hard(但在实践中可能有效)!