Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  very strange dual variables behaviour

    Posted 10/21/10 07:32 AM

    Originally posted by: pjede


    Hello all, I am having a problem with cplex where i just quite plainly seem to see cplex is incorrect, although i cannot believe it.

    The problem has to do with the dual variables cplex delivers and that i use for column generation. The base problem is this:

    \Problem name: ilog.cplex

    Minimize
    obj: 0 IloX0 + 0 IloX1 + 0 IloX2 + 0 IloX3 + 0 IloX4 + 0 IloX5 + 0 IloX6
    + 0 IloX7 + 0 IloX8 + 0 IloX9 + 0 IloX10 + 0 IloX11 + 0 IloX12 + 0 IloX13
    + 0 IloX14 + 0 IloX15 + 0 IloX16 + 0 IloX17 + 0 IloX18 + 0 IloX19
    + 36 IloX20 + 36 IloX21 + 36 IloX22 + 36 IloX23 + 36 IloX24 + 36 IloX25
    + 36 IloX26 + 36 IloX27 + 36 IloX28 + 36 IloX29 + 36 IloX30 + 36 IloX31
    + 36 IloX32 + 36 IloX33 + 36 IloX34 + 36 IloX35 + 36 IloX36 + 36 IloX37
    + 36 IloX38 + 36 IloX39 + 36 IloX40 + 36 IloX41 + 36 IloX42 + 36 IloX43
    + 36 IloX44 + 36 IloX45 + 36 IloX46 + 36 IloX47 + 36 IloX48 + 36 IloX49
    + 36 IloX50 + 36 IloX51 + 36 IloX52 + 36 IloX53 + 36 IloX54 + 36 IloX55
    + 36 IloX56 + 36 IloX57 + 36 IloX58 + 36 IloX59 + 36 IloX60 + 36 IloX61
    + 36 IloX62 + 36 IloX63 + 36 IloX64 + 36 IloX65 + 36 IloX66 + 36 IloX67
    + 36 IloX68 + 36 IloX69 + 36 IloX70 + 36 IloX71 + 36 IloX72 + 36 IloX73
    + 36 IloX74 + 36 IloX75 + 36 IloX76 + 36 IloX77 + 36 IloX78 + 36 IloX79
    + 36 IloX80 + 36 IloX81
    Subject To
    IloC0: IloX20 >= 1
    IloC1: IloX21 >= 1
    IloC2: IloX22 >= 1
    IloC3: IloX23 >= 1
    IloC4: IloX24 >= 1
    IloC5: IloX25 >= 1
    IloC6: IloX26 >= 1
    IloC7: IloX27 >= 1
    IloC8: IloX28 >= 1
    IloC9: IloX29 >= 1
    IloC10: IloX30 >= 1
    IloC11: IloX31 >= 1
    IloC12: IloX32 >= 1
    IloC13: IloX33 >= 1
    IloC14: IloX34 >= 1
    IloC15: IloX35 >= 1
    IloC16: IloX36 >= 1
    IloC17: IloX37 >= 1
    IloC18: IloX38 >= 1
    IloC19: IloX39 >= 1
    IloC20: IloX40 >= 1
    IloC21: IloX41 >= 1
    IloC22: IloX42 >= 1
    IloC23: IloX43 >= 1
    IloC24: IloX44 >= 1
    IloC25: IloX45 >= 1
    IloC26: IloX46 >= 1
    IloC27: IloX47 >= 1
    IloC28: IloX48 >= 1
    IloC29: IloX49 >= 1
    IloC30: IloX50 >= 1
    IloC31: IloX51 >= 1
    IloC32: IloX52 >= 1
    IloC33: IloX53 >= 1
    IloC34: IloX54 >= 1
    IloC35: IloX55 >= 1
    IloC36: IloX56 >= 1
    IloC37: IloX57 >= 1
    IloC38: IloX58 >= 1
    IloC39: IloX59 >= 1
    IloC40: IloX60 >= 1
    IloC41: IloX61 >= 1
    IloC42: IloX62 >= 1
    IloC43: IloX63 >= 1
    IloC44: IloX64 >= 1
    IloC45: IloX65 >= 1
    IloC46: IloX66 >= 1
    IloC47: IloX67 >= 1
    IloC48: IloX68 >= 1
    IloC49: IloX69 >= 1
    IloC50: IloX70 >= 1
    IloC51: IloX71 >= 1
    IloC52: IloX72 >= 1
    IloC53: IloX73 >= 1
    IloC54: IloX74 >= 1
    IloC55: IloX75 >= 1
    IloC56: IloX76 >= 1
    IloC57: IloX77 >= 1
    IloC58: IloX78 >= 1
    IloC59: IloX79 >= 1
    IloC60: IloX80 >= 1
    IloC61: IloX81 >= 1
    Bounds
    0 <= IloX0 <= 2147483647
    0 <= IloX1 <= 2147483647
    0 <= IloX2 <= 2147483647
    0 <= IloX3 <= 2147483647
    0 <= IloX4 <= 2147483647
    0 <= IloX5 <= 2147483647
    0 <= IloX6 <= 2147483647
    0 <= IloX7 <= 2147483647
    0 <= IloX8 <= 2147483647
    0 <= IloX9 <= 2147483647
    0 <= IloX10 <= 2147483647
    0 <= IloX11 <= 2147483647
    0 <= IloX12 <= 2147483647
    0 <= IloX13 <= 2147483647
    0 <= IloX14 <= 2147483647
    0 <= IloX15 <= 2147483647
    0 <= IloX16 <= 2147483647
    0 <= IloX17 <= 2147483647
    0 <= IloX18 <= 2147483647
    0 <= IloX19 <= 2147483647
    0 <= IloX20 <= 5
    0 <= IloX21 <= 5
    0 <= IloX22 <= 5
    0 <= IloX23 <= 5
    0 <= IloX24 <= 5
    0 <= IloX25 <= 5
    0 <= IloX26 <= 5
    0 <= IloX27 <= 5
    0 <= IloX28 <= 5
    0 <= IloX29 <= 5
    0 <= IloX30 <= 5
    0 <= IloX31 <= 5
    0 <= IloX32 <= 5
    0 <= IloX33 <= 5
    0 <= IloX34 <= 5
    0 <= IloX35 <= 5
    0 <= IloX36 <= 5
    0 <= IloX37 <= 5
    0 <= IloX38 <= 5
    0 <= IloX39 <= 5
    0 <= IloX40 <= 5
    0 <= IloX41 <= 5
    0 <= IloX42 <= 5
    0 <= IloX43 <= 5
    0 <= IloX44 <= 5
    0 <= IloX45 <= 5
    0 <= IloX46 <= 5
    0 <= IloX47 <= 5
    0 <= IloX48 <= 5
    0 <= IloX49 <= 5
    0 <= IloX50 <= 5
    0 <= IloX51 <= 5
    0 <= IloX52 <= 5
    0 <= IloX53 <= 5
    0 <= IloX54 <= 5
    0 <= IloX55 <= 5
    0 <= IloX56 <= 5
    0 <= IloX57 <= 5
    0 <= IloX58 <= 5
    0 <= IloX59 <= 5
    0 <= IloX60 <= 5
    0 <= IloX61 <= 5
    0 <= IloX62 <= 5
    0 <= IloX63 <= 5
    0 <= IloX64 <= 5
    0 <= IloX65 <= 5
    0 <= IloX66 <= 5
    0 <= IloX67 <= 5
    0 <= IloX68 <= 5
    0 <= IloX69 <= 5
    0 <= IloX70 <= 5
    0 <= IloX71 <= 5
    0 <= IloX72 <= 5
    0 <= IloX73 <= 5
    0 <= IloX74 <= 5
    0 <= IloX75 <= 5
    0 <= IloX76 <= 5
    0 <= IloX77 <= 5
    0 <= IloX78 <= 5
    0 <= IloX79 <= 5
    0 <= IloX80 <= 5
    0 <= IloX81 <= 5
    End

    Then I add two new columns based on the dual information (which is of course 36 for all constraints), and the new problem becomes:

    \Problem name: ilog.cplex

    Minimize
    obj: 0 IloX0 + 0 IloX1 + 0 IloX2 + 0 IloX3 + 0 IloX4 + 0 IloX5 + 0 IloX6
    + 0 IloX7 + 0 IloX8 + 0 IloX9 + 0 IloX10 + 0 IloX11 + 0 IloX12 + 0 IloX13
    + 0 IloX14 + 0 IloX15 + 0 IloX16 + 0 IloX17 + 0 IloX18 + 0 IloX19
    + 36 IloX20 + 36 IloX21 + 36 IloX22 + 36 IloX23 + 36 IloX24 + 36 IloX25
    + 36 IloX26 + 36 IloX27 + 36 IloX28 + 36 IloX29 + 36 IloX30 + 36 IloX31
    + 36 IloX32 + 36 IloX33 + 36 IloX34 + 36 IloX35 + 36 IloX36 + 36 IloX37
    + 36 IloX38 + 36 IloX39 + 36 IloX40 + 36 IloX41 + 36 IloX42 + 36 IloX43
    + 36 IloX44 + 36 IloX45 + 36 IloX46 + 36 IloX47 + 36 IloX48 + 36 IloX49
    + 36 IloX50 + 36 IloX51 + 36 IloX52 + 36 IloX53 + 36 IloX54 + 36 IloX55
    + 36 IloX56 + 36 IloX57 + 36 IloX58 + 36 IloX59 + 36 IloX60 + 36 IloX61
    + 36 IloX62 + 36 IloX63 + 36 IloX64 + 36 IloX65 + 36 IloX66 + 36 IloX67
    + 36 IloX68 + 36 IloX69 + 36 IloX70 + 36 IloX71 + 36 IloX72 + 36 IloX73
    + 36 IloX74 + 36 IloX75 + 36 IloX76 + 36 IloX77 + 36 IloX78 + 36 IloX79
    + 36 IloX80 + 36 IloX81 + 239 IloX82 + 240 IloX83
    Subject To
    IloC0: IloX20 + IloX82 >= 1
    IloC1: IloX21 >= 1
    IloC2: IloX22 + IloX82 >= 1
    IloC3: IloX23 >= 1
    IloC4: IloX24 + IloX82 >= 1
    IloC5: IloX25 >= 1
    IloC6: IloX26 + IloX82 >= 1
    IloC7: IloX27 >= 1
    IloC8: IloX28 >= 1
    IloC9: IloX29 >= 1
    IloC10: IloX30 >= 1
    IloC11: IloX31 >= 1
    IloC12: IloX32 >= 1
    IloC13: IloX33 >= 1
    IloC14: IloX34 >= 1
    IloC15: IloX35 >= 1
    IloC16: IloX36 + IloX82 >= 1
    IloC17: IloX37 >= 1
    IloC18: IloX38 >= 1
    IloC19: IloX39 >= 1
    IloC20: IloX40 + IloX82 >= 1
    IloC21: IloX41 >= 1
    IloC22: IloX42 >= 1
    IloC23: IloX43 >= 1
    IloC24: IloX44 + IloX82 >= 1
    IloC25: IloX45 >= 1
    IloC26: IloX46 >= 1
    IloC27: IloX47 + IloX82 >= 1
    IloC28: IloX48 >= 1
    IloC29: IloX49 >= 1
    IloC30: IloX50 >= 1
    IloC31: IloX51 >= 1
    IloC32: IloX52 + IloX83 >= 1
    IloC33: IloX53 >= 1
    IloC34: IloX54 + IloX83 >= 1
    IloC35: IloX55 >= 1
    IloC36: IloX56 + IloX83 >= 1
    IloC37: IloX57 >= 1
    IloC38: IloX58 + IloX83 >= 1
    IloC39: IloX59 >= 1
    IloC40: IloX60 >= 1
    IloC41: IloX61 >= 1
    IloC42: IloX62 >= 1
    IloC43: IloX63 >= 1
    IloC44: IloX64 >= 1
    IloC45: IloX65 >= 1
    IloC46: IloX66 >= 1
    IloC47: IloX67 >= 1
    IloC48: IloX68 + IloX83 >= 1
    IloC49: IloX69 >= 1
    IloC50: IloX70 >= 1
    IloC51: IloX71 >= 1
    IloC52: IloX72 >= 1
    IloC53: IloX73 + IloX83 >= 1
    IloC54: IloX74 >= 1
    IloC55: IloX75 >= 1
    IloC56: IloX76 >= 1
    IloC57: IloX77 + IloX83 >= 1
    IloC58: IloX78 >= 1
    IloC59: IloX79 >= 1
    IloC60: IloX80 + IloX83 >= 1
    IloC61: IloX81 >= 1
    Bounds
    0 <= IloX0 <= 2147483647
    0 <= IloX1 <= 2147483647
    0 <= IloX2 <= 2147483647
    0 <= IloX3 <= 2147483647
    0 <= IloX4 <= 2147483647
    0 <= IloX5 <= 2147483647
    0 <= IloX6 <= 2147483647
    0 <= IloX7 <= 2147483647
    0 <= IloX8 <= 2147483647
    0 <= IloX9 <= 2147483647
    0 <= IloX10 <= 2147483647
    0 <= IloX11 <= 2147483647
    0 <= IloX12 <= 2147483647
    0 <= IloX13 <= 2147483647
    0 <= IloX14 <= 2147483647
    0 <= IloX15 <= 2147483647
    0 <= IloX16 <= 2147483647
    0 <= IloX17 <= 2147483647
    0 <= IloX18 <= 2147483647
    0 <= IloX19 <= 2147483647
    0 <= IloX20 <= 5
    0 <= IloX21 <= 5
    0 <= IloX22 <= 5
    0 <= IloX23 <= 5
    0 <= IloX24 <= 5
    0 <= IloX25 <= 5
    0 <= IloX26 <= 5
    0 <= IloX27 <= 5
    0 <= IloX28 <= 5
    0 <= IloX29 <= 5
    0 <= IloX30 <= 5
    0 <= IloX31 <= 5
    0 <= IloX32 <= 5
    0 <= IloX33 <= 5
    0 <= IloX34 <= 5
    0 <= IloX35 <= 5
    0 <= IloX36 <= 5
    0 <= IloX37 <= 5
    0 <= IloX38 <= 5
    0 <= IloX39 <= 5
    0 <= IloX40 <= 5
    0 <= IloX41 <= 5
    0 <= IloX42 <= 5
    0 <= IloX43 <= 5
    0 <= IloX44 <= 5
    0 <= IloX45 <= 5
    0 <= IloX46 <= 5
    0 <= IloX47 <= 5
    0 <= IloX48 <= 5
    0 <= IloX49 <= 5
    0 <= IloX50 <= 5
    0 <= IloX51 <= 5
    0 <= IloX52 <= 5
    0 <= IloX53 <= 5
    0 <= IloX54 <= 5
    0 <= IloX55 <= 5
    0 <= IloX56 <= 5
    0 <= IloX57 <= 5
    0 <= IloX58 <= 5
    0 <= IloX59 <= 5
    0 <= IloX60 <= 5
    0 <= IloX61 <= 5
    0 <= IloX62 <= 5
    0 <= IloX63 <= 5
    0 <= IloX64 <= 5
    0 <= IloX65 <= 5
    0 <= IloX66 <= 5
    0 <= IloX67 <= 5
    0 <= IloX68 <= 5
    0 <= IloX69 <= 5
    0 <= IloX70 <= 5
    0 <= IloX71 <= 5
    0 <= IloX72 <= 5
    0 <= IloX73 <= 5
    0 <= IloX74 <= 5
    0 <= IloX75 <= 5
    0 <= IloX76 <= 5
    0 <= IloX77 <= 5
    0 <= IloX78 <= 5
    0 <= IloX79 <= 5
    0 <= IloX80 <= 5
    0 <= IloX81 <= 5
    0 <= IloX82 <= 5
    0 <= IloX83 <= 5
    End

    However, only the dual variables belonging to constraints 0, 2, 32 and 34 change, while I would expect the dual information of constraints 4, 6, 16, 20, 24, 27, 36, 38, 48, 53, 57 and 60 to change. Is there anybody that can shed some light on this issue. I am using CPLEX 11.0, is this a know issue.
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: very strange dual variables behaviour

    Posted 10/21/10 10:19 AM

    Originally posted by: SystemAdmin


    There's no bug here. The solution to your first LP is not degenerate, but the solution to your second LP is. That means the second LP has multiple dual solutions. (I got a different one than what you reported when I solved it.) Solve the second LP in the interactive optimizer and then display the sensitivity information for the RHS. When the current value equals either of the "down" and "up" limits, you have a degenerate primal and (most likely) multiple dual solutions.

    /Paul

    Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: very strange dual variables behaviour

    Posted 10/28/10 01:57 PM

    Originally posted by: pjede


    You are true, it was my mistake. Thanks.
    #CPLEXOptimizers
    #DecisionOptimization