Originally posted by: SystemAdmin
CPLEX (and all other MIP solvers) is based on floating point arithmetics. If the values in the floating point calculations are of very different scale, then there is risk to get round off errors.
The typical way of dealing with numerical issues (i.e., round off errors) is to introduce feasibility tolerances, i.e., a threshold up to which an infeasibility is considered acceptable because it could just be the result of round off errors.
If your model is ill-conditioned (CPLEX needs to invert sub-matrices with high condition number), then it could happen that the numerics become so poor that you can no longer trust the results. This can even mean that changes like permuting the rows can lead to differences in the result. This is not a property of CPLEX, but of any floating point based numerical software.
CPLEX provides a tool to assess the numerical stability of your model. For continuous problems you can see the condition number of the final optimal basis by entering
display solution quality
in the interactive CPLEX shell. For MIPs, you need to activate the "MIP kappa" feature to get statistics about the numerical quality of the model and the solving process:
read yourproblem.sav set mip strategy kappa 2 optimize display solution quality
If you see a maximal condition number that is significantly larger than 1e+10, then it is likely that the model has numerical problems. One advice would be to avoid very large and very small coefficients in the constraint matrix. Maybe, you can rescale the variables to avoid those coefficients. For example, you could express variables that measure distance in kilometers instead of millimeters, or variables that measure costs in millions of dollars instead of cents.
Tobias
#CPLEXOptimizers#DecisionOptimization