[ 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
  Array of (integer) decision variables
VarDimNames
  Names for the dimensions of Array
ValueDimSpec
  Name of the value dimension and its range
SymSpecs
  List of symmetry specifiers
Options
  List of extra options

## Description

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.

### Modules

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