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

#include <integer_expr.h>

Inheritance diagram for operations_research::sat::DivisionPropagator:
operations_research::sat::PropagatorInterface

Public Member Functions

 DivisionPropagator (AffineExpression num, AffineExpression denom, AffineExpression div, IntegerTrail *integer_trail)
 
 DivisionPropagator (const DivisionPropagator &)=delete
 This type is neither copyable nor movable.
 
DivisionPropagatoroperator= (const DivisionPropagator &)=delete
 
bool Propagate () final
 
void RegisterWith (GenericLiteralWatcher *watcher)
 
- Public Member Functions inherited from operations_research::sat::PropagatorInterface
 PropagatorInterface ()=default
 
virtual ~PropagatorInterface ()=default
 
virtual bool IncrementalPropagate (const std::vector< int > &)
 

Detailed Description

Propagates num / denom = div. Basic version, we don't extract any special cases, and we only propagates the bounds. It expects denom to be > 0.

Todo
(user): Deal with overflow.

Definition at line 320 of file integer_expr.h.

Constructor & Destructor Documentation

◆ DivisionPropagator() [1/2]

operations_research::sat::DivisionPropagator::DivisionPropagator ( AffineExpression num,
AffineExpression denom,
AffineExpression div,
IntegerTrail * integer_trail )

Definition at line 1212 of file integer_expr.cc.

◆ DivisionPropagator() [2/2]

operations_research::sat::DivisionPropagator::DivisionPropagator ( const DivisionPropagator & )
delete

This type is neither copyable nor movable.

Member Function Documentation

◆ operator=()

DivisionPropagator & operations_research::sat::DivisionPropagator::operator= ( const DivisionPropagator & )
delete

◆ Propagate()

bool operations_research::sat::DivisionPropagator::Propagate ( )
finalvirtual
Todo

(user): We can propagate more, especially in the case where denom spans across 0.

(user): We can propagate a bit more if min_div = 0: (min_num > -min_denom).

Implements operations_research::sat::PropagatorInterface.

Definition at line 1228 of file integer_expr.cc.

◆ RegisterWith()

void operations_research::sat::DivisionPropagator::RegisterWith ( GenericLiteralWatcher * watcher)

Definition at line 1415 of file integer_expr.cc.


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