epsilon (degree of tolerance) used in linearization

Sets the epsilon (degree of tolerance) used in linearization.

Purpose

Epsilon used in linearization

API Parameter Name Name prior to V12.6.0
C CPXPARAM_MIP_Tolerances_Linearization  
C++ IloCplex::Param::MIP::Tolerances::Linearization EpLin (double)
Java IloCplex.Param.MIP.Tolerances.Linearization EpLin (double)
.NET Cplex.Param.MIP.Tolerances.Linearization EpLin (double)
OPL eplin
Python parameters.mip.tolerances.linearization
Interactive mip tolerances linearization
Identifier 2068 2068

Description

Sets the epsilon (degree of tolerance) used in linearization.

This parameter controls how strict inequalities are managed during linearization. In other words, it provides an epsilon for deciding when two values are not equal during linearization. For example, when x is a numeric variable (that is, an instance of IloNumVar ),

x < a

becomes

x <= a-eplin .

Similarly, x!=a

becomes

{(x < a) || (x > a)}

which is linearized automatically for you in the object-oriented APIs as

{( x <= a-eplin) || (x >= a+eplin)} .

Exercise caution in changing this parameter from its default value: the smaller the epsilon, the more numerically unstable the model will tend to become. If you are not getting an expected solution for an object-oriented model that uses linearization, it might be that this solution is cut off because of the relatively high EpLin value. In such a case, carefully try reducing it.

This parameter is also used, for example, to linearize indicator constraints of type CPX_INDICATOR_ONLYIF and CPX_INDICATOR_IFANDONLYIF. See, for example, CPXXaddindconstraints and CPXaddindconstraints.

Values

Any positive value greater than zero; default: 1e-3.