Try our new documentation site (beta).
GRBoptimizeasync
int | GRBoptimizeasync ( | GRBmodel | *model ) |
Optimize a model asynchronously. This routine returns immediately.
Your program can perform other computations while optimization
proceeds in the background. To check the state of the asynchronous
optimization, query the Status attribute
for the model. A value of IN_PROGRESS
indicates that the
optimization has not yet completed. When you are done with your
foreground tasks, you must call
GRBsync to sync your foreground
program with the asynchronous optimization task.
Note that the set of Gurobi calls that you are allowed to make while
optimization is running in the background is severely limited.
Specifically, you can only perform attribute queries, and only for a
few attributes (listed below). Any other calls on the running model,
or on any other models that were built within the same Gurobi
environment, will fail with error code
OPTIMIZATION_IN_PROGRESS
.
Note that there are no such restrictions on models built in other environments. Thus, for example, you could create multiple environments, and then have a single foreground program launch multiple simultaneous asynchronous optimizations, each in its own environment.
As already noted, you are allowed to query the value of the Status
attribute while an asynchronous optimization is in progress. The other
attributes that can be queried are:
ObjVal,
ObjBound,
IterCount,
NodeCount, and
BarIterCount.
In each case, the returned value reflects progress in the optimization
to that point. Any attempt to query the value of
an attribute not on this list will return an
OPTIMIZATION_IN_PROGRESS
error.
Return value:
A non-zero return value indicates that a problem occurred while optimizing the model. Refer to the Error Code table for a list of possible return values. Details on the error can be obtained by calling GRBgeterrormsg.
Arguments:
model: The model to optimize. Note that this routine only reports whether launching the asynchronous job ran into an error. Query the Status attribute to determine the result of the optimization (see the Attributes section for more information on querying attributes). The return value of GRBsync indicates whether the background optimization ran into an error.
Example usage:
error = GRBoptimizeasync(model); /* ... perform other compute-intensive tasks... */ error = GRBsync(model);