C++ Reference: class CircuitCoveringPropagator

Note: This documentation is automatically generated.

This constraint ensures that the graph is a covering of all nodes by circuits and loops, such that all circuits contain exactly one distinguished node. Those distinguished nodes are meant to be depots.

This constraint does not need ExactlyOnePerRowAndPerColumn() to be correct, but it does not propagate degree deductions (only fails if a node has more than one outgoing arc or more than one incoming arc), so that adding ExactlyOnePerRowAndPerColumn() should work better.

TODO(user): Make distinguished nodes an array of Boolean variables, so this can be used for facility location problems.
Method
CircuitCoveringPropagator

Arguments: std::vector<std::vector<Literal>> graph, const std::vector<int>& distinguished_nodes, Model* model

IncrementalPropagate

Return type: bool

Arguments: const std::vector<int>& watch_indices

Propagate

Return type: bool

RegisterWith

Return type: void

Arguments: GenericLiteralWatcher* watcher

SetLevel

Return type: void

Arguments: int level