[ 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