> Discrete Optimization > Solving Mixed Integer Programming Problems (MIP) > Troubleshooting MIP Performance Problems > Slightly Infeasible Integer Variables |
Slightly Infeasible Integer Variables |
INDEX PREVIOUS NEXT |
On some models, the integer solution returned by CPLEX at default settings may contain solution values for the discrete variables that violate integrality by a small amount. The integrality tolerance parameter, EpInt
, has a default value of 1e-5, which means that any discrete variable that violates integrality by no more than this amount will not be branched upon for resolution. For most model formulations, this situation is satisfactory and avoids branching that may be essentially meaningless and only consumes additional computing time.
However, some formulations combine discrete and continuous variables, for example, involving constraint coefficients over a million in magnitude, where even a small integrality violation can be magnified elsewhere in the model. In such situations, you may attempt to address this variation by tightening the simplex feasibility tolerance, EpRHS
, from its default value of 1e-6 to as low as 1e-9, its minimum, and also tighten EpInt
to a similar value, and re-run the MIP optimization from the beginning.
If this adjustment is insufficient to give satisfactory results, you can also try setting EpInt
all the way to zero, preferably in conjunction with a tightened EpRHS
setting. This very tight integrality tolerance directs CPLEX to attempt to branch on any integer infeasibility, no matter how small. Numerical roundoff due to floating-point arithmetic on any computer may make it impossible to achieve this tolerance, but in practice, the setting achieves its aim in many models and reduces the integrality violations to near the machine tolerance (around 1e-15) on many others.
Copyright © 1987-2003 ILOG, S.A. All rights reserved. Legal terms. | PREVIOUS NEXT |