[ library(eplex) | Reference Manual | Alphabetic Index ]

lp_add_constraints(+Handle, +Constraints, ++Integers)

Add new constraints to the solver Handle, possibly triggering it.
Handle
Handle to a solver state
Constraints
A (possibly empty) list of equality or inequality constraints
Integers
A (possibly empty) list of variables to be considered as integers in the problem

Description

Add new constraints (with possibly new variables) to a solver. NewIntegers is a list of variables that the external solver should consider as integers The new constraints will be taken into account the next time the solver is run: if the new_constraint option of lp_demon_setup was turned on, then the solver will be invoked after the adding of the constraints, unless they are already satisfied. The constraints will be removed on backtracking.

The constraints are normalised and simplified before being passed to the external solver. If any constraint is ground, they are tested for consistency.

The constraints can be linear equalities and inequalities, sos/1 and sos2/1 constraints, and =≥/2 indicator constraints.

Note that variables in NewIntegers can be any problem variables. In previous versions of ECLiPSe, there was a restriction that the variables be new problem variables; this restriction has been removed.

Fail Conditions

Any ground (no variable) or bound constraints (one variable) is self-inconsistent.

Resatisfiable

no

Exceptions

(4) instantiation fault
Handle, Constraints or Integers uninstantiated.
(5) type error
Some constraint in Constraints is non-linear.
(40) stale object handle
Handle not valid: solver state had been destroyed by cleanup

See Also

lp_demon_setup / 5, lp_add / 3, lp_add_constraints / 4, eplex_add_constraints / 2, $= / 2, $=< / 2, $>= / 2, =:= / 2, =< / 2, >= / 2, sos1 / 1, sos2 / 1, => / 2