[ library(colgen) | Reference Manual | Alphabetic Index ]

# ColgenInstance:solver_setup(+SolveSubProblem, +Obj, +Options)

Define subproblem, objective and options for ColgenInstance.

SolveSubProblem
  Subproblem solution predicate
Obj
  The objective function to minimize
Options
  A list of options

## Description

Define the partial linear expression `Obj` as the objective to minimize for the problem associated with the colgen instance `ColgenInstance`. It will typically contain implicit_sum terms.

Associate the user-defined predicate `SolveSubProblem` to provide profitable variables during the solution process.

The first argument of the subproblem solution predicate must be a subproblem structure:

          sp_prob(master_pool, cutoff, cost, coeff_vars, aux, ...)

where and `master_pool` will be unified with the colgen instance `ColgenInstance` so that solutions can be posted to it from within the solution predicate, `cutoff` is a minimum acceptable value for the cost of subproblem solutions that will be updated before calling the predicate, `cost` is the variable occurring in the implicit sum term of `obj` (if any) representing the contribution of new subproblem solutions to the master problem solution cost, `coeff_vars` is a list of all subproblem variables occurring in the implicit sum terms of master problem constraints.

The following options are accepted:

`separate(+SeparationGoal)`
  a user-specified separation goal (XXX).
`node_select(+Val)`
  node selection criterion passed to bfs instance `(best_first|depth_first|best_estimate)`.
`eplex_option(+EplexOption)`
  Option to be passed to the associated eplex solver instance.
`disallow(+Policy)`
  policy for active prevention of duplicate columns `(off|lp|clp)`.
`int_tolerance(+Tol)`
  tolerance for optimality `(1e-5|float)`.
`basis_perturbation(+OffOn)`
  should we try and perturb the external solver basis when we appear to be at optimal and external solver returns same basis after adding columns ('off' - no, 'on' - temporarily set the external solver to always perturb)
`info_messages(+OffOn)`
  print messages while solving.
`on_degeneracy(+Action)`
  should we halt when we find degeneracy (default 'stop'), or continue and let the subproblem solver deal with it ('continue').
`stabilisation(+Policy)`
  the policy to perform basis stabilisation:
  `off`
    no stabilisation is performed.
  `on(BoundIter, BoundUpdate, CoeffIter, CoeffUpdate)`
    then the default policy is used with var bounds/coefficients updated by BoundUpdate/CoeffUpdate after BoundIter/CoeffIter iterations respectively.
  `stab_pred(UpdatePred, StoppingPred)`
    a user defined policy is employed and UpdatePred/ StoppingPred should be predicates that perform the updates and test for stopping conditions.

## See Also

set / 2