【问题标题】:Linear Programming - Constraints线性规划 - 约束
【发布时间】: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(但在实践中可能有效)!

标签: linear-programming


【解决方案1】:

这是装箱问题的一种变体,即在一个封闭矩形 (2BP) 中将多个不同宽度和高度的矩形进行二维包装。如果它们只允许旋转 90°,我们会遇到正交方向矩形包装问题,而在您的情况下,我们会遇到不可旋转的矩形包装问题。它的计算复杂度是 NP 难的,但并非不可行。 根据您的描述,问题已经离散化,将可能的位置限制在网格中,这意味着连续版本的最优值可能不再可用。

一种方法是提前计算出一定的冲突图,它代表你的搜索空间并保存有关矩形重叠的信息:

在哪里

每条边都代表一个冲突,每个节点都代表卡车内的一个可能位置。两个包 p 和 q 相交 iff

成对的。

现在,网格上的包装问题是冲突图 (MIS) 上的最大独立集问题,假设您想要最大化卡车上的包裹数量。反过来,MIS 具有以下 ILP 公式:

这是 MIS 的整数松弛,但仍然不适合分支定界求解方法。如果 CG 中的团,那么任何独立集最多只能从 C 中选择一个节点,因此使用以下约束:

由此产生的线性程序的变量数量呈指数增长。

为了更进一步,您可以尝试元约束满足方法。 首先,使用以下约束确保您的包裹在卡车内:

其次,使用一组析取约束来防止重叠:

从那时起,您可以开始制定元程序,如here 所述

我认为这应该足够开始了:-) 您可以在有关组合优化的文献中找到更多信息。

来源:

http://www.staff.uni-mainz.de/schoemer/publications/ESA03.pdf

https://kluedo.ub.uni-kl.de/frontdoor/index/index/docId/2046

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    相关资源
    最近更新 更多