I'm using the neos bonmin solver to find a global minimum solution to a highly constrained mixed integer non-linear problem. Below are results for models that are identical, except the coefficients in the cost objective function are smaller for the results that find an optimal solution.
Could someone example to me why this could happen?
Are there any Ipopt or Bonmin options that will allow the solver to get past the first infeasible solution for the model with the higher cost coefficants?
I've gone through the both solver options here
Bonmin options
https://projects.coin-or.org/Bonmin/browser/stable/1.8/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw
Ipopt options
https://www.coin-or.org/Ipopt/documentation/node40.html
Objective cost coefficients are higher in this example and I get a final infeasible solution
Presolve eliminates 26984 constraints and 25542 variables.
Substitution eliminates 3585 variables.
Adjusted problem:
6113 variables:
24 binary variables
3873 nonlinear variables
2216 linear variables
5693 constraints; 57445 nonzeros
2338 nonlinear constraints
3355 linear constraints
5328 equality constraints
365 inequality constraints
1 linear objective; 9 nonzeros.
Setting $presolve_fixeps >= 1.9e-14 could change presolve results.
Bonmin 1.8.4 using Cbc 2.9.6 and Ipopt 3.12.4
bonmin: bonmin.algorithm B-Hyb
******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************
NLP0012I
Num Status Obj It time Location
NLP0014I 1 INFEAS 8957753.5 5688 534.7767 build initial OA
NLP3017W OA on non-convex constraint is very experimental.
Cbc0006I The LP relaxation is infeasible or too expensive
"Finished"
bonmin: Infeasible problem
solve_result_num = 220
solve_result = infeasible
cost.result = infeasible
and objective cost coefficients are lower in this result where I get an optimal solution
Presolve eliminates 26984 constraints and 25542 variables.
Substitution eliminates 3585 variables.
Adjusted problem:
6113 variables:
24 binary variables
3873 nonlinear variables
2216 linear variables
5693 constraints; 57445 nonzeros
2338 nonlinear constraints
3355 linear constraints
5328 equality constraints
365 inequality constraints
1 linear objective; 9 nonzeros.
Setting $presolve_fixeps >= 1.9e-14 could change presolve results.
Bonmin 1.8.4 using Cbc 2.9.6 and Ipopt 3.12.4
NLP0012I
Num Status Obj It time Location
NLP0014I 1 INFEAS 1.5097545e-05 6467 621.84647 build initial OA
NLP3017W OA on non-convex constraint is very experimental.
NLP0014I 2 OPT 26013213 214 16.333517 FP for MINLP
NLP0014I 3 OPT 26013213 160 9.492557 check integer sol.
OA0003I New best feasible of 26013213 found after 26.516969 sec and
NLP0014I 4 OPT 26013213 160 9.377574 check integer sol.
OA0003I New best feasible of 26013213 found after 36.294482 sec and
Cbc0012I Integer solution of 26013213 found by nonlinear programm after 0 iterations and 0 nodes (35.85 seconds)
Cbc0031I 373 added rows had average density of 11.38874
Cbc0013I At root node, 699 cuts changed objective from 26013213 to 26013213 in 2 passes
Cbc0014I Cut generator 0 (NLP solution based oa cuts) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 1 (Mixed Integer Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 2 (Mixed Integer Rounding) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 4 (Flow Covers) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 5 (Feasibility Pump for MINLP.) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 6 (Outer Approximation feasibility check.) - 921 row cuts average 8.0 elements, 0 column cuts (0 active)
Cbc0014I Cut generator 7 (Outer Approximation strong branching solution check.) - 0 row cuts average 0.0 elements, 0 column cuts (0 active)
Cbc0001I Search completed - best objective 26013212.66256024, took 434 iterations and 0 nodes (36.09 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Outer Approximation feasibility check. was tried 2 times and created 921 cuts of which 0 were active after adding rounds of cuts
"Finished"
bonmin: Optimal
solve_result_num = 3
solve_result = solved
cost.result = solved
Here are the cost objective function and cost constraints from my model. I'm unable to share my entire model because it is several thousand lines long.
minimize cost: CLuSet1 + CLuSet2 + CLuSet3 + CLuSet4 + CLuSet5 + CLuSet6 + CLuSet7 + CLuSet8 + CWMake + CGwMake + CRipTotal;
subject to c_luset1:
CLuSet1 = 0;
subject to c_luset2:
CLuSet2 = 54018.1562808425 * DALu12 + 11773.6164636535 * DALu12 + 54018.1562808425 * DALu22 + 11773.6164636535 * DALu22 + 122347.053122918 * DALu32 + 14046.1548008848 * DALu32 + 122347.053122918 * DALu42 + 14046.1548008848 * DALu42 + 67585.1670257089 * DALu52 + 26063.9453787701 * DALu52 + 67585.1670257089 * DALu62 + 26063.9453787701 * DALu62 + 83360.0744735154 * DALu72 + 8648.92263104654 * DALu72 + 83360.0744735154 * DALu82 + 8648.92263104654 * DALu82;
subject to c_luset3:
CLuSet3 = 16800.6706442194 * DALu13 + 13662.2690399705 * DALu13 + 16800.6706442194 * DALu23 + 13662.2690399705 * DALu23 + 66478.7502894276 * DALu33 + 16299.3542773528 * DALu33 + 66478.7502894276 * DALu43 + 16299.3542773528 * DALu43 + 67585.1670257089 * DALu53 + 30244.9663709661 * DALu53 + 67585.1670257089 * DALu63 + 30244.9663709661 * DALu63 + 63736.1798227559 * DALu73 + 10036.3306598302 * DALu73 + 63736.1798227559 * DALu83 + 10036.3306598302 * DALu83;
subject to c_luset4:
CLuSet4 = 94366.3428878643 * DALu14 + 11248.1445775008 * DALu14 + 94366.3428878643 * DALu24 + 11248.1445775008 * DALu24 + 94366.3428878643 * DALu34 + 13419.2565594482 * DALu34 + 94366.3428878643 * DALu44 + 13419.2565594482 * DALu44 + 94366.3428878643 * DALu54 + 24900.6774414253 * DALu54 + 94366.3428878643 * DALu64 + 24900.6774414253 * DALu64 + 94366.3428878643 * DALu74 + 8262.90991336076 * DALu74 + 94366.3428878643 * DALu84 + 8262.90991336076 * DALu84;
subject to c_luset5:
CLuSet5 = 19152.7645344101 * DALu15 + 4752.09357912019 * DALu15 + 19152.7645344101 * DALu25 + 4752.09357912019 * DALu25 + 19152.7645344101 * DALu35 + 5669.34061820967 * DALu35 + 19152.7645344101 * DALu45 + 5669.34061820966 * DALu45 + 19152.7645344101 * DALu55 + 10519.9883029447 * DALu55 + 19152.7645344101 * DALu65 + 10519.9883029447 * DALu65 + 19152.7645344101 * DALu75 + 3490.89762081051 * DALu75 + 19152.7645344101 * DALu85 + 3490.89762081051 * DALu85;
subject to c_luset6:
CLuSet6 = 139205.556766389 * DALu16 + 4051.46439758324 * DALu16 + 139205.556766389 * DALu26 + 4051.46439758324 * DALu26 + 663624.894768934 * DALu36 + 4833.47629629414 * DALu36 + 663624.894768934 * DALu46 + 4833.47629629414 * DALu46 + 605356.079435318 * DALu56 + 8968.96438648493 * DALu56 + 605356.079435318 * DALu66 + 8968.96438648493 * DALu66 + 605356.079435318 * DALu76 + 2976.21399722947 * DALu76 + 605356.079435318 * DALu86 + 2976.21399722947 * DALu86;
subject to c_luset7:
CLuSet7 = 178407.121602901 * DALu17 + 5178.5635157079 * DALu17 + 178407.121602901 * DALu27 + 5178.5635157079 * DALu27 + 226482.571822542 * DALu37 + 6178.12759676694 * DALu37 + 226482.571822542 * DALu47 + 6178.12759676694 * DALu47 + 219086.348711828 * DALu57 + 11464.0898173116 * DALu57 + 219086.348711828 * DALu67 + 11464.0898173116 * DALu67 + 219086.348711828 * DALu77 + 3804.1833047294 * DALu77 + 219086.348711828 * DALu87 + 3804.1833047294 * DALu87;
subject to c_luset8:
CLuSet8 = 4800.19161263411 * DALu18 + 5178.5635157079 * DALu18 + 4800.19161263411 * DALu28 + 5178.5635157079 * DALu28 + 6276.63444832917 * DALu38 + 6178.12759676694 * DALu38 + 6276.63444832917 * DALu48 + 6178.12759676694 * DALu48 + 6065.71404322987 * DALu58 + 11464.0898173116 * DALu58 + 6065.71404322987 * DALu68 + 11464.0898173116 * DALu68 + 6065.71404322987 * DALu78 + 3804.1833047294 * DALu78 + 6065.71404322987 * DALu88 + 3804.1833047294 * DALu88;
subject to c_wmake:
CWMake = sum{t in time}0.264172052358148 * DQWMake[t];
subject to c_gwmake:
CGwMake = sum{t in time}264172.052358148 * DQGwMake[t];
Here variables that start with "DRipSet" are binary decisions
subject to c_ripset111:
CRipSet111 = DRipSet1112 * (101811.344386982);
subject to c_ripset112:
CRipSet112 = DRipSet1122 * (382859.370549274);
subject to c_ripset113:
CRipSet113 = DRipSet1132 * (206.655198893719);
subject to c_ripset121:
CRipSet121 = DRipSet1212 * (127794.539554323);
subject to c_ripset122:
CRipSet122 = DRipSet1222 * (365971.521880556);
subject to c_ripset123:
CRipSet123 = DRipSet1232 * (668.274604214754);
subject to c_ripset131:
CRipSet131 = DRipSet1312 * (60888.2524447538);
subject to c_ripset132:
CRipSet132 = DRipSet1322 * (66799.0180114126);
subject to c_ripset133:
CRipSet133 = DRipSet1332 * (1433.75877136016);
subject to c_ripset141:
CRipSet141 = DRipSet1412 * (26751.9382774102);
subject to c_ripset142:
CRipSet142 = DRipSet1422 * (59526.2633940657);
subject to c_ripset143:
CRipSet143 = DRipSet1432 * (1868.05965227538);
subject to c_ripset151:
CRipSet151 = DRipSet1512 * (11834.6866568883);
subject to c_ripset152:
CRipSet152 = DRipSet1522 * (51682.9497507372);
subject to c_ripset161:
CRipSet161 = DRipSet1612 * (9385.83301215532);
subject to c_ripset162:
CRipSet162 = DRipSet1622 * (72091.8418398067);
subject to c_ripset171:
CRipSet171 = DRipSet1712 * (9256.58730682722);
subject to c_ripset172:
CRipSet172 = DRipSet1722 * (84265.8291042471);
subject to c_ripset173:
CRipSet173 = DRipSet1732 * (433.057013317928);
subject to c_ripset181:
CRipSet181 = DRipSet1812 * (11542.679010938);
subject to c_ripset182:
CRipSet182 = DRipSet1822 * (130979.048843908);
subject to c_ripset183:
CRipSet183 = DRipSet1832 * (8666.62200070436);
subject to c_riptotal:
CRipTotal = CRipSet111 + CRipSet112 + CRipSet113 + CRipSet121 + CRipSet122 + CRipSet123 + CRipSet131 + CRipSet132 + CRipSet133 + CRipSet141 + CRipSet142 + CRipSet143 + CRipSet151 + CRipSet152 + CRipSet161 + CRipSet162 + CRipSet171 + CRipSet172 + CRipSet173 + CRipSet181 + CRipSet182 + CRipSet183;