14 #ifndef OR_TOOLS_SAT_BOOLEAN_PROBLEM_H_ 15 #define OR_TOOLS_SAT_BOOLEAN_PROBLEM_H_ 21 #include "absl/status/status.h" 41 return (static_cast<double>(v.value()) + problem.
objective().
offset()) *
55 const SatSolver& solver, std::vector<bool>* assignment);
89 const std::vector<bool>& assignment);
93 const std::vector<bool>& assignment);
99 const LinearBooleanProblem& problem);
105 BooleanAssignment* output);
109 const std::vector<int>& constraint_indices,
110 LinearBooleanProblem* subproblem);
121 const LinearBooleanProblem& problem,
122 std::vector<std::unique_ptr<SparsePermutation>>* generators);
133 LinearBooleanProblem* problem);
140 LinearBooleanProblem* problem);
145 #endif // OR_TOOLS_SAT_BOOLEAN_PROBLEM_H_ bool AddObjectiveConstraint(const LinearBooleanProblem &problem, bool use_lower_bound, Coefficient lower_bound, bool use_upper_bound, Coefficient upper_bound, SatSolver *solver)
void ChangeOptimizationDirection(LinearBooleanProblem *problem)
double AddOffsetAndScaleObjectiveValue(const LinearBooleanProblem &problem, Coefficient v)
void ApplyLiteralMappingToBooleanProblem(const absl::StrongVector< LiteralIndex, LiteralIndex > &mapping, LinearBooleanProblem *problem)
void ProbeAndSimplifyProblem(SatPostsolver *postsolver, LinearBooleanProblem *problem)
std::string LinearBooleanProblemToCnfString(const LinearBooleanProblem &problem)
const ::operations_research::sat::LinearObjective & objective() const
void StoreAssignment(const VariablesAssignment &assignment, BooleanAssignment *output)
void ExtractSubproblem(const LinearBooleanProblem &problem, const std::vector< int > &constraint_indices, LinearBooleanProblem *subproblem)
void ExtractAssignment(const LinearBooleanProblem &problem, const SatSolver &solver, std::vector< bool > *assignment)
CpModelProto BooleanProblemToCpModelproto(const LinearBooleanProblem &problem)
absl::Status ValidateBooleanProblem(const LinearBooleanProblem &problem)
void MakeAllLiteralsPositive(LinearBooleanProblem *problem)
bool LoadAndConsumeBooleanProblem(LinearBooleanProblem *problem, SatSolver *solver)
bool IsAssignmentValid(const LinearBooleanProblem &problem, const std::vector< bool > &assignment)
Coefficient ComputeObjectiveValue(const LinearBooleanProblem &problem, const std::vector< bool > &assignment)
void FindLinearBooleanProblemSymmetries(const LinearBooleanProblem &problem, std::vector< std::unique_ptr< SparsePermutation >> *generators)
bool AddObjectiveUpperBound(const LinearBooleanProblem &problem, Coefficient upper_bound, SatSolver *solver)
bool LoadBooleanProblem(const LinearBooleanProblem &problem, SatSolver *solver)
std::tuple< int64_t, int64_t, const double > Coefficient
double scaling_factor() const
Collection of objects used to extend the Constraint Solver library.
void UseObjectiveForSatAssignmentPreference(const LinearBooleanProblem &problem, SatSolver *solver)