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

#include <timetable.h>

Inheritance diagram for operations_research::sat::ReservoirTimeTabling:
operations_research::sat::PropagatorInterface

Public Member Functions

 ReservoirTimeTabling (const std::vector< AffineExpression > &times, const std::vector< AffineExpression > &deltas, const std::vector< Literal > &presences, IntegerValue capacity, Model *model)
 
bool Propagate () final
 
- Public Member Functions inherited from operations_research::sat::PropagatorInterface
 PropagatorInterface ()=default
 
virtual ~PropagatorInterface ()=default
 
virtual bool IncrementalPropagate (const std::vector< int > &)
 

Detailed Description

The piecewise constant function must be below the given capacity. The initial function value is zero. Note that a negative capacity will thus be trivially infeasible.

Note
we take for the definition of the function at time t to be the sum of all delta with time <= t. But because we check for the capacity over the full horizon, we could have taken < t with no behavior change.

Definition at line 48 of file timetable.h.

Constructor & Destructor Documentation

◆ ReservoirTimeTabling()

operations_research::sat::ReservoirTimeTabling::ReservoirTimeTabling ( const std::vector< AffineExpression > & times,
const std::vector< AffineExpression > & deltas,
const std::vector< Literal > & presences,
IntegerValue capacity,
Model * model )

Definition at line 54 of file timetable.cc.

Member Function Documentation

◆ Propagate()

bool operations_research::sat::ReservoirTimeTabling::Propagate ( )
finalvirtual

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.

For positive delta_min, we can maybe increase the min.

For negative delta_min, we can maybe decrease the max.

Implements operations_research::sat::PropagatorInterface.

Definition at line 81 of file timetable.cc.


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