![]() |
Google OR-Tools v9.14
a fast and portable software suite for combinatorial optimization
|
#include <constraint_violation.h>
Classes | |
struct | Interval |
Public Member Functions | |
CompiledNoOverlapWithTwoIntervals (const ConstraintProto &x1, const ConstraintProto &x2) | |
~CompiledNoOverlapWithTwoIntervals () final=default | |
int64_t | ComputeViolation (absl::Span< const int64_t > solution) final |
int64_t | ViolationDelta (int, int64_t, absl::Span< const int64_t > solution_with_new_value) final |
--— CompiledNoOverlapWithTwoIntervals --— | |
std::vector< int > | UsedVariables (const CpModelProto &model_proto) const final |
Public Member Functions inherited from operations_research::sat::CompiledConstraint | |
CompiledConstraint ()=default | |
virtual | ~CompiledConstraint ()=default |
void | InitializeViolation (absl::Span< const int64_t > solution) |
Recomputes the violation of the constraint from scratch. | |
virtual void | PerformMove (int var, int64_t old_value, absl::Span< const int64_t > solution_with_new_value) |
Updates the violation with the new value. | |
int64_t | violation () const |
The cached violation of this constraint. |
Additional Inherited Members | |
Protected Attributes inherited from operations_research::sat::CompiledConstraint | |
int64_t | violation_ |
Special constraint for no overlap between two intervals. We usually expand small no-overlap in n^2 such constraint, so we want to be compact and efficient here.
Definition at line 572 of file constraint_violation.h.
|
inline |
Definition at line 581 of file constraint_violation.h.
|
finaldefault |
|
inlinefinalvirtual |
Computes the violation of a constraint.
This is called by InitializeViolation() and also the default implementation of ViolationDelta().
Optimization hack: If we create a ComputeViolationInternal() that we call from here and in ViolationDelta(), then the later is not inlined below in ViolationDelta() where it matter a lot for performance.
Implements operations_research::sat::CompiledConstraint.
Definition at line 596 of file constraint_violation.h.
|
finalvirtual |
Returns the sorted vector of variables used by this constraint. This is used to known when a violation might change, and is only called once during initialization, so speed is not to much of a concern here.
The global proto is needed to resolve interval variables reference.
Implements operations_research::sat::CompiledConstraint.
Definition at line 1113 of file constraint_violation.cc.
|
finalvirtual |
--— CompiledNoOverlapWithTwoIntervals --—
Reimplemented from operations_research::sat::CompiledConstraint.
Definition at line 1094 of file constraint_violation.cc.