lib(eplex)


   This library lets you use an external Mathematical Programming solver 
   from within ECLiPSe. This is done either directly to the solver, like
   CPLEX, XPRESS-MP or Gurobi, or indirectly via COIN-OR project's Open Solver
   Interface (OSI), giving access to the CLP, CBC and SYMPHONY solvers.
   For the commercial solvers, the library provides just the interface, 
   and does not include the solver or any required licence to use them.

    The constraints provided are:
    
    Vs $:: BoundBounds on variables
    X $= Yequality over linear expressions
    X $>= Yinequality over linear expressions
    X $=< Yinequality over linear expressions
    integers(Xs)integrality of variables
    sos1(Xs)all but one are zero
    sos2(Xs)all but two consecutive values are zero
    Cond=>Linearindicator constraint (some solvers only)
    
    The operational behaviour of the linear constraints is as follows:

    When they contain no variables, they simply succeed or fail.

    When they contain exactly one variable, they are translated into a
    bound update on that variable for the external solver instance. This
    can lead to immediate failure if the lower bound is greater than the upper.

    Otherwise, the constraint is transferred to the external solver
    immediately (or as soon as the solver is set up).

The following arithmetic expression can be used inside the constraints:

X
Variables. If X is not yet a problem variable for the external solver
    instance, it  is turned into one via an implicit declaration 
    X :: -inf..inf.


123, 3.4
Integer or floating point constants.


+Expr
Identity.


-Expr
Sign change.


E1+E2
Addition.


sum(ListOfExpr)
Equivalent to the sum of all list elements.


E1-E2
Subtraction.


E1*E2
Multiplication.


ListOfExpr1*ListOfExpr2
Scalar product: The sum of the products of the corresponding
elements in the two lists.  The lists must be of equal length.


The external solver can either be explicitly invoked to solve the
problem represented by the constraints, or be invoked in response to
certain trigger conditions. This mechanism makes it possible to tailor
the solving behaviour for a particular application's needs.



