hook the right constraints
This commit is contained in:
@@ -2320,10 +2320,14 @@ IntExpr* Solver::MakeSum(const std::vector<IntVar*>& vars) {
|
||||
new_max = CapAdd(vars[i]->Max(), new_max);
|
||||
}
|
||||
}
|
||||
const string name =
|
||||
const bool all_booleans = AreAllBooleans(vars.data(), vars.size());
|
||||
|
||||
const string name = all_booleans ?
|
||||
StringPrintf("BooleanSum([%s])",
|
||||
DebugStringVector(vars, ", ").c_str()) :
|
||||
StringPrintf("Sum([%s])", DebugStringVector(vars, ", ").c_str());
|
||||
IntVar* const sum_var = MakeIntVar(new_min, new_max, name);
|
||||
if (AreAllBooleans(vars.data(), vars.size())) {
|
||||
if (all_booleans) {
|
||||
AddConstraint(RevAlloc(
|
||||
new SumBooleanEqualToVar(this, vars.data(), vars.size(), sum_var)));
|
||||
} else if (new_min != kint64min && new_max != kint64max) {
|
||||
|
||||
@@ -1002,7 +1002,7 @@ Constraint* Solver::MakeIsLessOrEqualCt(
|
||||
} else if (right->Bound()) {
|
||||
return MakeIsLessOrEqualCstCt(left->Var(), right->Min(), b);
|
||||
}
|
||||
return MakeIsLessOrEqualCstCt(MakeDifference(left, right)->Var(), 0, b);
|
||||
return RevAlloc(new IsLessOrEqualCt(this, left->Var(), right->Var(), b));
|
||||
}
|
||||
|
||||
IntVar* Solver::MakeIsLessVar(
|
||||
@@ -1054,7 +1054,7 @@ Constraint* Solver::MakeIsLessCt(
|
||||
} else if (right->Bound()) {
|
||||
return MakeIsLessCstCt(left->Var(), right->Min(), b);
|
||||
}
|
||||
return MakeIsLessCstCt(MakeDifference(left, right)->Var(), 0, b);
|
||||
return RevAlloc(new IsLessCt(this, left->Var(), right->Var(), b));
|
||||
}
|
||||
|
||||
IntVar* Solver::MakeIsGreaterOrEqualVar(
|
||||
|
||||
Reference in New Issue
Block a user