Many integer programming models have constraints of the form:

f(x) ≤ M * z

where f(x) is some function of the decision variables, M is a large constant term, and z is a binary variable.  These types of constraints are called forcing constraints and are used to force the binary variable, z, to 1 when f(x) is nonzero.  In many instances, the binary variable is multiplied by a fixed cost term in the objective; a fixed cost that is incurred when a particular activity, represented by f(x), occurs.  The large constant term, M, Is frequently referred to as being a BigM coefficient.

Setting BigM too small can lead to infeasible or suboptimal models.  Therefore, the BigM value will typically have to be rather large in order to exceed the largest activity level of f(x). When BigM is large, the solver may discover that by setting z slightly positive (within normal integrality tolerances), it can increase f(x) to a significant level and thereby improve the objective.  Although such solutions are technically feasible to tolerances, they are invalid in that the activity is occurring without incurring its associated fixed cost.

The BigM threshold is designed to avoid this problem by allowing LINGO to identify the binary variables that are being set by forcing constraints.  Any binary variable with a coefficient larger than the BigM threshold will be subject to a much tighter integrality tolerance.

The default value for the BigM Threshold is 1.e8.