[ 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).

See Also

sbdd_initialise_set / 5, sym_expr : construct_group / 8, struct(sbdd_shared), sbdd_try / 2, sbdd_try / 3