Rsymphony中的故意不可行线性程序

时间:2016-02-03 01:20:01

标签: r algorithm optimization linear-programming

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

  1. 通过Rsymphony_solve_LP

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

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

  6. 有关如何执行此操作的任何提示/技巧,而不仅仅是手动观察具有详细程度的解算器?

1 个答案:

答案 0 :(得分:0)

另一块板上的海报给出了一个很好的方法。我重新制定了MILP,以便我想要迭代的约束,乘以'调​​整参数'连续决策变量。我将与该决策变量相关联的惩罚项放入目标函数中,以尽可能少地放宽约束。效果应该是约束足够放松以使其可行,但不能超越。