I have encountered what I think qualifies as a bug in CPLEX 20.1 (using the Java API). It occurs in a "big M" type linear program solved within a generic callback (candidate context). The gist is that the LP minimizes a nonnegative variable (zTotal) subject to various constraints, some of the "big M" type. The model includes free variables (bounded by -M and M). The solver returns status "optimal", but the getObjValue() method returns a large
negative result. On the other hand, getValue(zTotal) returns a positive (and plausible) value.
The attached zip archive contains a PDF describing what is going on and the source code. Debug comments in the CBSubproblem2.java file indicate things to try, and where to set a conditional breakpoint to observe the phenomenon.
------------------------------
Paul Rubin
Professor Emeritus
Michigan State University
------------------------------
#DecisionOptimization