Hi guys,
I am formulating a problem with Mixed integer programming and using Gurobi Optimizer to solve it. The number of variables in my problem is not that many (around 40,000 continuous variables and 500,000 binary variables) but it runs very slow. I wait for more than 1 hour and Gurobi is still on the search for the optimal result. I have used a smaller case to prove the optimality of my problem. Now I was to wonder if there is any method to speed up the searching.
The objective of my optimization problem is not natively linear. Generally speaking, it is like Min a1x1 + a2x2 + ...., where xi is a continuous variable equals min {b1y1 + b2y2 +...., c1z1 + c2z2 + ......, d1w1 + d2w2}, where yi, zi, wi are binary variables. I used the Big-M method to transfer the objective into the linear form with a lot of slack constraints. Therefore, as we could expect, there is a lot of dependency in this problem.
I am pasting the mlp.lp file of my smaller case test. In the code, I choose the following parameters to control the gurobi.
MIPGap = 1e-3
MIPFocus = 3
Method = 3
ImproveStartTime = 600
=================mlp.lp start============================
Gurobi 6.0.3 (linux64) logging started
Optimize a model with 2049 rows, 2580 columns and 7500 nonzeros
Coefficient statistics:
Matrix range [4e-03, 1e+03]
Objective range [1e-02, 2e+01]
Bounds range [1e+00, 1e+00]
RHS range [8e-03, 3e+02]
Found heuristic solution: objective 6588.57
Presolve removed 240 rows and 240 columns
Presolve time: 0.03s
Presolved: 1809 rows, 2340 columns, 6840 nonzeros
Variable types: 180 continuous, 2160 integer (2160 binary)
Optimize a model with 1809 rows, 2340 columns and 6840 nonzeros
Solved with dual simplex
Solved in 1537 iterations and 0.09 seconds
Optimal objective 1.527599072e+00
Root relaxation: objective 1.527599e+00, 1537 iterations, 0.06 seconds
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 1.52760 0 820 6588.56554 1.52760 100% - 0s
H 0 0 3623.1937965 1.52760 100% - 0s
0 0 2.01065 0 1267 3623.19380 2.01065 100% - 0s
0 0 2.21425 0 1144 3623.19380 2.21425 100% - 1s
H 0 0 314.0010533 2.21425 99.3% - 1s
H 0 0 296.5673143 2.21425 99.3% - 1s
0 0 2.50597 0 966 296.56731 2.50597 99.2% - 1s
0 0 2.74531 0 870 209.98926 2.74531 98.7% - 2s
H 0 0 170.3005163 2.74531 98.4% - 2s
H 0 0 3.4641783 2.74531 20.8% - 2s
0 0 2.86420 0 747 3.46418 2.86420 17.3% - 3s
H 0 0 3.3736497 2.86420 15.1% - 3s
0 0 2.94298 0 679 3.37365 2.94298 12.8% - 3s
H 0 0 3.3316109 2.94298 11.7% - 3s
0 0 2.98701 0 620 3.33161 2.98701 10.3% - 4s
0 0 2.98701 0 614 3.33161 2.98701 10.3% - 4s
H 0 0 3.3132839 2.98701 9.85% - 4s
H 0 0 3.2579026 2.98701 8.31% - 5s
.........
.........
42120 36999 3.20580 32 385 3.22355 3.16761 1.74% 25.2 95s
44532 39132 3.21406 38 334 3.22355 3.16837 1.71% 25.4 100s
47222 41484 3.20022 37 333 3.22355 3.16942 1.68% 25.6 105s
49687 43570 3.17237 26 451 3.22355 3.16992 1.66% 25.9 110s
52378 46089 3.22109 69 237 3.22355 3.17096 1.63% 26.1 115s
54759 48216 3.18033 32 366 3.22355 3.17148 1.62% 26.2 120s
57136 50319 3.20962 54 239 3.22355 3.17212 1.60% 26.4 125s
H58512 50970 3.2232280 3.17230 1.58% 26.4 128s
H58948 51344 3.2232279 3.17239 1.58% 26.4 129s
59341 51671 3.21164 33 385 3.22323 3.17251 1.57% 26.4 130s
H59606 51919 3.2232272 3.17252 1.57% 26.4 130s
61667 53753 3.21584 38 327 3.22323 3.17309 1.56% 26.5 135s
63843 55637 3.21701 66 249 3.22323 3.17358 1.54% 26.5 140s
........
.......
154251 132104 3.20739 34 384 3.22273 3.18251 1.25% 29.6 350s
156091 133642 3.20047 35 357 3.22273 3.18265 1.24% 29.6 355s
158388 135605 3.19372 39 349 3.22273 3.18277 1.24% 29.6 360s
160159 137103 3.21096 47 301 3.22273 3.18288 1.24% 29.7 365s
162260 138884 3.21670 36 339 3.22273 3.18303 1.23% 29.7 370s
164030 140382 3.20577 28 407 3.22273 3.18316 1.23% 29.8 375s
166152 142177 3.21956 63 258 3.22273 3.18330 1.22% 29.8 380s
.......
========================mlp.lp end=============================
as you can see, the bound updates very slow. I was to wonder if there is any method to improve the speed or is there any suggestion on changing the formulation.
(BTW, all coefficients are double type.)
Thank you very much.