0

我正在使用 neos bonmin 求解器来找到高度约束的混合整数非线性问题的全局最小解。以下是相同模型的结果,除了成本目标函数中的系数对于找到最佳解决方案的结果较小。

有人可以举例说明为什么会发生这种情况吗?

是否有任何 Ipopt 或 Bonmin 选项可以让求解器通过具有较高成本系数的模型的第一个不可行的解决方案?

我已经在这里完成了两个求解器选项

邦民期权

https://projects.coin-or.org/Bonmin/browser/stable/1.8/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw

Ipopt 选项

https://www.coin-or.org/Ipopt/documentation/node40.html

在这个例子中,客观成本系数更高,我得到了一个最终不可行的解决方案

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

在这个结果中,客观成本系数较低,我得到了一个最佳解决方案

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

这是我的模型中的成本目标函数和成本约束。我无法分享我的整个模型,因为它有几千行。

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];

这里以“DRipSet”开头的变量是二元决策

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;
4

0 回答 0