lib(eplex)


   This library lets you use an external Mathematical Programming solver 
   from within ECLiPSe.  Solvers that can be connected through eplex
   include the open source solvers
   
   CLP/CBC from the COIN-OR open-source project (eplex_osi)
   GLPK (eplex_glpk)
   HiGHS (eplex_highs)
   
   and the commercial solvers
   
   CPLEX (eplex_cplex)
   Gurobi (eplex_gurobi)
   XPRESS-MP (eplex_xpress)
   
   For the commercial solvers, this library provides just the interface, 
   and does not include the solver or any required licence to use them.

    The constraints provided are:
    
    reals(Xs)the variables Xs all take real values
    integers(Xs)the variables Xs all take integer values
    Xs $:: Lwb..Upbthe variables Xs have the given bounds
    X $= Yequality over linear expressions
    X $>= Yinequality over linear expressions
    X $=< Yinequality over linear expressions
    
    Depending on the capabilities of the external solver, the following
    may also be supported:
    
    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 or reals([X]).


123, 3.4
Integer or floating point constants.


+Expr
Identity.


-Expr
Negation.


E1+E2
Addition.


E1-E2
Subtraction.


E1*E2
Multiplication.


sum(Vector)
Equivalent to the sum of all vector elements. The vector can be a list,
array or any of the vector expressions supported by eval_to_list/2.


sum(Vector1*Vector2)
Scalar product: The sum of the products of the corresponding
elements in the two vectors.   The vectors can be lists, arrays or any
of the vector expressions supported by eval_to_list/2.  If the vectors
are of different length, the shorter one is padded with trailing zeros.



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.



