Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
operations_research::sat::PropagatorInterface Class Referenceabstract

Base class for CP like propagators. More...

#include <integer.h>

Inheritance diagram for operations_research::sat::PropagatorInterface:
operations_research::sat::AllDifferentBoundsPropagator operations_research::sat::AllDifferentConstraint operations_research::sat::BooleanXorPropagator operations_research::sat::CircuitCoveringPropagator operations_research::sat::CircuitPropagator operations_research::sat::CombinedDisjunctive< time_direction > operations_research::sat::CumulativeDualFeasibleEnergyConstraint operations_research::sat::CumulativeEnergyConstraint operations_research::sat::CumulativeIsAfterSubsetConstraint operations_research::sat::DisjunctiveDetectablePrecedences operations_research::sat::DisjunctiveEdgeFinding operations_research::sat::DisjunctiveNotLast operations_research::sat::DisjunctiveOverloadChecker operations_research::sat::DisjunctivePrecedences operations_research::sat::DisjunctiveSimplePrecedences operations_research::sat::DisjunctiveWithTwoItems operations_research::sat::DivisionPropagator operations_research::sat::FixedDivisionPropagator operations_research::sat::FixedModuloPropagator operations_research::sat::GreaterThanAtLeastOneOfPropagator operations_research::sat::LevelZeroEquality operations_research::sat::LinMinPropagator operations_research::sat::LinearConstraintPropagator< use_int128 > operations_research::sat::LinearProgrammingConstraint operations_research::sat::LinearPropagator operations_research::sat::MinPropagator operations_research::sat::NoCyclePropagator operations_research::sat::NonOverlappingRectanglesDisjunctivePropagator operations_research::sat::NonOverlappingRectanglesEnergyPropagator operations_research::sat::PrecedencesPropagator operations_research::sat::ProductPropagator operations_research::sat::RectanglePairwisePropagator operations_research::sat::ReservoirTimeTabling operations_research::sat::SchedulingConstraintHelper operations_research::sat::SquarePropagator operations_research::sat::TimeTableEdgeFinding operations_research::sat::TimeTablingPerTask

Public Member Functions

 PropagatorInterface ()=default
 
virtual ~PropagatorInterface ()=default
 
virtual bool Propagate ()=0
 
virtual bool IncrementalPropagate (const std::vector< int > &)
 

Detailed Description

Base class for CP like propagators.

Definition at line 1414 of file integer.h.

Constructor & Destructor Documentation

◆ PropagatorInterface()

operations_research::sat::PropagatorInterface::PropagatorInterface ( )
default

◆ ~PropagatorInterface()

virtual operations_research::sat::PropagatorInterface::~PropagatorInterface ( )
virtualdefault

Member Function Documentation

◆ IncrementalPropagate()

virtual bool operations_research::sat::PropagatorInterface::IncrementalPropagate ( const std::vector< int > & )
inlinevirtual

This will only be called on a non-empty vector, otherwise Propagate() will be called. The passed vector will contain the "watch index" of all the literals that were given one at registration and that changed since the last call to Propagate(). This is only true when going down in the search tree, on backjump this list will be cleared.

Notes:

  • The indices may contain duplicates if the same integer variable as been updated many times or if different watched literals have the same watch_index.
  • At level zero, it will not contain any indices associated with literals that were already fixed when the propagator was registered. Only the indices of the literals modified after the registration will be present.

Reimplemented in operations_research::sat::CircuitCoveringPropagator, operations_research::sat::CircuitPropagator, operations_research::sat::LinearProgrammingConstraint, operations_research::sat::NoCyclePropagator, and operations_research::sat::SchedulingConstraintHelper.

Definition at line 1437 of file integer.h.

◆ Propagate()

virtual bool operations_research::sat::PropagatorInterface::Propagate ( )
pure virtual

This will be called after one or more literals that are watched by this propagator changed. It will also always be called on the first propagation cycle after registration.

Implemented in operations_research::sat::AllDifferentBoundsPropagator, operations_research::sat::AllDifferentConstraint, operations_research::sat::BooleanXorPropagator, operations_research::sat::CircuitCoveringPropagator, operations_research::sat::CircuitPropagator, operations_research::sat::CombinedDisjunctive< time_direction >, operations_research::sat::CumulativeDualFeasibleEnergyConstraint, operations_research::sat::CumulativeEnergyConstraint, operations_research::sat::CumulativeIsAfterSubsetConstraint, operations_research::sat::DisjunctiveDetectablePrecedences, operations_research::sat::DisjunctiveEdgeFinding, operations_research::sat::DisjunctiveNotLast, operations_research::sat::DisjunctiveOverloadChecker, operations_research::sat::DisjunctivePrecedences, operations_research::sat::DisjunctiveSimplePrecedences, operations_research::sat::DisjunctiveWithTwoItems, operations_research::sat::DivisionPropagator, operations_research::sat::FixedDivisionPropagator, operations_research::sat::FixedModuloPropagator, operations_research::sat::GreaterThanAtLeastOneOfPropagator, operations_research::sat::LevelZeroEquality, operations_research::sat::LinearConstraintPropagator< use_int128 >, operations_research::sat::LinearProgrammingConstraint, operations_research::sat::LinearPropagator, operations_research::sat::LinMinPropagator, operations_research::sat::MinPropagator, operations_research::sat::NoCyclePropagator, operations_research::sat::NonOverlappingRectanglesDisjunctivePropagator, operations_research::sat::NonOverlappingRectanglesEnergyPropagator, operations_research::sat::PrecedencesPropagator, operations_research::sat::ProductPropagator, operations_research::sat::RectanglePairwisePropagator, operations_research::sat::ReservoirTimeTabling, operations_research::sat::SchedulingConstraintHelper, operations_research::sat::SquarePropagator, operations_research::sat::TimeTableEdgeFinding, and operations_research::sat::TimeTablingPerTask.


The documentation for this class was generated from the following file: