operations_research::SymmetryManager Class Reference
Symmetry Breaking.
More...
List of all members.
Detailed Description
Symmetry Breaking.
The symmetry manager maintains a list of problem symmetries. Each symmetry is called on each decision and should return a term representing the boolean status of the symmetrical decision. e.g. : the decision is x == 3, the symmetrical decision is y == 5 then the symmetry breaker should use AddIntegerVariableEqualValueClause(y, 5). Once this is done, upon refutation, for each symmetry breaker, the system adds a constraint that will forbid the symmetrical variation of the current explored search tree. This constraint can be expressed very simply just by keeping the list of current symmetrical decisions.
This is called Symmetry Breaking During Search (Ian Gent, Barbara Smith, ECAI 2000). http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.3788&rep=rep1&type=pdf ///< NOLINT
Definition at line 4462 of file search.cc.
Constructor & Destructor Documentation
operations_research::SymmetryManager::SymmetryManager |
( |
Solver *const |
s, |
|
|
SymmetryBreaker *const * |
visitors, |
|
|
int |
size | |
|
) |
| | [inline] |
virtual operations_research::SymmetryManager::~SymmetryManager |
( |
|
) |
[inline, virtual] |
Member Function Documentation
virtual void operations_research::SymmetryManager::EndNextDecision |
( |
DecisionBuilder *const |
b, |
|
|
Decision *const |
d | |
|
) |
| | [inline, virtual] |
virtual void operations_research::SymmetryManager::RefuteDecision |
( |
Decision * |
d |
) |
[inline, virtual] |
void operations_research::SymmetryManager::CheckSymmetries |
( |
int |
index |
) |
[inline] |
- Todo:
- TODO(user) : Improve speed, cache previous min and build them incrementally.
Definition at line 4506 of file search.cc.
void operations_research::SymmetryManager::AddTermToClause |
( |
SymmetryBreaker *const |
visitor, |
|
|
IntVar *const |
term | |
|
) |
| | [inline] |
The documentation for this class was generated from the following file: