[ library(ic_gap_sbdd) | Reference Manual | Alphabetic Index ]
sbdd_initialise(+Array, ++VarDimNames, ++ValueDimSpec, +SymSpecs, +Options)
Initialises the data structures required by the SBDD algorithm
- Array of (integer) decision variables
- Names for the dimensions of Array
- Name of the value dimension and its range
- List of symmetry specifiers
- List of extra options
Sets up the data structures required to perform an SBDD search. Array is
an array containing the (integer) search variables, SymSpecs defines the
symmetries of the problem, with VarDimNames and ValueDimSpec providing
some extra required information; these four arguments are the same as the
first four arguments of construct_group/8: please see the documentation
for that predicate for a complete description of these arguments and
details of the supported symmetry specifiers.
Options is a list of options which modify the way the search progresses.
Currently only one option is supported: throttle(ThrottlePred). This
option can be used to control whether or not the SBDD dominance check is
invoked at any given node. At each node, before performing the dominance
check, ThrottlePred is called with an extra argument appended, and if the
call fails, the dominance check is skipped. The extra argument is the
sbdd_shared data structure, which holds the current state of the SBDD
search; its fields can be examined (e.g. the current search depth) in
order to decide whether to proceed with the dominance check or not.
During search, use sbdd_try/2 or sbdd_try/3 on variables from Array when
making search decisions.
This predicate is sensitive to its module context (tool predicate, see @/2).
sbdd_initialise_set / 5, sym_expr : construct_group / 8, struct(sbdd_shared), sbdd_try / 2, sbdd_try / 3