Determines how newly added variables and linear constraints are
handled. The default setting (1) allows you to use new variables and
constraints immediately for building or modifying the model. A
setting of 0 requires you to call
update before these can be
Since the vast majority of programs never query Gurobi for details
about the optimization models they build, the default setting
typically removes the need to call
update, or even be aware of
the details of our lazy update approach for handling model
modifications. However, these details will show through when you try
to query modified model information.
In the Gurobi interface, model modifications (bound changes,
right-hand side changes, objective changes, etc.) are placed in a
queue. These queued modifications are applied to the model at three
times: when you call
update, when you call
when you call
write to write the model to disk. When you
query information about the model, the result will depend on both
whether that information was modified and when
it was modified. In particular, no matter what setting
UpdateMode you use, if the modification is sitting in the
queue, you'll get the result from before the modification.
To expand on this a bit, all attribute modifications are actually placed in a queue. This includes attributes that may not traditionally be viewed as being part of the model, including things like variable branching priorities, constraint basis statuses, etc. Querying the values of these attributes will return their previous values if subsequent modifications are still in the queue.
The only potential benefit to changing the parameter to 0 is that in unusual cases this setting may allow simplex to make more aggressive use of warm-start information after a model modification.
If you want to change this parameter, you need to set it as soon as you create your Gurobi environment.
Note that you still need to call
update to modify an attribute
on an SOS constraint, quadratic constraint, or general constraint.
For examples of how to query or modify parameter values from our different APIs, refer to our Parameter Examples.