[ library(eplex) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

# lp_set(+Handle, ++What, +Value)

Change initial options for solver state Handle.

Handle
  Handle to a solver state
What
  Option to set
Value
  Value being set

## Description

This primitive can be used to change some of the initial options even after setup. Handle refers to an existing solver state, What can be one of the following:

`method`
  Set the method that will be used to solve the problem. Value is one of `default, primal, dual, net, net(Simplex), barrier, barrier(Crossover), sifting, sifting(SubMethod)`. Simplex can be one of `default, primal, dual`, specifying the Simplex method to use in the Network Simplex algorithm. Crossover can be one of `default, primal, dual, none`, specifying the crossover method to use for the barrier method. SubMethod could be one of default, primal, dual, net, barrier, specifying the method to use for the subproblems in the sifting method. Note that some of these methods may not be available on all external solvers. In case of MIP solving, this is the start algorithm (the one that is used to solve the initial relaxation).

`node_method`
  Applicable to MIP problems only. Set the method that will be used to solve the problem at the nodes (except the root) of the branch-and-bound tree. Note that the method for solving the root node is controlled by the `method` option. Value can be set to the same values as in the `method` option, although there may be more restrictions on what the actual methods/auxiliary methods that are allowed in combination with the root method, due to limitations/restrictions from the external solver. A warning will be given when the problem is solved if this is the case, and the default method used instead.

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

`reduced_cost`
  Make the reduced costs available each time the problem has been (re-)solved successfully. If the problem is a MIP, then depending on the external solver, this is either unavailable or are the values for the optimal LP node. Value is one of the atoms `yes` or `no`.

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

`dual_solution`
  Make the dual solutions available each time the problem has been (re-)solved successfully. If the problem is a MIP, then depending on the external solver, this is either unavailable or are the values for the optimal LP node. Value is one of the atoms `yes` or `no`.

`keep_basis`
  Store the basis each time the problem has been solved successfully, and use this basis as a starting point for re-solving next time. Value is one of the atoms `yes` or `no`.

`demon_tolerance`
  Specify how far outside a variable's range an lp-solution can fall before lp_demon_setup/5 re-triggers. Value is a comma-separated pair `(RealTol,IntTol)` of floating-point values (default `(0.00001,0.5)`).

`use_var_names`
  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. Note also that only new variables from constraints added after the `lp_set/3` call will pass their names to the external solver. Value is one of the atoms `yes` or `no`.

`timeout`
  Set the external solver to time-out after `Value` seconds. The solver will abort (in either the abort or suboptimal state, depending on if a suboptimal solution was found) if the optimal solution was not found within the time limit. In cases where the solver expects an integer for the time-out interval, the time given is rounded up to the next integer value. This should be used instead of the solver specific optimizer_param(Param) for setting timeouts, as eplex sets these parameter(s) itself. Note that the exact behaviour of the timeout setting is solver dependent. Value is a positive number.

`cutpool_option(Idx,Option)`
  Set the option Option as specified by Value for the cutpool constraint with index Idx. Option is one of the following:
  `active`
    Set the active status for the constraint Idx to Value. Value can be 0 or 1. 0 is non-active, 1 is active.
  `add_initially`
    Specify if the constraint Idx should be added to a problem before the solver is invoked. Value can be 0 or 1. 1 is to add initially, 0 not.

  Note that the option is not undone on backtracking.

`cutpool_group`
  Value is an atom, and is used to specify the name of a group of cutpool constraints. If Name is not a current group name, a new group with that name is created. Once created, a named group exists until the problem is destroyed. The default group (with the atom nil (`[]`) as its name) is predefined and does not need to be created with `cutpool_group`.

`suboptimal_handler`
  Value is a user defined goal to handle the case when the external solver returned a suboptimal solution (because the problem was aborted). Value would replace any existing suboptimal handler, and would also be run in place of raising the default `eplex_suboptimal` event.

`unbounded_handler`
  Value is a user defined goal to handle the case when the problem is unbounded. Value would replace any existing unbounded handler, and would be run in place of raising the default `eplex_unbounded` event.

`unknown_handler`
  Value is a user defined goal to handle the case when the external solver was not able to determine if the problem is unbounded Value would replace any existing unknown handler, and would be run in place of raising the default `eplex_unknown` event.

`abort_handler`
  Value is a user defined goal to handle the case when the external solver aborted without finding any solution. Value would replace any existing abort handler, and would be run in place of raising the default `eplex_abort` event.

`optimizer_param(Param)`
  Set the external solver's control parameter Param for the problem `Handle`. If the solver's parameters are global and not problem specific, an unimplemented functionality exception would be raised. See lp_get/3 for more details on the external solver's parameters.

`write_before_solve`
  Value can be the pair (Format,File) or the atom no. If (Format,File) is given, Eplex will ask the external solver to dump the problem each time the solver is solved. This allows the problem in an `eplex_probe/2` or `lp_probe/3` to be dumped. As in `lp_write/3`, `Format` is the format of the dumped problem, and File is the filename. See for more details. Note that the problem is dumped each time the external solver is invoked if the problem has cutpool constraints, where there may be multiple invocations of the solver per solver call. `no' for Value will turn off this dumping.

`post_equality_when_unified`
  Value can be the atoms yes or no. Determines if an equality constraint between two solver variables will be posted to the solver when these variables are unified. Setting Value to no means that the constraint will not be posted. Note that this can lead to the solver's problem becoming inconsistent with ECLiPSe's.

Making solutions available means that they can be retrieved using lp_get/3 or lp_var_get/4 after the solver has been run successfully.

### Resatisfiable

no

## See Also

lp_setup / 4, lp_get / 3, lp_var_get / 4, eplex_set / 2