OR-Tools  9.3
cp_model.h File Reference

Detailed Description

This file implements a wrapper around the CP-SAT model proto.

Here is a minimal example that shows how to create a model, solve it, and print out the solution.

CpModelBuilder cp_model;
Domain all_animals(0, 20);
IntVar rabbits = cp_model.NewIntVar(all_animals).WithName("rabbits");
IntVar pheasants = cp_model.NewIntVar(all_animals).WithName("pheasants");
cp_model.AddEquality(rabbits + pheasants, 20);
cp_model.AddEquality(4 * rabbits + 2 * pheasants, 56);
const CpSolverResponse response = Solve(cp_model.Build());
if (response.status() == CpSolverStatus::FEASIBLE) {
<< " rabbits, and " << SolutionIntegerValue(response, pheasants)
<< " pheasants.";
}
#define LOG(severity)
Definition: base/logging.h:420
SharedResponseManager * response
const int INFO
Definition: log_severity.h:31
absl::StatusOr< SolveResult > Solve(const Model &model, const SolverType solver_type, const SolveArguments &solve_args, const SolverInitArguments &init_args)
Definition: solve.cc:94
int64_t SolutionIntegerValue(const CpSolverResponse &r, const LinearExpr &expr)
Evaluates the value of an linear expression in a solver response.
Definition: cp_model.cc:1329

Definition in file cp_model.h.

Go to the source code of this file.

Classes

class  BoolVar
 A Boolean variable. More...
 
class  IntVar
 An integer variable. More...
 
class  LinearExpr
 A dedicated container for linear expressions. More...
 
class  DoubleLinearExpr
 A dedicated container for linear expressions with double coefficients. More...
 
class  IntervalVar
 Represents a Interval variable. More...
 
class  Constraint
 A constraint. More...
 
class  CircuitConstraint
 Specialized circuit constraint. More...
 
class  MultipleCircuitConstraint
 Specialized circuit constraint. More...
 
class  TableConstraint
 Specialized assignment constraint. More...
 
class  ReservoirConstraint
 Specialized reservoir constraint. More...
 
class  AutomatonConstraint
 Specialized automaton constraint. More...
 
class  NoOverlap2DConstraint
 Specialized no_overlap2D constraint. More...
 
class  CumulativeConstraint
 Specialized cumulative constraint. More...
 
class  CpModelBuilder
 Wrapper class around the cp_model proto. More...
 

Namespaces

namespace  operations_research
 Collection of objects used to extend the Constraint Solver library.
 
namespace  operations_research::sat
 

Functions

std::ostream & operator<< (std::ostream &os, const BoolVar &var)
 
BoolVar Not (BoolVar x)
 A convenient wrapper so we can write Not(x) instead of x.Not() which is sometimes clearer. More...
 
std::ostream & operator<< (std::ostream &os, const IntVar &var)
 
std::ostream & operator<< (std::ostream &os, const LinearExpr &e)
 
std::ostream & operator<< (std::ostream &os, const DoubleLinearExpr &e)
 
std::ostream & operator<< (std::ostream &os, const IntervalVar &var)
 
int64_t SolutionIntegerValue (const CpSolverResponse &r, const LinearExpr &expr)
 Evaluates the value of an linear expression in a solver response. More...
 
bool SolutionBooleanValue (const CpSolverResponse &r, BoolVar x)
 Evaluates the value of a Boolean literal in a solver response. More...
 
std::string VarDebugString (const CpModelProto &proto, int index)
 
LinearExpr operator- (LinearExpr expr)
 
LinearExpr operator+ (const LinearExpr &lhs, const LinearExpr &rhs)
 
LinearExpr operator+ (LinearExpr &&lhs, const LinearExpr &rhs)
 
LinearExpr operator+ (const LinearExpr &lhs, LinearExpr &&rhs)
 
LinearExpr operator+ (LinearExpr &&lhs, LinearExpr &&rhs)
 
LinearExpr operator- (const LinearExpr &lhs, const LinearExpr &rhs)
 
LinearExpr operator- (LinearExpr &&lhs, const LinearExpr &rhs)
 
LinearExpr operator- (const LinearExpr &lhs, LinearExpr &&rhs)
 
LinearExpr operator- (LinearExpr &&lhs, LinearExpr &&rhs)
 
LinearExpr operator* (LinearExpr expr, int64_t factor)
 
LinearExpr operator* (int64_t factor, LinearExpr expr)
 
DoubleLinearExpr operator- (DoubleLinearExpr expr)
 
DoubleLinearExpr operator+ (const DoubleLinearExpr &lhs, const DoubleLinearExpr &rhs)
 
DoubleLinearExpr operator+ (DoubleLinearExpr &&lhs, const DoubleLinearExpr &rhs)
 
DoubleLinearExpr operator+ (const DoubleLinearExpr &lhs, DoubleLinearExpr &&rhs)
 
DoubleLinearExpr operator+ (DoubleLinearExpr &&lhs, DoubleLinearExpr &&rhs)
 
DoubleLinearExpr operator+ (DoubleLinearExpr expr, double rhs)
 
DoubleLinearExpr operator+ (double lhs, DoubleLinearExpr expr)
 
DoubleLinearExpr operator- (const DoubleLinearExpr &lhs, const DoubleLinearExpr &rhs)
 
DoubleLinearExpr operator- (DoubleLinearExpr &&lhs, const DoubleLinearExpr &rhs)
 
DoubleLinearExpr operator- (const DoubleLinearExpr &lhs, DoubleLinearExpr &&rhs)
 
DoubleLinearExpr operator- (DoubleLinearExpr &&lhs, DoubleLinearExpr &&rhs)
 
DoubleLinearExpr operator- (DoubleLinearExpr epxr, double rhs)
 
DoubleLinearExpr operator- (double lhs, DoubleLinearExpr expr)
 
DoubleLinearExpr operator* (DoubleLinearExpr expr, double factor)
 
DoubleLinearExpr operator* (double factor, DoubleLinearExpr expr)