Originally posted by: maiklb2005
Hello, everybody!
To see what LP problem CPLEX solves at the root node (including cuts added by CPLEX), I use the following input MIP problem (stored in .lp file) for the admipex1.c :
Maximize
obj: 79 x1 + 70 x2 + 61 x3 + 52 x4
Subject To
c1: 35 x1 + 51 x2 + 67 x3 + 100 x4 <= 150
Bounds
0 <= x1 <= 1
0 <= x2 <= 1
0 <= x3 <= 1
0 <= x4 <= 1
Binaries
x1 x2 x3 x4
End
The output LP with cuts added by CPLEX is as follows:
Maximize
obj: 79 x1 + 70 x2 + 61 x3 + 52 x4
Subject To
c1: 35 x1 + 51 x2 + 67 x3 + 83 x4 <= 118
c2: 3 x2 + 4 x4 - x5 = 0
v0: x2 + x3 <= 1
i1: x3 + 0.25 x5 <= 1
Bounds
x1 = 1
x2 = 0
x3 = 1
x4 = 0
x5 = 0
End
I know the LP problem formulation looks self-explanatory, there are still certain points that I would like to clarify.
Even though, the optimal value to the original problem found by CPLEX is 149 (please see the screenshot attached), by inspection, the optimal value of the LP problem is 79+61 = 140 (since x1 = x3 = 1). How can it be?
The lower bound value that is shown in the screenshot - 178.1343 corresponds to the LP problem subject to c1 only. The value that satisfies c1, c2, v0 and i1 is 162, but it is not shown (why?), and it is different from 149. It appears that these cuts are not facet-defining, and yet, the lower bound is zero. Was the lower bound obtained by branching?
The LP model does not contain the original constraint. Was the constraint c1 of the original formulation deleted because it was replaced by a stronger inequality?
The LP contains a new decision variable x5, how was that variable introduced and why?
Is there a way to tell the cut type (Gomory, cover, etc) based on the output?
Thank you very much.
#DecisionOptimization#OPLusingCPLEXOptimizer