[ library(eplex) | Reference Manual | Alphabetic Index ]
# piecewise_linear_hull(?X, ++Points, ?Y)

# EplexInstance:piecewise_linear_hull(?X, ++Points, ?Y)

Relates X and Y according to a piecewise linear function.
*X*
- Parameter/domain of the piecewise function
*Points*
- List of points defining the piecewise function
*Y*
- Result/range of piecewise the function

## Description

This predicate is intended for use with hybrid ic/eplex solving. It
imposes the constraint Y = f(X), where f is a piecewise
linear function defined by Points: the piecewise_linear/3 constraint for
the ic solver, and a linear relaxation of it for the eplex instance
EplexInstance. Please see the documentation for
piecewise_linear/3 for details of how the piecewise linear function is
specified.

This predicate extends lib(ic)'s piecewise_linear/3 by also computing the convex hull
of the portions of the constraint which are feasible with respect to the
current bounds (stored with the IC bounds) of X and Y. Constraints (and
bounds) defining this convex hull are then
passed to the eplex instance. Changes in the IC bounds of the variables are
automatically forwarded to the eplex instance, so that these constraints are updated whenever new
bounds on X or Y change the convex hull. Note that the reverse, i.e. bounds
changes on the eplex instance, are NOT forwarded to the IC bounds.

This implementation of the piecewise
constraint accepts bounded reals in its arguments, but it
does not fully support bounded reals of non-zero width (i.e.
those which do not correspond to a single floating point value). As a
result, use of such bounded reals is not recommended at this time.

## See Also

ic : piecewise_linear / 3