Tips for speeding up MIP solution process when the warm-start point is almost always optimal
回答済みDear All,
I am trying to solve a MIP in Gurobi. For this particular problem, I have a feasible point that is globally optimal for the MIP. So, essentially when I am warm-starting with this point, Gurobi's job is just proving the optimality of the given solution. I am currently setting `MIPfocus = 2` to that goal, and Gurobi indeed verifies that the warm-starting point is optimal. However, it does not speed up the process by a significant margin compared to if I had started from scratch without warm-starting. Are there any other things that I can do to increase the speed of Gurobi in verifying the optimality of the given solution?
Any tips/suggestions will be much appreciated.
-
正式なコメント
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?. -
Hi,
When you are sure that your point is already optimal, you could turn off all heuristics by setting Heuristics=0 and RINS=0. Additionally, you could set MIPFocus=3 to make Gurobi focus solely on the lower bound. Could you post a LOG snippet of an optimization run?
Best regards,
Jaromił0 -
Hi Jaromił,
Thanks very much for your quick response. Okay, I will turn off all heuristics and see what happens. Here is a Gurobi log of an optimization run (I am using Julia+JuMP to model the problem), where we see that the warm-started objective value and objective value of the found solution by Gurobi are the same. Please let me know if you have any other tips/suggestions.
Gurobi Optimizer version 9.1.2 build v9.1.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 56 rows, 72 columns and 174 nonzeros
Model fingerprint: 0xf0f3b6d9
Model has 40 quadratic constraints
Coefficient statistics:
Matrix range [5e-01, 1e+00]
QMatrix range [6e-05, 1e+00]
QLMatrix range [1e-03, 1e+00]
Objective range [1e+00, 1e+00]
Bounds range [1e+00, 3e+00]
RHS range [6e-01, 6e-01]
QRHS range [1e-02, 6e-01]
Presolve removed 31 rows and 16 columns
Continuous model is non-convex -- solving as a MIP.
Loaded user MIP start with objective 0.598515
Presolve removed 28 rows and 19 columns
Presolve time: 0.00s
Presolved: 222 rows, 96 columns, 619 nonzeros
Presolved model has 49 bilinear constraint(s)
Variable types: 96 continuous, 0 integer (0 binary)
Presolve removed 17 rows and 2 columns
Presolved: 205 rows, 94 columns, 599 nonzeros
Root relaxation: objective 1.066596e-02, 83 iterations, 0.00 seconds
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 0.01067 0 30 0.59851 0.01067 98.2% - 0s
0 0 0.01067 0 33 0.59851 0.01067 98.2% - 0s
0 0 0.01067 0 30 0.59851 0.01067 98.2% - 0s
0 0 0.01067 0 30 0.59851 0.01067 98.2% - 0s
0 0 0.01067 0 33 0.59851 0.01067 98.2% - 0s
0 2 0.01067 0 33 0.59851 0.01067 98.2% - 0s
1983 1644 0.42567 23 45 0.59851 0.13978 76.6% 86.8 5s
6783 3377 cutoff 24 0.59851 0.44084 26.3% 74.6 10s
13988 4812 0.57309 27 40 0.59851 0.51380 14.2% 58.6 15s
18800 5214 0.57482 30 45 0.59851 0.53415 10.8% 53.6 20s
24041 5425 infeasible 35 0.59851 0.55021 8.07% 49.8 25s
29999 6014 cutoff 36 0.59851 0.56241 6.03% 47.0 30s
36550 5675 0.57599 27 48 0.59851 0.57362 4.16% 44.8 35s
42884 4817 infeasible 36 0.59851 0.58310 2.58% 43.4 40s
48656 3199 0.59704 30 37 0.59851 0.59062 1.32% 42.1 45s
54854 1182 infeasible 28 0.59851 0.59725 0.21% 40.6 50s
60939 1988 cutoff 49 0.59851 0.59835 0.03% 38.9 55s
66155 3346 cutoff 46 0.59851 0.59845 0.01% 37.6 60s
Cutting planes:
RLT: 15
PSD: 678
Explored 68053 nodes (2522831 simplex iterations) in 60.72 seconds
Thread count was 8 (of 8 available processors)
Solution count 1: 0.598515
Optimal solution found (tolerance 1.00e-04)
Best objective 5.985146520952e-01, best bound 5.984600770353e-01, gap 0.0091%0 -
Hi,
Since the model solves rather quickly, you could try the Gurobi Parameter Tuning Tool. You could let it run for a day and check whether there are some parameters which might help. If no parameters can be found which produce a significant improvement, then the best way would be to try to improve variable bounds and try a reformulation of the problem.
Best regards,
Jaromił0 -
Great, thanks so much!
0
投稿コメントは受け付けていません。
コメント
5件のコメント