▼Functionality by programming task | |
▼Programming models | |
Setting up scripts | Scripts (or models) are programmed by inheriting from the class Gecode::Space. For many examples see Example scripts (models) |
►Using integer variables and constraints | |
Integer variables | |
Argument arrays | Argument arrays are just good enough for passing arguments with automatic memory management |
Variable arrays | Variable arrays can store variables. They are typically used for storing the variables being part of a solution (script). However, they can also be used for temporary purposes (even though memory is not reclaimed until the space it is created for is deleted) |
Domain constraints | |
Simple relation constraints over integer variables | |
Simple relation constraints over Boolean variables | |
Value precedence constraints over integer variables | |
Membership constraints | |
Element constraints | |
Distinct constraints | |
Channel constraints | |
Sorted constraints | All sorted constraints support bounds consistency only |
Counting constraints | |
Number of values constraints | |
Sequence constraints | |
Extensional constraints | |
Arithmetic constraints | |
Linear constraints over integer variables | |
Linear constraints over Boolean variables | |
Bin packing constraints | |
Geometrical packing constraints | |
Scheduling constraints | |
Graph constraints | |
Synchronized execution | |
Unsharing variables | |
►Branching | |
Variable selection for integer and Boolean variables | |
Value selection for integer and Boolean variables | |
Value selection for assigning integer variables | |
Symmetry declarations | |
►Search engines | Defines search engines. All search engines (but Gecode::LDS, where it is not needed) support recomputation. The behaviour of recomputation is controlled by a passing a search option object (see the class Gecode::Search::Options) |
Stop-objects for stopping search | |
Gist: the Gecode Interactive Search Tool | |
►Using integer set variables and constraints | |
Set variables | |
Float variables | |
Range and value iterators for set variables | |
Argument arrays | Argument arrays are just good enough for passing arguments with automatic memory management |
Variable arrays | Variable arrays can store variables. They are typically used for storing the variables being part of a solution. However, they can also be used for temporary purposes (even though memory is not reclaimed until the space it is created for is deleted) |
Domain constraints | |
Relation constraints | |
Set operation/relation constraints | |
Convexity constraints | |
Sequence constraints | |
►Branching | |
Selecting set variables | |
Value selection for set variables | |
Assigning set variables | |
►Using float variables and constraints | |
Variable arrays | Variable arrays can store variables. They are typically used for storing the variables being part of a solution (script). However, they can also be used for temporary purposes (even though memory is not reclaimed until the space it is created for is deleted) |
Domain constraints | |
Simple relation constraints over float variables | |
Arithmetic constraints | |
Linear constraints over float variables | |
Channel constraints | |
Synchronized execution | |
►Branching on float variables | |
Variable selection for float variables | |
Value selection for float variables | |
Value selection for assigning float variables | |
►Direct modeling support | |
Linear expressions and relations | Linear expressions can be freely composed of sums and differences of integer variables (Gecode::IntVar) or Boolean variables (Gecode::BoolVar) possibly with integer coefficients and integer constants |
Linear float expressions and relations | Linear float expressions can be freely composed of sums and differences of float variables (Gecode::FloatVar) with float coefficients and float constants |
Set expressions and relations | Set expressions and relations can be freely composed of variables with the usual connectives |
Boolean expressions | Boolean expressions can be freely composed of variables with the usual connectives and reified linear expressions |
Reified expressions | |
Mixed integer and set expressions | |
Posting of expressions and relations | |
Arithmetic functions | |
Transcendental functions | |
Trigonometric functions | |
Channel functions | |
Aliases for integer constraints | Contains definitions of common constraints which have different names in Gecode |
Aliases for set constraints | Contains definitions of common constraints which have different names in Gecode |
Support for cost-based optimization | Provides for minimizing or maximizing the cost value as defined by a cost-member function of a space |
►Script commandline driver | |
Commandline options for running scripts | |
Script classes | |
Propagator and brancher groups | |
►Tracing constraint propagation | |
Tracing for float variables | |
Tracing for integer and Boolean variables | |
Tracing for set variables | |
►Generic branching support | Support for randomization and tie-breaking that are independent of a particular variable domain |
Tie-breaking for variable selection | |
Branch with a function | This does not really branch (it just offers a single alternative) but executes a single function during branching. A typical application is to post more constraints after another brancher has finished |
Programming search engines | |
▼Programming actors | |
►Programming integer actors | |
Integer views | Integer propagators and branchers compute with integer views. Integer views provide views on integer variable implementations, integer constants, and also allow to scale, translate, and negate variables. Additionally, a special Boolean view is provided that offers convenient and efficient operations for Boolean (0/1) views |
Testing relations between integer views | |
Integer modification events and propagation conditions | |
►Programming set actors | |
Set modification events and propagation conditions | |
Set views | Set propagators and branchings compute with set views. Set views provide views on set variable implementations, set constants, and integer variable implementations |
►Programming float actors | |
Float views | Float propagators and branchers compute with float views. Float views provide views on float variable implementations |
Testing relations between float views | |
Float modification events and propagation conditions | |
Reified propagator patterns | |
►Generic brancher based on view and value selection | Implements view-based brancher for an array of views and value |
Generic merit for branchers based on view and value selection | |
Generic value commit for brancher based on view and value selection | |
Generic value selection and value commit for brancher based on view and value selection | |
Generic value selection for brancher based on view and value selection | |
Generic view selection for brancher based on view and value selection | |
Generic brancher based on view selection | Implements view-based brancher for an array of views and value |
Status of constraint propagation and branching commit | Note that the enum values starting with a double underscore should not be used directly. Instead, use the provided functions with the same name without leading underscores |
Propagator patterns | |
▼Programming variables | |
Programming views for variables | |
Generic modification events and propagation conditions | Predefined modification events must be taken into account by variable types |
▼Testing | |
►Testing domain floats | |
Arithmetic constraints | |
Basic setup | |
Domain constraints | |
Linear constraints | |
Minimal modeling constraints (linear constraints) | |
Relation constraints | |
General test support | |
►Testing finite domain integers | |
Arithmetic constraints | |
Basic setup | |
Bin-packing constraints | |
Boolean constraints | |
Channel constraints | |
Circuit constraints | |
Count constraints | |
Cumulative scheduling constraints | |
Cumnulatives scheduling constraint | |
Distinct constraints | |
Domain constraints | |
Element constraints | |
Synchronized execution | |
Extensional (relation) constraints | |
Counting constraints (global cardinality) | |
Linear constraints | |
Membership constraints | |
Minimal modelling constraints (arithmetic) | |
Minimal modelling constraints (Boolean constraints) | |
Minimal modelling constraints (counting) | |
Minimal modeling constraints (linear constraints) | |
Minimal modelling constraints (relation) | |
No-overlap constraints | |
Number of values constraints | |
Order constraint | |
Relation constraints | |
Sequence constraints | |
Sorted constraints | |
Unary scheduling constraints | |
Unsharing variables in arrays | |
General test support | |
►Testing finite sets | |
%Set channeling constraints | |
Convexity constraints | |
Distinctness constraints | |
Domain constraints | |
Element constraints | |
Synchronized execution | |
Combined integer/set constraints | |
Minimal modelling constraints (%Set constraints) | |
Relation/operation constraints with constants | |
Relation/operation constraints | |
Relation constraints | |
Sequence constraints | |
General set test support | |
General test support | |
▼Common functionality | |
▼Memory management | |
Space-memory management | |
Using allocators with Gecode | |
Region memory management | A region provides a handle to temporary memory owned by a space. The memory will be managed in a stack fashion, that is, the memory allocated through a region will be released only after the region is deleted and all other regions created later also have been deleted |
%Heap memory management | |
▼Gecode exceptions | |
Float exceptions | |
Integer exceptions | |
Kernel exceptions | |
MiniModel exceptions | |
%Search exceptions | |
Set exceptions | |
Support exceptions | |
▼Support algorithms and datastructures | These are some common datastructures used in the implementation of Gecode. Maybe they can be also useful to others |
Simple thread and synchronization support | This is very simplistic, just enough for parallel search engines. Do not mistake it for a full-fledged thread package |
▼Range and value iterators | Both range and value iterators have a rather simple interface for controlling iteration (which deviates from what you might be used to from other iterators) |
►Range iterators | A range iterator provides incremental access to a sequence of increasing ranges |
Range iterators with virtual member functions | A range iterator provides incremental access to a sequence of increasing ranges. Iterators with virtual member functions have to be used when they are combined dynamically, and the actual types hence cannot be specified as template arguments |
Operations on range iterators | |
►Value iterators | A value iterator provides incremental access to a sequence of increasing values |
Value iterators with virtual member functions | A value iterator provides incremental access to a sequence of increasing values. Iterators with virtual member functions have to be used when they are combined dynamically, and the actual types hence cannot be specified as template arguments |
▼Other available functionality | |
Generic propagators | This module contains a description of all predefined generic propagators |
▼Integer propagators | This module contains a description of all predefined integer propagators. They can be reused, for example, for rewriting newly defined integer propagators into already available propagators |
Support for GCC bounds propagation | |
Set propagators | This module contains a description of all predefined finite set propagators. They can be reused, for example, for rewriting newly defined finite set propagators into already available propagators |
Float propagators | This module contains a description of all predefined float propagators. They can be reused, for example, for rewriting newly defined float propagators into already available propagators |
Merit-based float view selection for branchers | Contains merit-based view selection strategies on float views that can be used together with the generic view/value brancher classes |
Float value selection for brancher | Contains a description of value selection strategies on float views that can be used together with the generic view/value branchers |
Float value commit classes | Contains the value commit classes for float views that can be used together with the generic view/value branchers |
Merit-based integer view selection for branchers | Contains merit-based view selection strategies on integer views that can be used together with the generic view/value brancher classes |
Integer value selection for brancher | Contains a description of value selection strategies on integer views that can be used together with the generic view/value branchers |
Integer value commit classes | Contains the value commit classes for integer and Boolean views that can be used together with the generic view/value branchers |
Merit-based set view selection for branchers | Contains merit-based view selection strategies on set views that can be used together with the generic view/value brancher classes |
Set value selection for brancher | Contains a description of value selection strategies on set views that can be used together with the generic view/value branchers |
Set value commit classes | Contains the value commit classes for set views that can be used together with the generic view/value branchers |
Example scripts (models) | All scripts are compiled into simple standalone programs. All programs understand the several generic and problem-specific commandline options. An overview of the options is available by invoking the standalone programs with the -help commandline option |