Providing an initial feasible solution to Gurobi can help reduce the overall solve time. A MIP start can be provided either by using the Start variable attribute or by loading a MIP start (.mst) or a solution (.sol) file.
It's possible to define only values for (a subset of) the binary and integer variables and let Gurobi attempt to compute feasible values for the remaining variables. This can be useful if a full start vector violates constraints by a small amount and is thus not accepted.
A related option is Variable hints. These values guide the solver throughout the solving process. If you know that a variable is likely to have a certain value in the solution, you can set the variable hint to help Gurobi find a solution.
Using Multiple MIP Starts
It is possible to provide multiple feasible starting solutions to Gurobi. This can be done either through our APIs or from our command-line tool.
From the APIs, you can supply multiple MIP Starts using the NumStart attribute and StartNumber parameter. For example, in our Python API, this could be achieved as follows:
model.NumStart = 2
# iterate over all MIP starts
for s in range(model.NumStart):
# set StartNumber
model.params.StartNumber = s
# now set MIP start values using the Start attribute, e.g.:
for v in model.getVars():
v.Start = <value>
When using our command-line tool, gurobi_cl, you can use the InputFile argument multiple times, e.g.,
gurobi_cl InputFile=mipstart1.mst InputFile=mipstart2.mst model.mps
With both approaches, Gurobi will try all supplied MIP starts and use the best one.
Completing Partial MIP Starts