
lp_setup(+NormConstraints, +Objective, ++ListOfOptions, -Handle)

   Create a new external solver state for the constraints NormConstraints.

Arguments
   NormConstraints     normalised constraints
   Objective           Objective function: min(CostExpr) or max(CostExpr)
   ListOfOptions       List of solver options
   Handle              handle to solver state

Type
   library(eplex)

Description

    Create a new solver state for the set of constraints NormConstraints
    (see normalise_cstrs/3 for how to obtain a set of normalised
    constraints).  Apart from the explicitly listed constraints, the
    variable's ranges will be taken into account as the variable bounds for
    the simplex algorithm.  Undeclared variables are implicitly declared as
    reals (see reals/1 of the range library).


    However, when variables have been declared integers (using ::/2 or
    integers/1 of the range library) that is not taken into account by the
    solver by default.  This means that the solver will only work on the
    relaxed problem (ie. ignoring the integrality constraints),
    unless specified otherwise in the options.


    LinearExpr in Objective is a linear expression
    (or quadratic if supported by the external solver).


    Options is a list of options (see below).



    A solver-handle Handle is returned which is used to refer to the solver
    subsequently.


The solver Options are:


method(+Method)
    Use the specified method (default, primal, dual, net_primal, 
    net_dual, barrier, barrier_primal, barrier_dual) to solve the 
    problem. Note that some of the methods may not be available on all 
    external solvers. When solving a MIP this specifies the start algorithm 
    (the one that is used to solve the initial relaxation). See the external 
    solver's manual for a description of these methods. The meaning of the 
    default method depends on the external solver. 


solution(+YesNo)
    Make the solutions available each time the problem has been (re-)solved
    successfully.
    YesNo is one of the atoms yes or no, the default is 
    yes.


dual_solution(+YesNo)
    Make the dual solutions available each time the problem has been 
    (re-)solved successfully.
    YesNo is one of the atoms yes or no, the default is 
    no.


slack(+YesNo)
    Make the constraint slacks available each time the problem has been 
    (re-)solved successfully.
    YesNo is one of the atoms yes or no, the default is 
    no.


reduced_cost(+YesNo)
    Make the reduced costs available each time the problem has been (re-)solved
    successfully.
    YesNo is one of the atoms yes or no, the default is 
    no.


keep_basis(+YesNo)
    Store the basis each time the problem has been solved successfully,
    and use this basis as a starting point for re-solving next time.
    This option only affects performance.
    YesNo is one of the atoms yes or no, the default is 
    no.


demon_tolerance(RealTol, IntTol)
    Specify how far outside a variable's range an lp-solution
    can fall before lp_demon_setup/6 re-triggers.
    RealTol and IntTol are floats and default to
    0.00001 and 0.5 respectively.


sos1(VarList)
    VarList is a list of variables which the solver should
    treat as variables of a type 1 special ordered set (SOS), i.e. at most
    one of the variables in the set can be non-zero.


sos2(VarList)
    VarList is a list of variables which the solver should
    treat as variables of a type 2 special ordered set (SOS), i.e. at most
    two of the variables in the set can be non-zero.


presolve(+YesNo)
    Specify if the external solver should perform presolve for this
    problem. With presolving, the external solver will transform the
    problem before solving it. This can lead to significantly faster times
    to find solutions. However, as the problem has been transformed, some
    external solvers have restriction on accessing or changing the problem
    state. In addition, if the solver is repeatedly called because the
    problem is frequently modified, then presolve may not be an advantage.
    YesNo is one of the atoms yes or no, the default is 
    determined by the global setting of presolve, which can be
    changed via lp_set/2. The initial default is yes.
    Note that the presolve setting cannot be changed for a problem once it
    is set.


use_var_names(+YesNo)
    Specify if variable names (set using set_var_name/2 of the 
    var_name library) should be passed to the external solver. If a 
    particular variable does not have a name, a solver's default name 
    would be used. Note that for XPRESS-MP, there is a limit on the length
    of the name, which can be changed between 8 and 64 in steps of 8 with
    the parameter N_NAMLEN. Variable names longer than this limit 
    are truncated to the limit. 
    YesNo is one of the atoms yes or no, the default is 
    no.



See Also
   lp_add / 3, lp_set / 3, lp_solve / 2, lp_probe / 3, lp_get / 3, normalise_cstrs / 3, suspend : reals / 1, range : reals / 1, ic : reals / 1, ic_kernel : reals / 1
