C++ Reference
C++ Reference: CP-SAT
cp_model.h
Go to the documentation of this file.
void AddArc(int tail, int head, BoolVar literal)
Add an arc to the circuit.
friend int64_t SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)
Evaluates the value of an linear expression in a solver response.
BoolVar FalseVar()
Creates an always false Boolean variable.
IntervalVar NewOptionalFixedSizeIntervalVar(const LinearExpr &start, int64_t size, BoolVar presence)
Creates an optional interval variable with a fixed size.
Specialized reservoir constraint.
Definition: cp_model.h:630
std::ostream & operator<<(std::ostream &os, const BoolVar &var)
LinearExpr EndExpr() const
Returns the end linear expression.
IntervalVar()
A default constructed IntervalVar can be used to mean not defined yet.
BoolVar TrueVar()
Creates an always true Boolean variable.
Constraint AddMinEquality(const LinearExpr &target, absl::Span< const IntVar > vars)
Adds target == min(vars).
const CpModelProto & Proto() const
Definition: cp_model.h:1061
DoubleLinearExpr & operator-=(double value)
Adds a constant value to the linear expression.
void AddAssumption(BoolVar lit)
Adds a literal to the model as assumptions.
const bool IsConstant() const
Definition: cp_model.h:410
std::string DebugString() const
A dedicated container for linear expressions with double coefficients.
Definition: cp_model.h:349
CircuitConstraint AddCircuitConstraint()
Adds a circuit constraint.
Constraint AddGreaterThan(const LinearExpr &left, const LinearExpr &right)
Adds left > right.
Specialized no_overlap2D constraint.
Definition: cp_model.h:680
DoubleLinearExpr()
BoolVar Not() const
Returns the logical negation of the current Boolean variable.
Definition: cp_model.h:88
void AddDecisionStrategy(absl::Span< const IntVar > variables, DecisionStrategyProto::VariableSelectionStrategy var_strategy, DecisionStrategyProto::DomainReductionStrategy domain_strategy)
Adds a decision strategy on a list of integer variables.
Constraint AddAllDifferent(absl::Span< const IntVar > vars)
This constraint forces all variables to have different values.
Constraint AddEquality(const LinearExpr &left, const LinearExpr &right)
Adds left == right.
DecisionStrategyProto_DomainReductionStrategy
Definition: cp_model.pb.h:214
ConstraintProto * MutableProto() const
Returns the mutable underlying protobuf object (useful for model edition).
Definition: cp_model.h:552
bool operator==(const BoolVar &other) const
Definition: cp_model.h:90
TableConstraint AddAllowedAssignments(absl::Span< const IntVar > vars)
Adds an allowed assignments constraint.
friend std::ostream & operator<<(std::ostream &os, const IntervalVar &var)
int index() const
Returns the index of the interval constraint in the model.
Definition: cp_model.h:493
ReservoirConstraint AddReservoirConstraint(int64_t min_level, int64_t max_level)
Adds a reservoir constraint with optional refill/emptying events.
const std::vector< double > & coefficients() const
Returns the vector of coefficients.
Definition: cp_model.h:407
friend bool SolutionBooleanValue(const CpSolverResponse &r, BoolVar x)
Evaluates the value of a Boolean literal in a solver response.
void AddTuple(absl::Span< const int64_t > tuple)
Adds a tuple of possible values to the constraint.
IntervalVar WithName(const std::string &name)
Sets the name of the variable.
bool operator==(const IntervalVar &other) const
Equality test with another interval variable.
Definition: cp_model.h:480
Constraint AddBoolOr(absl::Span< const BoolVar > literals)
Adds the constraint that at least one of the literals must be true.
IntervalVar NewFixedSizeIntervalVar(const LinearExpr &start, int64_t size)
Creates an interval variable with a fixed size.
LinearExpr & operator *=(int64_t factor)
DecisionStrategyProto_VariableSelectionStrategy
Definition: cp_model.pb.h:186
Constraint AddMultiplicationEquality(const LinearExpr &target, absl::Span< const LinearExpr > exprs)
Adds target == prod(exprs).
std::string Name() const
Returns the name of the variable (or the empty string if not set).
BoolVar GetBoolVarFromProtoIndex(int index)
Returns the Boolean variable from its index in the proto.
AutomatonConstraint AddAutomaton(absl::Span< const IntVar > transition_variables, int starting_state, absl::Span< const int > final_states)
An automaton constraint.
Specialized circuit constraint.
Definition: cp_model.h:567
Constraint AddBoolXor(absl::Span< const BoolVar > literals)
Adds the constraint that an odd number of literals is true.
Specialized cumulative constraint.
Definition: cp_model.h:700
bool operator!=(const IntVar &other) const
Definition: cp_model.h:173
Specialized assignment constraint.
Definition: cp_model.h:613
void AddEvent(LinearExpr time, int64_t level_change)
Adds a mandatory event.
void Minimize(const LinearExpr &expr)
Adds a linear minimization objective.
IntVar()
A default constructed IntVar can be used to mean not defined yet.
void AddDemand(IntervalVar interval, LinearExpr demand)
Adds a pair (interval, demand) to the constraint.
const std::vector< int64_t > & coefficients() const
Returns the vector of coefficients.
Definition: cp_model.h:290
CumulativeConstraint AddCumulative(LinearExpr capacity)
The cumulative constraint.
bool operator!=(const IntervalVar &other) const
Difference test with another interval variable.
Definition: cp_model.h:485
static LinearExpr Term(IntVar var, int64_t coefficient)
Constructs var * coefficient.
IntVar NewConstant(int64_t value)
Creates a constant variable.
void Maximize(const LinearExpr &expr)
Adds a linear maximization objective.
CpModelProto * MutableProto()
Definition: cp_model.h:1062
IntVar GetIntVarFromProtoIndex(int index)
Returns the integer variable from its index in the proto.
IntervalVar NewIntervalVar(const LinearExpr &start, const LinearExpr &size, const LinearExpr &end)
Creates an interval variable from 3 affine expressions.
Constraint AddNotEqual(const LinearExpr &left, const LinearExpr &right)
Adds left != right.
void SetName(const std::string &name)
Sets the name of the model.
void ClearAssumptions()
Remove all assumptions from the model.
const ConstraintProto & Proto() const
Returns the underlying protobuf object (useful for testing).
Definition: cp_model.h:549
Constraint AddInverseConstraint(absl::Span< const IntVar > variables, absl::Span< const IntVar > inverse_variables)
An inverse constraint.
MultipleCircuitConstraint AddMultipleCircuitConstraint()
Adds a multiple circuit constraint, aka the "VRP" (Vehicle Routing Problem) constraint.
Constraint AddModuloEquality(const LinearExpr &target, const LinearExpr &var, const LinearExpr &mod)
Adds target = var % mod.
static DoubleLinearExpr Sum(absl::Span< const IntVar > vars)
Constructs the sum of a list of variables.
Constraint AddExactlyOne(absl::Span< const BoolVar > literals)
Exactly one literal is true. Sum literals == 1.
BoolVar()
A default constructed BoolVar can be used to mean not defined yet.
BoolVar PresenceBoolVar() const
Returns a BoolVar indicating the presence of this interval.
Constraint AddAtMostOne(absl::Span< const BoolVar > literals)
At most one literal is true. Sum literals <= 1.
::operations_research::Domain Domain() const
BoolVar Not(BoolVar x)
A convenient wrapper so we can write Not(x) instead of x.Not() which is sometimes clearer.
int64_t SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)
Evaluates the value of an linear expression in a solver response.
std::string DebugString(const CpModelProto *proto=nullptr) const
Debug string. See the documentation for LinearExpr::DebugString().
LinearExpr operator *(LinearExpr expr, int64_t factor)
Definition: cp_model.h:1169
int index() const
Returns the index of the variable in the model. This will be non-negative.
Definition: cp_model.h:185
Constraint AddDivisionEquality(const LinearExpr &target, const LinearExpr &numerator, const LinearExpr &denominator)
Adds target = num / denom (integer division rounded towards 0).
Constraint AddElement(IntVar index, absl::Span< const int64_t > values, IntVar target)
Adds the element constraint: values[index] == target.
IntervalVar GetIntervalVarFromProtoIndex(int index)
Returns the interval variable from its index in the proto.
std::string DebugString() const
Returns a debug string.
IntVar NewIntVar(const Domain &domain)
Creates an integer variable with the given domain.
const CpModelProto & Build() const
Definition: cp_model.h:1059
const std::string & Name() const
Returns the name of the constraint (or the empty string if not set).
Constraint AddAtLeastOne(absl::Span< const BoolVar > literals)
Same as AddBoolOr. Sum literals >= 1.
A dedicated container for linear expressions.
Definition: cp_model.h:239
Constraint AddAbsEquality(const LinearExpr &target, const LinearExpr &expr)
Adds target == abs(expr).
LinearExpr()=default
Creates an empty linear expression with value zero.
Constraint OnlyEnforceIf(absl::Span< const BoolVar > literals)
The constraint will be enforced iff all literals listed here are true.
std::string VarDebugString(const CpModelProto &proto, int index)
static DoubleLinearExpr WeightedSum(absl::Span< const IntVar > vars, absl::Span< const double > coeffs)
Constructs the scalar product of variables and coefficients.
void AddAssumptions(absl::Span< const BoolVar > literals)
Adds multiple literals to the model as assumptions.
Constraint(ConstraintProto *proto)
Constraint AddBoolAnd(absl::Span< const BoolVar > literals)
Adds the constraint that all literals must be true.
void AddOptionalEvent(LinearExpr time, int64_t level_change, BoolVar is_active)
Adds an optional event.
static LinearExpr Sum(absl::Span< const IntVar > vars)
Constructs the sum of a list of variables.
bool SolutionBooleanValue(const CpSolverResponse &r, BoolVar x)
Evaluates the value of a Boolean literal in a solver response.
static LinearExpr WeightedSum(absl::Span< const IntVar > vars, absl::Span< const int64_t > coeffs)
Constructs the scalar product of variables and coefficients.
void AddArc(int tail, int head, BoolVar literal)
Add an arc to the circuit.
bool operator!=(const BoolVar &other) const
Definition: cp_model.h:94
LinearExpr & operator-=(const LinearExpr &other)
We call domain any subset of Int64 = [kint64min, kint64max].
Definition: sorted_interval_list.h:81
const std::vector< int > & variables() const
Returns the vector of variable indices.
Definition: cp_model.h:287
LinearExpr operator+(const LinearExpr &lhs, const LinearExpr &rhs)
Definition: cp_model.h:1127
Specialized automaton constraint.
Definition: cp_model.h:663
Constraint AddGreaterOrEqual(const LinearExpr &left, const LinearExpr &right)
Adds left >= right.
Constraint AddVariableElement(IntVar index, absl::Span< const IntVar > variables, IntVar target)
Adds the element constraint: variables[index] == target.
BoolVar WithName(const std::string &name)
Sets the name of the variable.
DoubleLinearExpr & operator *=(double coeff)
Multiply the linear expression by a constant.
Constraint AddLessThan(const LinearExpr &left, const LinearExpr &right)
Adds left < right.
IntVar WithName(const std::string &name)
Sets the name of the variable.
Constraint AddNoOverlap(absl::Span< const IntervalVar > vars)
Adds a no-overlap constraint that ensures that all present intervals do not overlap in time.
DoubleLinearExpr & AddTerm(IntVar var, double coeff)
Adds a term (var * coeff) to the linear expression.
Constraint WithName(const std::string &name)
Sets the name of the constraint.
Specialized circuit constraint.
Definition: cp_model.h:590
std::string DebugString() const
void AddRectangle(IntervalVar x_coordinate, IntervalVar y_coordinate)
Adds a rectangle (parallel to the axis) to the constraint.
NoOverlap2DConstraint AddNoOverlap2D()
The no_overlap_2d constraint prevents a set of boxes from overlapping.
DoubleLinearExpr & operator+=(double value)
Adds a constant value to the linear expression.
Definition: cp_model.h:57
void AddTransition(int tail, int head, int64_t transition_label)
Adds a transitions to the automaton.
TableConstraint AddForbiddenAssignments(absl::Span< const IntVar > vars)
Adds an forbidden assignments constraint.
LinearExpr & operator+=(const LinearExpr &other)
void AddHint(IntVar var, int64_t value)
Adds hinting to a variable.
IntervalVar NewOptionalIntervalVar(const LinearExpr &start, const LinearExpr &size, const LinearExpr &end, BoolVar presence)
Creates an optional interval variable from 3 affine expressions and a Boolean variable.
LinearExpr StartExpr() const
Returns the start linear expression.
LinearExpr SizeExpr() const
Returns the size linear expression.
Constraint AddLessOrEqual(const LinearExpr &left, const LinearExpr &right)
Adds left <= right.
bool operator==(const IntVar &other) const
Definition: cp_model.h:169
std::string Name() const
Returns the name of the interval (or the empty string if not set).
std::string DebugString(const CpModelProto *proto=nullptr) const
Debug string.
Constraint AddLinearConstraint(const LinearExpr &expr, const Domain &domain)
Adds expr in domain.
Wrapper class around the cp_model proto.
Definition: cp_model.h:720
static LinearExpr FromProto(const LinearExpressionProto &proto)
Constructs a linear expr from its proto representation.
const std::vector< int > & variables() const
Returns the vector of variable indices.
Definition: cp_model.h:404
void CopyFrom(const CpModelProto &model_proto)
Replaces the current model with the one from the given proto.
Constraint AddMaxEquality(const LinearExpr &target, absl::Span< const IntVar > vars)
Adds target == max(vars).
const bool IsConstant() const
Returns true if the expression has no variables.
Definition: cp_model.h:293