Skip to main content

Tips for speeding up MIP solution process when the warm-start point is almost always optimal

Answered

Comments

5 comments

  • Official comment
    Simranjit Kaur
    • Gurobi Staff
    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?.
  • Jaromił Najman
    • Gurobi Staff

    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
  • Shuvomoy Das Gupta
    • Gurobi-versary
    • Conversationalist
    • First Question

    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
  • Jaromił Najman
    • Gurobi Staff

    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
  • Shuvomoy Das Gupta
    • Gurobi-versary
    • Conversationalist
    • First Question

    Great, thanks so much!

    0

Post is closed for comments.