Skip to content

Commit

Permalink
constraint_solver: Export from google3
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizux committed Jun 3, 2024
1 parent bc108f5 commit 9068042
Show file tree
Hide file tree
Showing 24 changed files with 2,490 additions and 1,551 deletions.
503 changes: 34 additions & 469 deletions ortools/constraint_solver/constraint_solveri.h

Large diffs are not rendered by default.

24 changes: 11 additions & 13 deletions ortools/constraint_solver/element.cc
Original file line number Diff line number Diff line change
Expand Up @@ -407,18 +407,18 @@ RangeMinimumQueryExprElement::RangeMinimumQueryExprElement(
}

int64_t RangeMinimumQueryExprElement::Min() const {
return min_rmq_.GetMinimumFromRange(IndexMin(), IndexMax() + 1);
return min_rmq_.RangeMinimum(IndexMin(), IndexMax() + 1);
}

int64_t RangeMinimumQueryExprElement::Max() const {
return max_rmq_.GetMinimumFromRange(IndexMin(), IndexMax() + 1);
return max_rmq_.RangeMinimum(IndexMin(), IndexMax() + 1);
}

void RangeMinimumQueryExprElement::Range(int64_t* mi, int64_t* ma) {
const int64_t range_min = IndexMin();
const int64_t range_max = IndexMax() + 1;
*mi = min_rmq_.GetMinimumFromRange(range_min, range_max);
*ma = max_rmq_.GetMinimumFromRange(range_min, range_max);
*mi = min_rmq_.RangeMinimum(range_min, range_max);
*ma = max_rmq_.RangeMinimum(range_min, range_max);
}

#define UPDATE_RMQ_BASE_ELEMENT_INDEX_BOUNDS(test) \
Expand Down Expand Up @@ -870,16 +870,14 @@ IntExpr* Solver::MakeMonotonicElement(Solver::IndexEvaluator1 values,
bool increasing, IntVar* const index) {
CHECK_EQ(this, index->solver());
if (increasing) {
return RegisterIntExpr(
RevAlloc(new IncreasingIntExprFunctionElement(this, values, index)));
return RegisterIntExpr(RevAlloc(
new IncreasingIntExprFunctionElement(this, std::move(values), index)));
} else {
// You need to pass by copy such that opposite_value does not include a
// dandling reference when leaving this scope.
Solver::IndexEvaluator1 opposite_values = [values](int64_t i) {
return -values(i);
};
return RegisterIntExpr(MakeOpposite(RevAlloc(
new IncreasingIntExprFunctionElement(this, opposite_values, index))));
return RegisterIntExpr(
MakeOpposite(RevAlloc(new IncreasingIntExprFunctionElement(
this,
[values = std::move(values)](int64_t i) { return -values(i); },
index))));
}
}

Expand Down
3 changes: 2 additions & 1 deletion ortools/constraint_solver/graph_constraints.cc
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 +627,8 @@ Constraint* Solver::MakeNoCycle(const std::vector<IntVar*>& nexts,
const int64_t size = nexts.size();
sink_handler = [size](int64_t index) { return index >= size; };
}
return RevAlloc(new NoCycle(this, nexts, active, sink_handler, assume_paths));
return RevAlloc(
new NoCycle(this, nexts, active, std::move(sink_handler), assume_paths));
}

Constraint* Solver::MakeNoCycle(const std::vector<IntVar*>& nexts,
Expand Down
Loading

0 comments on commit 9068042

Please sign in to comment.