14 #ifndef OR_TOOLS_SAT_CP_MODEL_PRESOLVE_H_ 15 #define OR_TOOLS_SAT_CP_MODEL_PRESOLVE_H_ 41 const PresolveContext&
context);
67 std::vector<int>* postsolve_mapping);
82 void PresolveToFixPoint();
133 template <
typename ProtoWithVarsAndCoeffs>
135 ProtoWithVarsAndCoeffs*
proto,
150 bool ProcessSetPPC();
155 bool ProcessSetPPCSubset(
int c1,
int c2,
const std::vector<int>& c2_minus_c1,
156 const std::vector<int>& original_constraint_index,
157 std::vector<bool>* marked_for_removal);
159 void PresolvePureSatPart();
166 void ExtractEnforcementLiteralFromLinearConstraint(
int ct_index,
171 void TransformIntoMaxCliques();
174 void ExtractBoolAnd();
176 void ExpandObjective();
178 void TryToSimplifyDomain(
int var);
180 void MergeNoOverlapConstraints();
184 void EncodeAllAffineRelations();
185 bool PresolveAffineRelationIfAny(
int var);
192 std::vector<int>* postsolve_mapping_;
197 std::vector<std::pair<int, int64_t>> tmp_terms_;
222 const std::vector<int>& ignored_constraints);
226 bool CreateUnsatModel();
241 int64_t skipped_non_zero_ = 0;
244 std::vector<int> non_fixed_variables_;
245 std::vector<int64_t> non_fixed_coefficients_;
246 absl::flat_hash_map<int, int> interval_mapping_;
247 int starting_constraint_index_ = 0;
248 std::vector<int> temp_enforcement_literals_;
249 std::vector<int> temp_literals_;
264 std::vector<int>* postsolve_mapping);
283 #endif // OR_TOOLS_SAT_CP_MODEL_PRESOLVE_H_ bool PresolveCpModel(PresolveContext *context, std::vector< int > *postsolve_mapping)
void RemoveEmptyConstraints()
std::vector< std::pair< int, int > > FindDuplicateConstraints(const CpModelProto &model_proto)
ModelCopy(PresolveContext *context)
bool ImportConstraintsWithBasicPresolveIntoContext(const CpModelProto &in_model, PresolveContext *context)
void CopyEverythingExceptVariablesAndConstraintsFieldsIntoContext(const CpModelProto &in_model, PresolveContext *context)
CpModelPresolver(PresolveContext *context, std::vector< int > *postsolve_mapping)
CpModelProto const * model_proto
bool ImportAndSimplifyConstraints(const CpModelProto &in_model, const std::vector< int > &ignored_constraints)
Collection of objects used to extend the Constraint Solver library.
bool PresolveOneConstraint(int c)
void ApplyVariableMapping(const std::vector< int > &mapping, const PresolveContext &context)
GurobiMPCallbackContext * context