2

When running CPLEX on the same ILP problem (exactly the same input file):

  • With MIPEmphasis = 3 I get an objective value of 6.81613e-06
  • With MIPEmphasis = 4 I get an objective value of 1.03858

In both cases, CPLEX returns an OPTIMAL status.

From the CPLEX user manual:

To make clear a point that has been alluded to so far: every choice of MIPEmphasis results in the search algorithm proceeding in a manner that eventually will find and prove an optimal solution, or will prove that no integer feasible solution exists. The choice of emphasis only guides CPLEX to produce feasible solutions in a way that is in keeping with the user's particular purposes, but the accuracy and completeness of the algorithm is not sacrificed in the process.

Am I missing something here? I am facing this problem not only with the MIPEmphasis parameter, but with other parameters as well (ScaInd for example), where by varying the parameter I get different OPTIMAL solutions that greatly vary in quality.

Here's some more info which I can't seem to decipher.

For MIPEmphasis = 3:

Maximum condition number = 5.03484e+12, 
Attention level = 0.290111, 
Suspicious bases: 0.0111111, 
Unstable bases = 0.966667, 
Ill-posed bases = 0, 
CPLEX Status = `OptimalTol`

For MIPEmphasis = 4:

Maximum condition number = 4.73342e+08, 
Attention level = 0.00925, 
Suspicious bases: 0.925, 
Unstable bases = 0, 
Ill-posed bases = 0, 
CPLEX Status = `Optimal`
entrophy
  • 2,065
  • 14
  • 20

1 Answers1

2

This looks like numerical-trouble which is common and depends greatly on your modelling (e.g. usage of big-M constants).

I never used CPLEX, but this official page talks about ill-conditioned MIP models.

Small excerpt relevant here:

You should reconsider your model if CPLEX reports any ill-posed bases or more than 5% unstable bases.

In your case A, you got more than 95% unstable bases:

For MIPEmphasis = 3: .... Unstable bases = 0.966667 ...

So it's quite possible, that the result of A can't be trusted. Furthermore i would try to reformulate my model.

If we look at B, you got > 92.5% suspicious bases, so maybe even in this case the model is asking for trouble.

As i'm not familiar with all the tunings and defaults, i can't give any insight on the source of these pretty different computational results in regards to your MIPEmphasis and co. (maybe generating more cutting-planes due to MIPEmphasis result in a more stable problem; just guessing).

sascha
  • 32,238
  • 6
  • 68
  • 110
  • Thanks for the insight! I followed that lead and discovered the main culprit. My variables are integer variables with a non-continuous range: each variable can either be `x = 0`, `a <= x <= b`, or `x = c`. Removing at least one of these ORs results in 0 unstable bases. Any insight on how to represent this best? – Noran H. Azmy Jul 27 '17 at 10:38