Originally posted by: ND10_Xavier_Schepler
Thank you for the quick response.
I can not use the barrier method because it doesn't provide warm start at the moment.
Re-optimization is done with the primal simplex.
A first LP is built with a pool of about 4000 initial columns, which are dynamically generated.
At least one artificial variable is added to each constraints from a set (1 for <= or >=, 2 for =).
There are other "static" variables, which are not artificial variables, and which can not be dynamically generated.
This first LP is optimized, producing the following log :
LP Presolve eliminated 1182 rows and 1869 columns.
Reduced LP has 74173 rows, 247879 columns, and 1422204 nonzeros.
Presolve time = 6.99 sec. (230.25 ticks)
Initializing dual steep norms . . .
Iteration log . . .
Iteration: 1 Dual objective = 0.000000
Perturbation started.
Iteration: 101 Dual objective = 0.000000
Iteration: 701 Dual objective = 0.005794
Iteration: 1980 Dual objective = 0.025701
Iteration: 2316 Dual objective = 0.028173
Iteration: 3222 Dual objective = 10.527969
Iteration: 3582 Dual objective = 10.530139
Iteration: 4500 Dual objective = 10.541696
Iteration: 4763 Dual objective = 10.544063
Iteration: 5537 Dual objective = 10.553143
Iteration: 6333 Dual objective = 10.560517
Iteration: 7109 Dual objective = 10.566502
Iteration: 7901 Dual objective = 10.571260
Iteration: 8723 Dual objective = 10.578410
Iteration: 8962 Dual objective = 10.580689
Iteration: 9619 Dual objective = 10.586488
Iteration: 10339 Dual objective = 10.593395
Iteration: 10782 Dual objective = 10.596502
Iteration: 11222 Dual objective = 10.601149
Iteration: 11626 Dual objective = 10.604494
Iteration: 11997 Dual objective = 10.606734
Removing perturbation.
Initializing dual steep norms . . .
Then, pricing occurs in the generators, and about 20 columns are added :
Initializing primal norms rowwise . . .
Initializing primal norms rowwise . . .
Elapsed time = 46.17 sec. (88001.33 ticks, 1 iterations)
Iteration log . . .
Iteration: 1 Objective = 10.500000
Iteration: 208 Objective = 10.500000
Iteration: 494 Objective = 10.500001
Iteration: 769 Objective = 10.486160
Iteration: 1060 Objective = 10.288850
Iteration: 1411 Objective = 10.196659
Iteration: 1715 Objective = 8.067738
Iteration: 2082 Objective = 7.694711
Iteration: 2393 Objective = 5.899845
Elapsed time = 61.64 sec. (98001.55 ticks, 2428 iterations)
Iteration: 2668 Objective = 4.224081
Iteration: 2913 Objective = 2.588639
Iteration: 3178 Objective = 0.372469
Iteration: 3462 Objective = -0.623480
Iteration: 3752 Objective = -2.432296
Iteration: 4045 Objective = -3.289308
Iteration: 4294 Objective = -3.365158
Iteration: 4537 Objective = -8.063074
Elapsed time = 77.45 sec. (108005.82 ticks, 4629 iterations)
Iteration: 4795 Objective = -9.981913
Iteration: 5045 Objective = -10.461467
Iteration: 5314 Objective = -14.549501
Iteration: 5566 Objective = -18.221994
Iteration: 5809 Objective = -24.034160
Iteration: 6096 Objective = -34.489039
Iteration: 6497 Objective = -55.949795
Iteration: 6732 Objective = -74.319547
Elapsed time = 93.47 sec. (118007.50 ticks, 6821 iterations)
Iteration: 7005 Objective = -81.033873
Iteration: 7264 Objective = -91.574650
Iteration: 7570 Objective = -116.054786
Iteration: 7949 Objective = -145.495679
Iteration: 8475 Objective = -184.531183
Iteration: 8909 Objective = -185.195253
Iteration: 9203 Objective = -187.326435
Iteration: 9485 Objective = -202.754360
Elapsed time = 109.98 sec. (128009.52 ticks, 9515 iterations)
Iteration: 9815 Objective = -221.292739
Iteration: 10170 Objective = -247.934521
Iteration: 10487 Objective = -267.552829
Iteration: 10838 Objective = -277.091640
Iteration: 11152 Objective = -281.711522
Iteration: 11480 Objective = -288.315786
Iteration: 11852 Objective = -307.427869
Iteration: 12480 Objective = -329.304324
Elapsed time = 126.27 sec. (138011.48 ticks, 12780 iterations)
Iteration: 13132 Objective = -353.750482
Iteration: 13496 Objective = -364.626194
Iteration: 13803 Objective = -372.886339
Iteration: 14158 Objective = -386.714972
Iteration: 14477 Objective = -399.821621
Iteration: 14846 Objective = -415.933004
Iteration: 15203 Objective = -436.887676
Iteration: 15523 Objective = -449.584272
Elapsed time = 142.55 sec. (148015.56 ticks, 15610 iterations)
Iteration: 15914 Objective = -474.722527
Iteration: 16354 Objective = -495.308699
Iteration: 16681 Objective = -512.384292
Iteration: 17028 Objective = -532.553362
Iteration: 17415 Objective = -553.864216
Iteration: 17942 Objective = -591.072845
Iteration: 18283 Objective = -611.903525
Iteration: 18679 Objective = -638.974805
Elapsed time = 159.76 sec. (158016.55 ticks, 18942 iterations)
Iteration: 19107 Objective = -654.231370
Iteration: 19848 Objective = -695.346404
Iteration: 20276 Objective = -720.833138
Iteration: 20708 Objective = -739.081169
Iteration: 21060 Objective = -768.053862
Iteration: 21607 Objective = -798.233432
Iteration: 22101 Objective = -824.045004
Iteration: 22574 Objective = -853.558286
Elapsed time = 177.08 sec. (168016.92 ticks, 22891 iterations)
Iteration: 23104 Objective = -881.361257
Iteration: 23490 Objective = -903.056731
Iteration: 23944 Objective = -924.660112
Iteration: 24743 Objective = -964.340597
Iteration: 25132 Objective = -981.486886
Iteration: 25709 Objective = -999.310119
Iteration: 26495 Objective = -1038.874825
Iteration: 27004 Objective = -1061.019561
Iteration: 27861 Objective = -1103.315801
Elapsed time = 195.56 sec. (178020.78 ticks, 28181 iterations)
Iteration: 28258 Objective = -1115.987610
Iteration: 28813 Objective = -1148.103601
Iteration: 29180 Objective = -1173.943881
Iteration: 29995 Objective = -1203.407179
Iteration: 30389 Objective = -1226.213972
Iteration: 30949 Objective = -1245.106259
Iteration: 31774 Objective = -1269.404153
Iteration: 32292 Objective = -1331.592543
Elapsed time = 213.58 sec. (188021.51 ticks, 32587 iterations)
Iteration: 32674 Objective = -1355.556626
Iteration: 33252 Objective = -1392.568755
Iteration: 33713 Objective = -1433.855944
Iteration: 34509 Objective = -1497.358595
Iteration: 35178 Objective = -1521.610674
Iteration: 35827 Objective = -1529.875445
Iteration: 36555 Objective = -1532.167617
Iteration: 36925 Objective = -1545.403353
Elapsed time = 231.76 sec. (198022.39 ticks, 37174 iterations)
Iteration: 37494 Objective = -1551.742245
Iteration: 37983 Objective = -1560.512120
Iteration: 38669 Objective = -1567.190428
Iteration: 39342 Objective = -1573.687289
Iteration: 39974 Objective = -1580.265411
Iteration: 40804 Objective = -1585.557464
Iteration: 41441 Objective = -1594.114455
Elapsed time = 250.91 sec. (208022.86 ticks, 41603 iterations)
Iteration: 41866 Objective = -1605.409230
Iteration: 42463 Objective = -1611.633445
Iteration: 43179 Objective = -1613.744474
Iteration: 43772 Objective = -1619.172999
Iteration: 44329 Objective = -1630.115075
Iteration: 44894 Objective = -1633.388895
Iteration: 45471 Objective = -1637.254255
Elapsed time = 269.15 sec. (218024.86 ticks, 45816 iterations)
Iteration: 45977 Objective = -1639.963929
Iteration: 46566 Objective = -1641.669141
Iteration: 46985 Objective = -1642.953704
Iteration: 47408 Objective = -1644.865405
Iteration: 47778 Objective = -1647.128015
Iteration: 48255 Objective = -1648.397313
Iteration: 48636 Objective = -1649.957482
Iteration: 49136 Objective = -1650.574513
Elapsed time = 287.69 sec. (228028.45 ticks, 49159 iterations)
Iteration: 49466 Objective = -1652.025450
Iteration: 49864 Objective = -1653.564893
Iteration: 50250 Objective = -1654.266108
Iteration: 50702 Objective = -1654.595415
Iteration: 51189 Objective = -1655.122339
Iteration: 51732 Objective = -1655.273304
Iteration: 52193 Objective = -1661.496589
Iteration: 52610 Objective = -1663.527892
Elapsed time = 306.35 sec. (238030.88 ticks, 52765 iterations)
Iteration: 53086 Objective = -1663.745052
Removing shift (47139).
Iteration: 53284 Dual objective = -0.000000
This re-optimization takes some time.
Note that, although the column generation pricing sub-problems are NP-hard,
it happens frequently that 95% of the column generation time is spent in re-optimizing restricted master problems,
which is very unusual.
You're right, matrix coefficients on the order of 1e-9 will be removed.
But, we will still have real coefficients with many digits, while we don't change our model.
#CPLEXOptimizers#DecisionOptimization