| ▼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 |