UpdateMode
UpdateMode
更改延迟更新的行为类型: | int | |
---|---|---|
默认值: | 1 | |
最小值: | 0 | |
最大值: | 1 |
确定如何处理新添加的变量和线性约束。默认设置(1)允许您立即使用新的变量和约束来构建或修改模型。设置为0需要调用更新
才能使用。
由于绝大多数程序从不查询Gurobi,以了解它们所构建的优化模型的细节,因此默认设置通常不需要调用更新
,或甚至意识到我们的细节懒惰的更新处理模型修改的方法。但是,当您试图查询已修改的模型信息时,这些细节将会显示出来。
在Gurobi接口中,模型修改(绑定更改、右侧更改、目标更改等)被放置在一个队列中。这些排队的修改被应用到模型有三次:当您调用更新
,当你呼唤优化
或者当你打电话的时候写
将模型写入磁盘。当您查询有关模型的信息时,结果将依赖于两者是否那个信息被修改了当这是修改后的。特别是,无论在什么环境下UpdateMode
如果修改在队列中,您将在修改之前获得结果。
为了进一步扩展这一点,所有属性修改实际上都放在一个队列中。这包括传统上可能不被视为模型一部分的属性,包括变量分支优先级、约束基础状态等。如果后续的修改仍在队列中,查询这些属性的值将返回它们以前的值。
将参数更改为0的唯一潜在好处是,在不寻常的情况下,此设置可能允许simplex在模型修改后更积极地使用warm-start信息。
如果要更改此参数,则需要在创建Gurobi环境后立即进行设置。
注意,您仍然需要调用更新
修改SOS约束、二次约束或一般约束上的属性。
有关如何查询或修改不同api中的参数值的示例,请参阅参数的例子.