MIP性能:快速找到解决方案,但解算器会继续搜索

时间:2014-02-19 01:06:21

标签: mathematical-optimization linear-programming gurobi

我有一个线性MIP问题,Gurobi在10次迭代中找到了解决方案 要真正证明解决方案是最优的,需要更多的时间 日志如下。

有没有办法告诉Gurobi停下来?

我尝试了自动调整工具 它告诉我设置Heuristics=0 如果我遵循这个建议,找到解决方案的总运行时间会减少 但是这个总时间远远超过了10次迭代的启发时间。

我是MIP的新手,所以,从日志中我不知道哪个参数将是一个很好的停止标准(GAP,BestBound,...)。

Optimize a model with 434 rows, 380 columns and 1332 nonzeros
Found heuristic solution: objective -0.667665
Presolve removed 74 rows and 72 columns
Presolve time: 0.00s
Presolved: 360 rows, 308 columns, 1428 nonzeros
Variable types: 188 continuous, 120 integer (120 binary)

Root relaxation: objective 1.454681e+00, 383 iterations, 0.00 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0    1.45468    0   80   -0.66764    1.45468   318%     -    0s
H    0     0                      -0.2958055    1.45468   592%     -    0s
     0     0    1.33723    0   87   -0.29581    1.33723   552%     -    0s
H    0     0                      -0.0360081    1.33723  3814%     -    0s
     0     0    1.32350    0   88   -0.03601    1.32350  3776%     -    0s
     0     0    1.31284    0   62   -0.03601    1.31284  3746%     -    0s
     0     5    1.31284    0   62   -0.03601    1.31284  3746%     -    0s
H  407   237                      -0.0223424    1.12204  5122%  13.3    0s
H  606   348                      -0.0139589    1.09397  7937%  12.8    0s
H 1209   691                       0.0000905    1.00647     -   12.2    0s
H 1543   852                       0.0000935    1.00647     -   15.4    1s
 12464  8280    0.31259   37   45    0.00009    0.83003     -   16.1    5s
 32517 21750     cutoff   44         0.00009    0.75633     -   15.8   10s
 41026 27530    0.15234   45   67    0.00009    0.40720     -   15.7   15s
 67008 28123    0.00079   87    9    0.00009    0.00252  2599%  12.1   20s
 123660 32561    0.00088   82   13    0.00009    0.00197  2008%   8.0   25s
 183205 53085    0.00111   80   14    0.00009    0.00175  1766%   6.5   30s
 242669 70749    0.00115   82   13    0.00009    0.00160  1611%   5.6   35s
 300464 86096    0.00016   83   14    0.00009    0.00150  1499%   5.2   40s
 360002 99530    0.00116   77   12    0.00009    0.00141  1407%   4.8   45s
 419747 111348    0.00092   82   11    0.00009    0.00134  1330%   4.5   50s
 479404 121404    0.00094   78   18    0.00009    0.00128  1265%   4.4   55s
 538670 130127    0.00061   86    9    0.00009    0.00122  1206%   4.2   60s
 599541 137721    0.00071   87   10    0.00009    0.00117  1152%   4.1   65s
 659419 143977    0.00049   81   13    0.00009    0.00113  1104%   4.0   70s
 719366 148872    0.00090   82    7    0.00009    0.00108  1058%   3.9   75s
 778800 152645     cutoff   81         0.00009    0.00104  1015%   3.8   80s
 838419 155900    0.00064   82   12    0.00009    0.00101   975%   3.7   85s
 898257 157892    0.00038   82   11    0.00009    0.00097   937%   3.7   90s
 959133 158950    0.00064   82    9    0.00009    0.00093   898%   3.6   95s
 1019118 158672     cutoff   86         0.00009    0.00090   863%   3.6  100s
 1077389 157263    0.00034   79   16    0.00009    0.00087   828%   3.5  105s
 1136559 154819    0.00015   83    6    0.00009    0.00084   795%   3.5  110s
 1197408 151286    0.00033   79   11    0.00009    0.00080   760%   3.5  115s
 1256981 146998    0.00058   85   11    0.00009    0.00077   726%   3.4  120s
 1315053 141986    0.00015   87    9    0.00009    0.00074   693%   3.4  125s
 1369901 136123     cutoff   84         0.00009    0.00071   662%   3.4  130s
 1423732 129573    0.00042   84   11    0.00009    0.00068   631%   3.3  135s
 1483143 120871    0.00036   86   11    0.00009    0.00065   593%   3.3  140s
 1541197 111293    0.00020   84   11    0.00009    0.00061   553%   3.3  145s
 1598804 100832    0.00030   81   15    0.00009    0.00057   511%   3.3  150s
 1655909 89315    0.00039   84   11    0.00009    0.00053   466%   3.2  155s
 1704245 77614    0.00018   82   15    0.00009    0.00049   420%   3.2  160s
 1750024 63910    0.00014   83   12    0.00009    0.00044   367%   3.2  165s
 1795438 46988     cutoff   78         0.00009    0.00037   299%   3.2  170s
 1847433 21718    0.00012   82   10    0.00009    0.00026   178%   3.2  175s

Cutting planes:
  Gomory: 54
  MIR: 14
  Flow cover: 28

Explored 1875647 nodes (5924527 simplex iterations) in 178.11 seconds
Thread count was 4 (of 4 available processors)

Optimal solution found (tolerance 1.00e-04)
Best objective 9.353429694370e-05, best bound 9.353429694481e-05, gap 0.0%

2 个答案:

答案 0 :(得分:4)

如果您想证明解决方案是最佳的,请不要提前终止。 grbtune参数调整工具非常有用,但看起来您可以通过专注于移动边界来做得更好。有关如何移动边界的建议,请参阅参数调整指南的MIP section。例如,我会尝试增加Cuts参数,将MIPFocus设置为2或3,和/或将Presolve设置为2。

免责声明:我负责Gurobi的技术支持。

答案 1 :(得分:2)

我只想补充一些解释:

Gurobi启发式算法在10次迭代中找到了解决方案。无法保证此解决方案是最佳的,特别是其余时间用于证明这一点。

通过禁用启发式方法,稍后会发现所述解决方案。在这方面,建议的参数设置是成功的,即整体运行时间(可用的解决方案并证明是最优的)减少了(即使实际解决方案稍后可用)。

正如上面的Greg Glockner所指出的那样,由于大部分时间花在证明解决方案的最佳性上,因此将重点放在重点上可能会加快解决方案的时间。你也可以定义停止标准,设置Toleranze / Gap参数,如here所述。