Rsymphony 中的故意不可行线性规划

Intentional Infeasible Linear Program in Rsymphony

我正在使用 R 中的 Rsymphony 包进行混合整数程序。我希望能够迭代地放松我的约束之一,直到问题变得可行。为此,我希望能够:

  1. 通过Rsymphony_solve_LP

  2. 将MILP的约束矩阵,objective函数等发送到SYMPHONY求解器
  3. 如果 Rsymphony_solve_LP returns 是一个可行的解决方案(或声明 一个可行的解决方案)那么我将终止求解,用更严格的约束重建我的约束矩阵,然后通过 Rsymphony_solve_LP

  4. 重新发送到求解器
  5. 如果Rsymphony_solve_LP说这个问题不可行,我回溯到最后一个可行的约束矩阵并从那里解决。

任何 tips/tricks 关于如何做到这一点而不仅仅是手动观察解算器的详细信息?

不同板上的海报给出了一个很好的方法。我重新制定了 MILP,以便我要迭代的约束乘以 'tuning parameter' 连续决策变量。我会将与该决策变量关联的惩罚项放入 objective 函数中,以尽可能少地放松约束。效果应该是约束条件放宽到可行,但不能超过。