[ library(colgen) | Reference Manual | Alphabetic Index ]
ColgenInstance:solver_setup(+SolveSubProblem, +Obj, +Options)
Define subproblem, objective and options for ColgenInstance.
- Subproblem solution predicate
- The objective function to minimize
- A list of options
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
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
The following options are accepted:
a user-specified separation goal (XXX).
node selection criterion passed to bfs instance
Option to be passed to the associated eplex solver instance.
policy for active prevention of duplicate columns (off|lp|clp).
tolerance for optimality (1e-5|float).
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)
print messages while solving.
should we halt when we find degeneracy (default 'stop'), or
continue and let the subproblem solver deal with it ('continue').
the policy to perform basis stabilisation:
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
- stab_pred(UpdatePred, StoppingPred)
a user defined policy is employed and UpdatePred/ StoppingPred
should be predicates that perform the updates and test for
set / 2