逐步向线性编程实例添加约束

时间:2015-07-24 08:15:11

标签: linear-programming integer-programming

我想逐步解决线性规划问题,添加新的约束并使用双重单纯形将其解决为最优。虽然它是在求解器内部完成的,但我无法在GLPK,Clp或LPsolve的API中找到它。

我正在解决矩形包装约束的NP完全问题。我使用自定义分支定界算法和线性松弛。混合整数编程是不可能的:它增加了太多的变量(n ^ 2),并没有更严格,通常会做出错误的分支决策。我通过分支添加的约束而不是布尔变量来解决问题。

我目前有一个手写的求解器,它只处理有限的LP子集,并希望收紧松弛:我想使用真正的(开放式)LP求解器。例如,GLPK允许延迟约束,但似乎不允许分支,为每个问题添加不同的约束并在不破坏先前的基本因子分解的情况下解决它们。

如何使用这些解算器正确完成?

由于

修改 - 背景

我解决了硬运行时限制的问题,其中包括矩形包装约束。对于任何一对矩形,有四个析取约束,即R2的上/下/右/左R1 使用布尔变量(使用big-M)对其建模速度太慢(错误的分支选择+缓慢放松,即使自定义分支+可行解决方案之间的大量冗余):我需要直接分析析取约束,这很有效,但是我现在需要使用通用的LP求解器而不是我的自定义流求解器。

即。在回调中我想

  1. 生成新节点而不对整数变量进行分支
  2. 每个节点的不同的新约束

0 个答案:

没有答案