如何在Gurobi中使用惰性参数
How to use lazy parameter in Gurobi
我想在我写的问题python中添加惰性参数并更改它。当我在 http://www.gurobi.com/documentation/7.5/ampl-gurobi/parameters.html 阅读手册中的惰性参数时,它说:
懒惰:
是否在二进制或整数变量问题的线性约束上遵守后缀 .lazy:
0 = 否(忽略 .lazy)
1 = 是(默认)
延迟约束用 1、2 或 3 的 .lazy 值表示,并且在找到对剩余约束可行的解决方案之前将被忽略。接下来会发生什么取决于 .lazy:
的值
1 ==> 如果另一个惰性约束切断了当前解决方案,该约束仍可能被忽略;
2 ==> 如果当前解决方案违反约束,此后将强制执行该约束;
3 ==> 今后将强制执行约束。:
我的目的是减轻求解器的负担。在众多参数中,lazy 似乎是一个值得尝试的好参数。我找不到那个的例子或用例。它适用于变量或约束还是特定类型的约束。还有“.lazy”对应什么?
正如 sascha 和 Erwin 所指出的,您正在阅读的文档是特定于 AMPL 的。
AMPL 是一个可用于定义优化问题的平台,独立于用于解决这些问题的求解器。然后,它将这些规格转换为适合用户选择的求解器的模型。它支持的求解器之一是 Gurobi,因此有一些特定于 AMPL 和 Gurobi 组合的文档。
如果您在 Python 中编程,您可能没有使用 AMPL,因此您可能需要查看 http://www.gurobi.com/documentation/7.5/refman/lazy.html。
简而言之:"lazy constraints" 是一种技巧,可以在完整模型定义需要大量约束时使用,但其中大多数不太可能改变解决方案。在这种情况下,您有时可以通过以下方法提高求解速度:
- 在没有 "lazy" 约束的情况下设置问题
- 解决这个问题
- 检查解决方案是否违反任何惰性约束
- 如果是,则仅添加实际违反的约束,然后重新求解。
- 重复直到找到满足所有惰性约束的解决方案。
根据文档,Gurobi 仅支持线性约束的惰性选项,但原则上该方法可用于其他类型的约束。
我想在我写的问题python中添加惰性参数并更改它。当我在 http://www.gurobi.com/documentation/7.5/ampl-gurobi/parameters.html 阅读手册中的惰性参数时,它说:
懒惰: 是否在二进制或整数变量问题的线性约束上遵守后缀 .lazy:
0 = 否(忽略 .lazy)
1 = 是(默认) 延迟约束用 1、2 或 3 的 .lazy 值表示,并且在找到对剩余约束可行的解决方案之前将被忽略。接下来会发生什么取决于 .lazy:
的值1 ==> 如果另一个惰性约束切断了当前解决方案,该约束仍可能被忽略;
2 ==> 如果当前解决方案违反约束,此后将强制执行该约束;
3 ==> 今后将强制执行约束。:
我的目的是减轻求解器的负担。在众多参数中,lazy 似乎是一个值得尝试的好参数。我找不到那个的例子或用例。它适用于变量或约束还是特定类型的约束。还有“.lazy”对应什么?
正如 sascha 和 Erwin 所指出的,您正在阅读的文档是特定于 AMPL 的。
AMPL 是一个可用于定义优化问题的平台,独立于用于解决这些问题的求解器。然后,它将这些规格转换为适合用户选择的求解器的模型。它支持的求解器之一是 Gurobi,因此有一些特定于 AMPL 和 Gurobi 组合的文档。
如果您在 Python 中编程,您可能没有使用 AMPL,因此您可能需要查看 http://www.gurobi.com/documentation/7.5/refman/lazy.html。
简而言之:"lazy constraints" 是一种技巧,可以在完整模型定义需要大量约束时使用,但其中大多数不太可能改变解决方案。在这种情况下,您有时可以通过以下方法提高求解速度:
- 在没有 "lazy" 约束的情况下设置问题
- 解决这个问题
- 检查解决方案是否违反任何惰性约束
- 如果是,则仅添加实际违反的约束,然后重新求解。
- 重复直到找到满足所有惰性约束的解决方案。
根据文档,Gurobi 仅支持线性约束的惰性选项,但原则上该方法可用于其他类型的约束。