<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This struct holds all parameters for the default search. <ahref="structoperations__research_1_1_default_phase_parameters.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Holds semantic information stating that the 'expression' has been cast into 'variable' using the Var() method, and that 'maintainer' is responsible for maintaining the equality between 'variable' and 'expression'. <ahref="structoperations__research_1_1_solver_1_1_integer_cast_info.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Creates a search monitor from logging parameters. <ahref="structoperations__research_1_1_solver_1_1_search_log_parameters.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A <aclass="el"href="classoperations__research_1_1_base_object.html"title="A BaseObject is the root of all reversibly allocated objects.">BaseObject</a> is the root of all reversibly allocated objects. <ahref="classoperations__research_1_1_base_object.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A <aclass="el"href="classoperations__research_1_1_decision.html"title="A Decision represents a choice point in the search tree.">Decision</a> represents a choice point in the search tree. <ahref="classoperations__research_1_1_decision.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A <aclass="el"href="classoperations__research_1_1_decision_visitor.html"title="A DecisionVisitor is used to inspect a decision.">DecisionVisitor</a> is used to inspect a decision. <ahref="classoperations__research_1_1_decision_visitor.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A <aclass="el"href="classoperations__research_1_1_decision_builder.html"title="A DecisionBuilder is responsible for creating the search tree.">DecisionBuilder</a> is responsible for creating the search tree. <ahref="classoperations__research_1_1_decision_builder.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A <aclass="el"href="classoperations__research_1_1_demon.html"title="A Demon is the base element of a propagation queue.">Demon</a> is the base element of a propagation queue. <ahref="classoperations__research_1_1_demon.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A constraint is the main modeling object. <ahref="classoperations__research_1_1_constraint.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Cast constraints are special channeling constraints designed to keep a variable in sync with an expression. <ahref="classoperations__research_1_1_cast_constraint.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A search monitor is a simple set of callbacks to monitor all search events. <ahref="classoperations__research_1_1_search_monitor.html#details">More...</a><br/></td></tr>
<trclass="memitem:"><tdclass="memItemLeft"align="right"valign="top">class  </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classoperations__research_1_1_rev.html">Rev< T ></a></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This class adds reversibility to a POD type. <ahref="classoperations__research_1_1_rev.html#details">More...</a><br/></td></tr>
<trclass="memitem:"><tdclass="memItemLeft"align="right"valign="top">class  </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classoperations__research_1_1_numerical_rev.html">NumericalRev< T ></a></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Subclass of Rev<T> which adds numerical operations. <ahref="classoperations__research_1_1_numerical_rev.html#details">More...</a><br/></td></tr>
<trclass="memitem:"><tdclass="memItemLeft"align="right"valign="top">class  </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classoperations__research_1_1_rev_array.html">RevArray< T ></a></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Reversible array of POD types. <ahref="classoperations__research_1_1_rev_array.html#details">More...</a><br/></td></tr>
<trclass="memitem:"><tdclass="memItemLeft"align="right"valign="top">class  </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classoperations__research_1_1_numerical_rev_array.html">NumericalRevArray< T ></a></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Subclass of RevArray<T> which adds numerical operations. <ahref="classoperations__research_1_1_numerical_rev_array.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The class <aclass="el"href="classoperations__research_1_1_int_expr.html"title="The class IntExpr is the base of all integer expressions in constraint programming.">IntExpr</a> is the base of all integer expressions in constraint programming. <ahref="classoperations__research_1_1_int_expr.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The class Iterator has two direct subclasses. <ahref="classoperations__research_1_1_int_var_iterator.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Utility class to encapsulate an <aclass="el"href="classoperations__research_1_1_int_var_iterator.html"title="The class Iterator has two direct subclasses.">IntVarIterator</a> and use it in a range-based loop. <ahref="classoperations__research_1_1_init_and_get_values.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The class <aclass="el"href="classoperations__research_1_1_int_var.html"title="The class IntVar is a subset of IntExpr.">IntVar</a> is a subset of <aclass="el"href="classoperations__research_1_1_int_expr.html"title="The class IntExpr is the base of all integer expressions in constraint programming.">IntExpr</a>. <ahref="classoperations__research_1_1_int_var.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This class is the root class of all solution collectors. <ahref="classoperations__research_1_1_solution_collector.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This class encapsulates an objective. <ahref="classoperations__research_1_1_optimize_var.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Base class of all search limits. <ahref="classoperations__research_1_1_search_limit.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Usual limit based on wall_time, number of explored branches and number of failures in the search tree. <ahref="classoperations__research_1_1_regular_limit.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Interval variables are often used in scheduling. <ahref="classoperations__research_1_1_interval_var.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A sequence variable is a variable whose domain is a set of possible orderings of the interval variables. <ahref="classoperations__research_1_1_sequence_var.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The <aclass="el"href="classoperations__research_1_1_sequence_var_element.html"title="The SequenceVarElement stores a partial representation of ranked interval variables in the underlying...">SequenceVarElement</a> stores a partial representation of ranked interval variables in the underlying sequence variable. <ahref="classoperations__research_1_1_sequence_var_element.html#details">More...</a><br/></td></tr>
<trclass="memitem:"><tdclass="memItemLeft"align="right"valign="top">class  </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classoperations__research_1_1_assignment_container.html">AssignmentContainer< V, E ></a></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">An <aclass="el"href="classoperations__research_1_1_assignment.html"title="An Assignment is a variable -> domains mapping, used to report solutions to the user.">Assignment</a> is a variable -> domains mapping, used to report solutions to the user. <ahref="classoperations__research_1_1_assignment.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">This class is used to manage a pool of solutions. <ahref="classoperations__research_1_1_solution_pool.html#details">More...</a><br/></td></tr>
<trclass="memdesc:namespaceoperations__research"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Collection of objects used to extend the <aclass="el"href="classoperations__research_1_1_constraint.html"title="A constraint is the main modeling object.">Constraint</a><aclass="el"href="classoperations__research_1_1_solver.html"title="Solver Class.">Solver</a> library. <br/></td></tr>
<trclass="memdesc:a3f9da4a1a05483aa80481604e8983b6b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Declaration of the core objects for the constraint solver. <ahref="constraint__solver_8h.html#a3f9da4a1a05483aa80481604e8983b6b">More...</a><br/></td></tr>
<p>Here is a very simple Constraint Programming problem:</p>
<p>If we see 56 legs and 20 heads, how many two-legged pheasants and four-legged rabbits are we looking at?</p>
<p>Here is some simple Constraint Programming code to find out:</p>
<p>void pheasant() { Solver s("pheasant"); // Create integer variables to represent the number of pheasants and // rabbits, with a minimum of 0 and a maximum of 20. IntVar* const p = s.MakeIntVar(0, 20, "pheasant")); IntVar* const r = s.MakeIntVar(0, 20, "rabbit")); // The number of heads is the sum of pheasants and rabbits. IntExpr* const heads = s.MakeSum(p, r); // The number of legs is the sum of pheasants * 2 and rabbits * 4. IntExpr* const legs = s.MakeSum(s.MakeProd(p, 2), s.MakeProd(r, 4)); // Constraints: the number of legs is 56 and heads is 20. Constraint* const ct_legs = s.MakeEquality(legs, 56); Constraint* const ct_heads = s.MakeEquality(heads, 20); s.AddConstraint(ct_legs); s.AddConstraint(ct_heads); DecisionBuilder* const db = s.MakePhase(p, r,