Different MIP start outputs
OngoingHi, I'm trying to give gurobi a MIP Start after my first optimization step. I set the Start to be the solution of every variable:
for v in m.getVars():
v.Start = v.X
For any new variable created after the first optimize(), I also set the Start attribute. Then I call optimize again and get this output:
MIP start produced solution with objective 3736.6 (0.12s)
Loaded MIP start with objective 3736.6
But sometimes I just see:
Loaded MIP start with objective 3736.6
So what is difference between the two outputs? What output should I see if all variables of the model have a Start?
Additional questions:
- There seems to be an implicit Start-vector for all variables after the first optimize() but I can delete it with model.reset(), is this correct?
- Is the parameter StartNodeLimit considered for full (non-partial) MIP Starts?
Thanks in advance!
-
What do you mean by "sometimes you just see"? You are doing the exact same thing and sometimes in the Gurobi log the extra line is printed and sometimes not?
Gurobi by default will try to use as much as possible from a previous run of the model for the current run. It will even store the tree. However, there are many changes to a model that make the tree invalid, so this hot start is not always possible. However, trying to use a previous solution for a new run and a slightly modified model is always possible. So Gurobi tries this already and it will report if it is feasible or not. So the line "MIP start produced solution with objective" comes from one of these tries of Gurobi to use a solution from a previous run.
-
There seems to be an implicit Start-vector for all variables after the first optimize() but I can delete it with model.reset(), is this correct?
As I said, Gurobi tries to use as much as possible, not only the best solution. If you call reset() all the information will be discarded and also the Start vector will be gone. If you only want to discard the solution, you can set the values of the start attribute to a special undefined value. Please see here for more details.
- Is the parameter StartNodeLimit considered for full (non-partial) MIP Starts?
No, this is only used for completing a partial MIP start.
Best,
Sonja
0 -
There seems to be an implicit Start-vector for all variables after the first optimize() but I can delete it with model.reset(), is this correct?
-
> What do you mean by "sometimes you just see"?
I had a programming mistake that probably led to sometimes making a full and sometimes a partial MIP start.
Thanks for the other answers. I still have some remaining questions:
- So "MIP start produced solution with objective 3736.6 (0.12s)" is only printed by Gurobi when it found an initial solution from a partial MIP start?
- After the first optimize(), Gurobi has an internal MIP start that is different from the one you can set via variable.Start. Is this correct?
0 -
hello!
I use the warm start feature of Gurobi when solving MILP problems. I don't really understand what the output of the solution means. The following is the log of my optimization problem:
Optimize a model with 193613 rows, 219648 columns and 1727393 nonzerosModel fingerprint: 0xb9d828e5Variable types: 137280 continuous, 82368 integer (82368 binary)Coefficient statistics:Matrix range [1e-01, 1e+03]Objective range [4e+00, 1e+05]Bounds range [3e-02, 4e+02]RHS range [3e-01, 5e+04]
User MIP start did not produce a new incumbent solution
Presolve removed 112027 rows and 113508 columnsPresolve time: 3.82sPresolved: 81586 rows, 106140 columns, 488233 nonzerosVariable types: 98753 continuous, 7387 integer (7387 binary)Deterministic concurrent LP optimizer: primal and dual simplexShowing first log only...
Root simplex log...
Iteration Objective Primal Inf. Dual Inf. Time0 2.0250830e+07 3.928851e+04 2.536149e+10 6s14855 5.2477739e+07 0.000000e+00 1.128216e+06 6sConcurrent spin time: 0.01s
Solved with dual simplex
Root relaxation: objective 5.042488e+07, 53296 iterations, 3.65 seconds (3.38 work units)Another try with MIP startThe following is my problem.- What does "User MIP start did not produce a new incumbent solution” mean?
- What does "Another try with MIP start" mean?
- Why does "Another try with MIP start" appear after "user MIP startup does not produce new existing solution"? How can I understand that the initial point I gave did not produce a feasible solution, but the solution found another good feasible solution based on the information I gave?
Thanks in advance!1
Please sign in to leave a comment.
Comments
3 comments