Originally posted by: SystemAdmin
The warning occurs when Presolve reductions take out variables whose contribution to the objective function might involve cancellation (subtraction, or adding of opposite sign) of large terms giving a more modest sized answer. Barrier convergence criteria are sensitive to the order of magnitude of the objective function at the optimum.
Take for example this small linear continuous model:
Minimize
obj: 1000000 x1 + 1000000 x2 - x3
Subject To
c1: x1 + x2 >= 1
c2: x1 + 2 x2 >= 3
c3: x3 = 1500000
End
Because it's a minimization, by inspection the optimal solution will have x1=0 and x2=1.5. The constant term (x3) in the objective function is selected for this example to exactly cancel the contribution of x2 to the optimum - leading to an optimal objective function value of 0. Presolve removes variable x3 since its value is fixed. The remaining LP passed to Barrier has an optimal objective function value of 1500000. Barrier will approach this solution to a certain small tolerance, but when x3 is restored to the problem at the end (so that solution values can be reported) small roundoff remains because a large number is being subtracted from another large number, leaving a reported optimal solution value like 0.002 under defaults.
The principle is not very different for models containing quadratic elements. And the principle also applies when solving a model with integer restrictions, if Barrier is used for the subproblems (as it must, for cone programming problems).
Usually the computations made under these conditions remain sound. But if you want to ask Barrier to work a little harder to reach a closer convergence, requiring one or more additional iterations, you could try tightening the QCP complementary tolerance to a smaller value. Its default is 1e-7, meaning that primal and dual objective values must match to 7 digits in order for convergence to be declared. For your mixed-integer SOCP, this setting will apply to each subproblem solved. Note that it may not be possible to achieve convergence if you select a tolerance that is too tight. Also, the tighter tolerance will not cause the warning message to go away.
As for the relative MIP gap that you are having trouble getting to go below 50%, I doubt the presence of this warning message has much to do with that, directly, but it might suggest that you scale your objective function upward by several orders of magnitude and perhaps that will make a difference, if CPLEX is making branching decisions on values that are close to numerical noise.
Many integer programming problems are simply difficult, and you might take a look in the CPLEX User's Manual for general tips on solving challenging MIP models apart from the SOCP nature of the relaxation subproblem.
#CPLEXOptimizers#DecisionOptimization