如何在Gurobi中使用lazy参数

时间:2018-01-30 15:14:12

标签: python linear-programming gurobi

我想添加lazy参数并在我用python编写的问题中更改它。当我在http://www.gurobi.com/documentation/7.5/ampl-gurobi/parameters.html阅读有关惰性参数的手册时,它说:

懒: 是否在二元或整数变量问题的线性约束上使用后缀.lazy:

0 =否(忽略.lazy)

1 =是(默认) 惰性约束用.lazy值1,2或3表示,并且在找到对剩余约束可行的解决方案之前被忽略。接下来会发生什么取决于.lazy:

的值

1 ==>如果另一个惰性约束切断当前解决方案,则仍然可以忽略约束;

2 ==>如果当前解决方案违反了约束,则此约束将被强制执行;

3 ==>此后,约束将被强制执行。:

我的目标是解救求解器。在许多参数中,懒惰似乎是一个值得尝试的好东西。我找不到一个例子或用例。它是适用于变量或约束还是适用于特定类型的约束。 “.lazy”对应的是什么?

1 个答案:

答案 0 :(得分:0)

正如sascha和Erwin所指出的那样,您正在阅读的文档特定于AMPL。

AMPL是一个可用于定义优化问题的平台,与用于解决它们的求解器无关。然后,它将这些规范转换为适合用户选择的求解器的模型。它支持的解决方案之一是Gurobi,因此有一些特定于AMPL和Gurobi组合的文档。

如果您使用Python进行编程,则可能未使用AMPL,因此您可能希望改为使用http://www.gurobi.com/documentation/7.5/refman/lazy.html

简而言之:"懒惰约束"当完整模型定义需要大量约束时,可以使用这个技巧,但是大多数约束不太可能改变解决方案。在这种情况下,您有时可以通过以下方法提高解决方案的速度:

  • 设置问题而不使用" lazy"约束
  • 解决此问题
  • 检查解决方案是否违反任何延迟约束
  • 如果是,请仅添加实际违反的约束,然后重新解决。
  • 重复,直到找到满足所有延迟约束的解决方案。

根据文档,Gurobi仅支持线性约束的惰性选项,但原则上该方法可用于其他类型的约束。