Rsymphony 中的故意不可行线性规划
Intentional Infeasible Linear Program in Rsymphony
我正在使用 R 中的 Rsymphony
包进行混合整数程序。我希望能够迭代地放松我的约束之一,直到问题变得可行。为此,我希望能够:
通过Rsymphony_solve_LP
将MILP的约束矩阵,objective函数等发送到SYMPHONY求解器
如果 Rsymphony_solve_LP
returns 是一个可行的解决方案(或声明 是 一个可行的解决方案)那么我将终止求解,用更严格的约束重建我的约束矩阵,然后通过 Rsymphony_solve_LP
重新发送到求解器
如果Rsymphony_solve_LP
说这个问题不可行,我回溯到最后一个可行的约束矩阵并从那里解决。
任何 tips/tricks 关于如何做到这一点而不仅仅是手动观察解算器的详细信息?
不同板上的海报给出了一个很好的方法。我重新制定了 MILP,以便我要迭代的约束乘以 'tuning parameter' 连续决策变量。我会将与该决策变量关联的惩罚项放入 objective 函数中,以尽可能少地放松约束。效果应该是约束条件放宽到可行,但不能超过。
我正在使用 R 中的 Rsymphony
包进行混合整数程序。我希望能够迭代地放松我的约束之一,直到问题变得可行。为此,我希望能够:
通过
Rsymphony_solve_LP
将MILP的约束矩阵,objective函数等发送到SYMPHONY求解器
如果
Rsymphony_solve_LP
returns 是一个可行的解决方案(或声明 是 一个可行的解决方案)那么我将终止求解,用更严格的约束重建我的约束矩阵,然后通过Rsymphony_solve_LP
重新发送到求解器
如果
Rsymphony_solve_LP
说这个问题不可行,我回溯到最后一个可行的约束矩阵并从那里解决。
任何 tips/tricks 关于如何做到这一点而不仅仅是手动观察解算器的详细信息?
不同板上的海报给出了一个很好的方法。我重新制定了 MILP,以便我要迭代的约束乘以 'tuning parameter' 连续决策变量。我会将与该决策变量关联的惩罚项放入 objective 函数中,以尽可能少地放松约束。效果应该是约束条件放宽到可行,但不能超过。