[Couenne-tickets] [Couenne, a solver for non-convex MINLP problems] #21: optimal solution wrong when using CPLEX as LP solver (optimal values is ok)

Couenne, a solver for non-convex MINLP problems coin-trac at coin-or.org
Fri Jul 20 14:56:36 EDT 2012


#21: optimal solution wrong when using CPLEX as LP solver (optimal values is ok)
------------------------+----------------------
 Reporter:  stefan      |      Owner:  somebody
     Type:  defect      |     Status:  new
 Priority:  critical    |  Milestone:
Component:  component1  |    Version:
 Keywords:              |
------------------------+----------------------
 Hi,

 with the attached instance, Couenne seems to report a wrong optimal
 solution.

 The problem as printed by Couenne ({{{problem_print_level 3}}}) is
 {{{
 min
 (((150*((-4+x_0)^2))+(390*((-10+x_1)^2))+(240*((-7+x_2)^2))+(70*((-3+x_3)^2))+(150*((-10+x_4)^2))+(390*((-15+x_5)^2))+(240*((-9+x_6)^2))+(70*((-3+x_7)^2)))+300*x_104+240*x_105+210*x_106+100*x_107+150*x_108+120*x_109+300*x_110+240*x_111+210*x_112+100*x_113
 +150*x_114+120*x_115)
 constraints:
 -0 <= (x_104+x_1-x_0)
 -0 <= (x_105+x_2-x_0)
 -0 <= (x_106+x_3-x_0)
 -0 <= (x_107+x_2-x_1)
 -0 <= (x_108+x_3-x_1)
 -0 <= (x_109+x_3-x_2)
 -0 <= (x_104-x_1+x_0)
 -0 <= (x_105-x_2+x_0)
 -0 <= (x_106-x_3+x_0)
 -0 <= (x_107-x_2+x_1)
 -0 <= (x_108-x_3+x_1)
 -0 <= (x_109-x_3+x_2)
 -0 <= (x_110+x_5-x_4)
 -0 <= (x_111+x_6-x_4)
 -0 <= (x_112+x_7-x_4)
 -0 <= (x_113+x_6-x_5)
 -0 <= (x_114+x_7-x_5)
 -0 <= (x_115+x_7-x_6)
 -0 <= (x_110-x_5+x_4)
 -0 <= (x_111-x_6+x_4)
 -0 <= (x_112-x_7+x_4)
 -0 <= (x_113-x_6+x_5)
 -0 <= (x_114-x_7+x_5)
 -0 <= (x_115-x_7+x_6)
 (-x_17-x_14-x_11-x_8+x_0) = -0
 (-x_18-x_15-x_12-x_9+x_0) = -0
 (-x_19-x_16-x_13-x_10+x_0) = -0
 (-x_29-x_26-x_23-x_20+x_1) = -0
 (-x_30-x_27-x_24-x_21+x_1) = -0
 (-x_31-x_28-x_25-x_22+x_1) = -0
 (-x_41-x_38-x_35-x_32+x_2) = -0
 (-x_42-x_39-x_36-x_33+x_2) = -0
 (-x_43-x_40-x_37-x_34+x_2) = -0
 (-x_53-x_50-x_47-x_44+x_3) = -0
 (-x_54-x_51-x_48-x_45+x_3) = -0
 (-x_55-x_52-x_49-x_46+x_3) = -0
 (-x_65-x_62-x_59-x_56+x_4) = -0
 (-x_66-x_63-x_60-x_57+x_4) = -0
 (-x_67-x_64-x_61-x_58+x_4) = -0
 (-x_77-x_74-x_71-x_68+x_5) = -0
 (-x_78-x_75-x_72-x_69+x_5) = -0
 (-x_79-x_76-x_73-x_70+x_5) = -0
 (-x_89-x_86-x_83-x_80+x_6) = -0
 (-x_90-x_87-x_84-x_81+x_6) = -0
 (-x_91-x_88-x_85-x_82+x_6) = -0
 (-x_101-x_98-x_95-x_92+x_7) = -0
 (-x_102-x_99-x_96-x_93+x_7) = -0
 (-x_103-x_100-x_97-x_94+x_7) = -0
 (-27.5*y_116+x_8) <= -0
 (-27.5*y_117+x_9) <= -0
 (-27.5*y_118+x_10) <= -0
 (-27.5*y_122+x_11) <= -0
 (-27.5*y_123+x_12) <= -0
 (-27.5*y_124+x_13) <= -0
 (-27.5*y_128+x_14) <= -0
 (-27.5*y_129+x_15) <= -0
 (-27.5*y_130+x_16) <= -0
 (-27.5*y_134+x_17) <= -0
 (-27.5*y_135+x_18) <= -0
 (-27.5*y_136+x_19) <= -0
 (-27.5*y_116+x_20) <= -0
 (-26.5*y_119+x_21) <= -0
 (-26.5*y_120+x_22) <= -0
 (-27.5*y_122+x_23) <= -0
 (-26.5*y_125+x_24) <= -0
 (-26.5*y_126+x_25) <= -0
 (-27.5*y_128+x_26) <= -0
 (-26.5*y_131+x_27) <= -0
 (-26.5*y_132+x_28) <= -0
 (-27.5*y_134+x_29) <= -0
 (-26.5*y_137+x_30) <= -0
 (-26.5*y_138+x_31) <= -0
 (-27.5*y_117+x_32) <= -0
 (-26.5*y_119+x_33) <= -0
 (-28.5*y_121+x_34) <= -0
 (-27.5*y_123+x_35) <= -0
 (-26.5*y_125+x_36) <= -0
 (-28.5*y_127+x_37) <= -0
 (-27.5*y_129+x_38) <= -0
 (-26.5*y_131+x_39) <= -0
 (-28.5*y_133+x_40) <= -0
 (-27.5*y_135+x_41) <= -0
 (-26.5*y_137+x_42) <= -0
 (-28.5*y_139+x_43) <= -0
 (-27.5*y_118+x_44) <= -0
 (-26.5*y_120+x_45) <= -0
 (-28.5*y_121+x_46) <= -0
 (-27.5*y_124+x_47) <= -0
 (-26.5*y_126+x_48) <= -0
 (-28.5*y_127+x_49) <= -0
 (-27.5*y_130+x_50) <= -0
 (-26.5*y_132+x_51) <= -0
 (-28.5*y_133+x_52) <= -0
 (-27.5*y_136+x_53) <= -0
 (-26.5*y_138+x_54) <= -0
 (-28.5*y_139+x_55) <= -0
 (-27*y_116+x_56) <= -0
 (-27*y_117+x_57) <= -0
 (-27*y_118+x_58) <= -0
 (-27*y_122+x_59) <= -0
 (-27*y_123+x_60) <= -0
 (-27*y_124+x_61) <= -0
 (-27*y_128+x_62) <= -0
 (-27*y_129+x_63) <= -0
 (-27*y_130+x_64) <= -0
 (-27*y_134+x_65) <= -0
 (-27*y_135+x_66) <= -0
 (-27*y_136+x_67) <= -0
 (-27*y_116+x_68) <= -0
 (-27.5*y_119+x_69) <= -0
 (-27.5*y_120+x_70) <= -0
 (-27*y_122+x_71) <= -0
 (-27.5*y_125+x_72) <= -0
 (-27.5*y_126+x_73) <= -0
 (-27*y_128+x_74) <= -0
 (-27.5*y_131+x_75) <= -0
 (-27.5*y_132+x_76) <= -0
 (-27*y_134+x_77) <= -0
 (-27.5*y_137+x_78) <= -0
 (-27.5*y_138+x_79) <= -0
 (-27*y_117+x_80) <= -0
 (-27.5*y_119+x_81) <= -0
 (-28.5*y_121+x_82) <= -0
 (-27*y_123+x_83) <= -0
 (-27.5*y_125+x_84) <= -0
 (-28.5*y_127+x_85) <= -0
 (-27*y_129+x_86) <= -0
 (-27.5*y_131+x_87) <= -0
 (-28.5*y_133+x_88) <= -0
 (-27*y_135+x_89) <= -0
 (-27.5*y_137+x_90) <= -0
 (-28.5*y_139+x_91) <= -0
 (-27*y_118+x_92) <= -0
 (-27.5*y_120+x_93) <= -0
 (-28.5*y_121+x_94) <= -0
 (-27*y_124+x_95) <= -0
 (-27.5*y_126+x_96) <= -0
 (-28.5*y_127+x_97) <= -0
 (-27*y_130+x_98) <= -0
 (-27.5*y_132+x_99) <= -0
 (-28.5*y_133+x_100) <= -0
 (-27*y_136+x_101) <= -0
 (-27.5*y_138+x_102) <= -0
 (-28.5*y_139+x_103) <= -0
 (6*y_116-x_20+x_8) <= -0
 (4*y_117-x_32+x_9) <= -0
 (3.5*y_118-x_44+x_10) <= -0
 (5*y_119-x_33+x_21) <= -0
 (4.5*y_120-x_45+x_22) <= -0
 (2.5*y_121-x_46+x_34) <= -0
 (6*y_122+x_23-x_11) <= -0
 (4*y_123+x_35-x_12) <= -0
 (3.5*y_124+x_47-x_13) <= -0
 (5*y_125+x_36-x_24) <= -0
 (4.5*y_126+x_48-x_25) <= -0
 (2.5*y_127+x_49-x_37) <= -0
 (5.5*y_128-x_74+x_62) <= -0
 (4.5*y_129-x_86+x_63) <= -0
 (4.5*y_130-x_98+x_64) <= -0
 (4*y_131-x_87+x_75) <= -0
 (4*y_132-x_99+x_76) <= -0
 (3*y_133-x_100+x_88) <= -0
 (5.5*y_134+x_77-x_65) <= -0
 (4.5*y_135+x_89-x_66) <= -0
 (4.5*y_136+x_101-x_67) <= -0
 (4*y_137+x_90-x_78) <= -0
 (4*y_138+x_102-x_79) <= -0
 (3*y_139+x_103-x_91) <= -0
 (y_134+y_128+y_122+y_116) = 1
 (y_135+y_129+y_123+y_117) = 1
 (y_136+y_130+y_124+y_118) = 1
 (y_137+y_131+y_125+y_119) = 1
 (y_138+y_132+y_126+y_120) = 1
 (y_139+y_133+y_127+y_121) = 1
 variables:
 x_0 [ 2.5 , 27.5 ]
 x_1 [ 3.5 , 26.5 ]
 x_2 [ 1.5 , 28.5 ]
 x_3 [ 1 , 29 ]
 x_4 [ 3 , 27 ]
 x_5 [ 2.5 , 27.5 ]
 x_6 [ 1.5 , 28.5 ]
 x_7 [ 1.5 , 28.5 ]
 x_8 [ 0 , inf ]
 x_9 [ 0 , inf ]
 x_10 [ 0 , inf ]
 x_11 [ 0 , inf ]
 x_12 [ 0 , inf ]
 x_13 [ 0 , inf ]
 x_14 [ 0 , inf ]
 x_15 [ 0 , inf ]
 x_16 [ 0 , inf ]
 x_17 [ 0 , inf ]
 x_18 [ 0 , inf ]
 x_19 [ 0 , inf ]
 x_20 [ 0 , inf ]
 x_21 [ 0 , inf ]
 x_22 [ 0 , inf ]
 x_23 [ 0 , inf ]
 x_24 [ 0 , inf ]
 x_25 [ 0 , inf ]
 x_26 [ 0 , inf ]
 x_27 [ 0 , inf ]
 x_28 [ 0 , inf ]
 x_29 [ 0 , inf ]
 x_30 [ 0 , inf ]
 x_31 [ 0 , inf ]
 x_32 [ 0 , inf ]
 x_33 [ 0 , inf ]
 x_34 [ 0 , inf ]
 x_35 [ 0 , inf ]
 x_36 [ 0 , inf ]
 x_37 [ 0 , inf ]
 x_38 [ 0 , inf ]
 x_39 [ 0 , inf ]
 x_40 [ 0 , inf ]
 x_41 [ 0 , inf ]
 x_42 [ 0 , inf ]
 x_43 [ 0 , inf ]
 x_44 [ 0 , inf ]
 x_45 [ 0 , inf ]
 x_46 [ 0 , inf ]
 x_47 [ 0 , inf ]
 x_48 [ 0 , inf ]
 x_49 [ 0 , inf ]
 x_50 [ 0 , inf ]
 x_51 [ 0 , inf ]
 x_52 [ 0 , inf ]
 x_53 [ 0 , inf ]
 x_54 [ 0 , inf ]
 x_55 [ 0 , inf ]
 x_56 [ 0 , inf ]
 x_57 [ 0 , inf ]
 x_58 [ 0 , inf ]
 x_59 [ 0 , inf ]
 x_60 [ 0 , inf ]
 x_61 [ 0 , inf ]
 x_62 [ 0 , inf ]
 x_63 [ 0 , inf ]
 x_64 [ 0 , inf ]
 x_65 [ 0 , inf ]
 x_66 [ 0 , inf ]
 x_67 [ 0 , inf ]
 x_68 [ 0 , inf ]
 x_69 [ 0 , inf ]
 x_70 [ 0 , inf ]
 x_71 [ 0 , inf ]
 x_72 [ 0 , inf ]
 x_73 [ 0 , inf ]
 x_74 [ 0 , inf ]
 x_75 [ 0 , inf ]
 x_76 [ 0 , inf ]
 x_77 [ 0 , inf ]
 x_78 [ 0 , inf ]
 x_79 [ 0 , inf ]
 x_80 [ 0 , inf ]
 x_81 [ 0 , inf ]
 x_82 [ 0 , inf ]
 x_83 [ 0 , inf ]
 x_84 [ 0 , inf ]
 x_85 [ 0 , inf ]
 x_86 [ 0 , inf ]
 x_87 [ 0 , inf ]
 x_88 [ 0 , inf ]
 x_89 [ 0 , inf ]
 x_90 [ 0 , inf ]
 x_91 [ 0 , inf ]
 x_92 [ 0 , inf ]
 x_93 [ 0 , inf ]
 x_94 [ 0 , inf ]
 x_95 [ 0 , inf ]
 x_96 [ 0 , inf ]
 x_97 [ 0 , inf ]
 x_98 [ 0 , inf ]
 x_99 [ 0 , inf ]
 x_100 [ 0 , inf ]
 x_101 [ 0 , inf ]
 x_102 [ 0 , inf ]
 x_103 [ 0 , inf ]
 x_104 [ 0 , inf ]
 x_105 [ 0 , inf ]
 x_106 [ 0 , inf ]
 x_107 [ 0 , inf ]
 x_108 [ 0 , inf ]
 x_109 [ 0 , inf ]
 x_110 [ 0 , inf ]
 x_111 [ 0 , inf ]
 x_112 [ 0 , inf ]
 x_113 [ 0 , inf ]
 x_114 [ 0 , inf ]
 x_115 [ 0 , inf ]
 y_116 binary
 y_117 binary
 y_118 binary
 y_119 binary
 y_120 binary
 y_121 binary
 y_122 binary
 y_123 binary
 y_124 binary
 y_125 binary
 y_126 binary
 y_127 binary
 y_128 binary
 y_129 binary
 y_130 binary
 y_131 binary
 y_132 binary
 y_133 binary
 y_134 binary
 y_135 binary
 y_136 binary
 y_137 binary
 y_138 binary
 y_139 binary
 }}}


 I added the lines
 {{{
 for( int i = 0; i < bb.model().getNumCols(); ++i )
   if( bb.model().bestSolution()[i] != 0.0 )
     printf("%3d: %10g\n", i, bb.model().bestSolution()[i]);
 }}}
 in {{{BonCouenne.cpp:356}}} and with {{{lp_solver cplex}}} I get
 {{{
 couenne: Optimal

         "Finished"
   0:        2.5
   1:        3.5
   2:        1.5
   3:          1
   4:          3
   5:        2.5
   6:        1.5
   7:        1.5
 211:          1
 212:          1
 213:          1
 214:          1
 215:          1
 216:          1
 }}}
 Thus, all continuous variables seem to be at their lower bound, which
 violates a linear constraint like {{{(-x_17-x_14-x_11-x_8+x_0) = -0}}}.
 Only the binary decisions seem to be correct.

 With CLP as LP solver, I get
 {{{
   0:    3.63524
   1:    9.63524
   2:    7.63524
   3:    3.63524
   4:    9.95435
   5:     14.295
   6:    9.45834
   7:    5.45435
   8:    3.63524
   9:    3.63524
  19:    3.63524
  20:    9.63524
  25:    9.63524
  30:    9.63524
  32:    7.63524
  37:    7.63524
  42:    7.63524
  48:    3.63524
  49:    3.63524
  53:    3.63524
  56:    9.95435
  57:    9.95435
  67:    9.95435
  68:     14.295
  73:     14.295
  78:     14.295
  80:    9.45834
  85:    9.45834
  90:    9.45834
  96:    5.45435
  97:    5.45435
 101:    5.45435
 104:          6
 105:          4
 107:          2
 108:          6
 109:          4
 110:    4.34067
 111:   0.496006
 112:        4.5
 113:    4.83668
 114:    8.84067
 115:    4.00399
 116:          1
 117:          1
 126:          1
 127:          1
 136:          1
 137:          1
 140:   -0.36476
 141:   -0.36476
 142:    0.63524
 143:    0.63524
 144: -0.0456505
 145:  -0.704977
 146:   0.458344
 147:    2.45435
 148:    0.13305
 149:    0.13305
 150:   0.403529
 151:   0.403529
 152: 0.00208391
 153:   0.496992
 154:   0.210079
 155:    6.02383
 156:    9859.66
 160:          4
 161:         12
 162:          8
 164:   0.992012
 165:          9
 166:    9.67336
 167:    17.6813
 168:    8.00799
 171:   -18.8648
 172:   -23.8648
 177:   -17.0457
 179:    -13.205
 182:   -18.0417
 184:   -21.5457
 197:       -1.5
 198:       -1.5
 208:   -0.83668
 211:          1
 212:          1
 213:          1
 214:          1
 215:          1
 216:          1
 }}}

 Btw, for running with CPLEX, I had to allow a small gap tolerance (e.g.,
 1%) to have it terminate timely.

 I used CPLEX 12.4.

 Stefan

-- 
Ticket URL: <https://projects.coin-or.org/ticket/21>
Couenne, a solver for non-convex MINLP problems <https://projects.coin-or.org/Couenne>
Couenne, a solver for non-convex MINLP problems



More information about the Couenne-tickets mailing list