toulbar2
Modules
Here is a list of all modules:
 Preprocessing techniquesDepending on toulbar2 options, the sequence of preprocessing techniques applied before the search is:
 Output messages, verbosity options and debuggingDepending on verbosity level given as option "-v=level", toulbar2 will output:
 NC bucket sortMaintains a sorted list of variables having non-zero unary costs in order to make NC propagation incremental.
 Variable elimination
 Soft arc consistency and problem reformulationSoft arc consistency is an incremental lower bound technique for optimization problems. Its goal is to move costs from high-order (typically arity two or three) cost functions towards the problem lower bound and unary cost functions. This is achieved by applying iteratively local equivalence-preserving problem transformations (EPTs) until some terminating conditions are met
 Propagation loopPropagates soft local consistencies and bounded variable elimination until all the propagation queues are empty or a contradiction occurs.
While (queues are not empty or current objective bounds have changed):
 Variable and value search ordering heuristics
 Weighted Constraint Satisfaction Problem file format (wcsp)It is a text format composed of a list of numerical and string terms separated by spaces. Instead of using names for making reference to variables, variable indexes are employed. The same for domain values. All indexes start at zero
 Variable and cost function modelingModeling a Weighted CSP consists in creating variables and cost functions.
Domains of variables can be of two different types:
 Solving cost function networksAfter creating a Weighted CSP, it can be solved using a local search method INCOP (see WeightedCSPSolver::narycsp) and/or an exact search method (see WeightedCSPSolver::solve).
Various options of the solving methods are controlled by ::Toulbar2 static class members (see files ./src/core/tb2types.hpp and ./src/tb2main.cpp).
A brief code example reading a wcsp problem given as a single command-line parameter and solving it:
 VAC
 Backtrack managementUsed by backtrack search methods. Allows to copy / restore the current state using Store::store and Store::restore methods. All storable data modifications are trailed into specific stacks