The current MIP start vector. The MIP solver will attempt to build an
initial solution from this vector when it is available. Note that the
start can be partially populated -- the MIP solver will attempt to
fill in values for missing start values. If you wish to leave the
start value for a variable undefined, you can either avoid setting the
Start attribute for that variable, or you can set it to a
undefined value (
GRB_UNDEFINED in C and C++,
GRB.UNDEFINED in Java, .NET, and Python).
If the Gurobi MIP solver log indicates that your MIP start didn't produce a new incumbent solution, note that there can be multiple explanations. One possibility is that your MIP start is infeasible. Another, more common possibility is that one of the Gurobi heuristics found a solution that is as good as the solution produced by the MIP start, so the MIP start solution was cut off. Finally, if you specified a partial MIP start, it is possible that the limited MIP exploration done on this partial start was insufficient to find a new incumbent solution. You can try setting the SubMIPNodes parameter to a larger value if you want Gurobi to work harder to try to complete the partial start.
If you want to diagnose an infeasible MIP start, you can try fixing the variables in the model to their values in your MIP start (by setting their lower and upper bound attributes). If the resulting MIP model is infeasible, you can then compute an IIS on this model to get additional information that should help to identify the cause of the infeasibility.
Note that deleting variables from your model will cause several attributes to be discarded (MIP starts, variables hints, and branch priorities). If you'd like them to persist, your program will need to repopulate them after deleting the variables and making a subsequent model update call.
Only affects MIP models.
For examples of how to query or modify attributes, refer to our Attribute Examples.