76 for (
const auto& arc:
graph.arcs()) {
77 const auto hash_arc = _hashArc_(arc.tail(), arc.head());
78 _current_graph_.first ^= hash_arc.first;
79 _current_graph_.second ^= hash_arc.second;
162 new_tabuList.
emplace(iter.first(), iter.second() + delta);
172 switch (change.
type()) {
190 "Graph change operation "
192 <<
"is not supported by the Tabu List structural constraint");
197 switch (change.
type()) {
220 "Graph change operation "
222 <<
" is not supported by Tabu List structural constraint")
void emplace(Args &&... args)
Base class for all oriented graphs.
Exception : operation not allowed.
The class for notifying learning algorithms of new arc additions.
The class for notifying learning algorithms of arc removals.
The class for notifying learning algorithms of arc reversals.
The graph change substituting a triangle node1->node2->node3 + node1->node3 into v-structure node2->n...
The graph change substituting a triangle node1->node2->node3 + node1->node3 into v-structure node1->n...
std::string typeAsString() const
returns a string corresponding to the type of the change
NodeId node1() const noexcept
returns the first node involved in the modification
GraphChangeType type() const noexcept
returns the type of the operation
NodeId node2() const noexcept
returns the second node involved in the modification
NodeId node3() const
returns the third node involved in the modification (if any)
The class imposing a N-sized tabu list as a structural constraints for learning algorithms.
void modifyGraphAlone(const ArcAddition &change)
notify the constraint of a modification of the graph
void setTabuListSize(Size new_size)
sets the size of the tabu list
bool checkArcTriangleDeletion1Alone(NodeId node1, NodeId node2, NodeId node3) const
checks whether the constraints enable to apply an ArcTriangleDeletion1
bool checkArcDeletionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to remove arc (x,y)
Size _tabuList_offset_
the index of the oldest element
bool checkModificationAlone(const GraphChange &change) const
checks whether the constraints enable to perform a graph change
bool checkArcAdditionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to add arc (x,y)
Bijection< GraphHash, Size > _graph_tabuList_
the tabu list
bool checkArcReversalAlone(NodeId x, NodeId y) const
checks whether the constraints enable to reverse arc (x,y)
virtual ~StructuralConstraintTabuList()
destructor
Size _tabuList_size_
the max size of the tabu list
StructuralConstraintTabuList & operator=(const StructuralConstraintTabuList &from)
copy operator
bool checkArcTriangleDeletion2Alone(NodeId node1, NodeId node2, NodeId node3) const
checks whether the constraints enable to apply an ArcTriangleDeletion2
GraphHash _current_graph_
the current graph hash
StructuralConstraintTabuList()
default constructor
#define GUM_ERROR(type, msg)
std::size_t Size
In aGrUM, hashed values are unsigned long int.
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities
the class imposing a N-sized tabu list as a structural constraints for learning algorithms
#define GUM_STRUCTURAL_CONSTRAINT_TABU_LIST_DEFAULT_SIZE
the class imposing a N-sized tabu list as a structural constraints for learning algorithms