fix for issue33
This commit is contained in:
@@ -722,15 +722,19 @@ class RankedPropagator : public Constraint {
|
||||
IntervalVar* const interval = RankedInterval(i);
|
||||
IntervalVar* const next_interval = RankedInterval(i + 1);
|
||||
IntVar* const slack = RankedSlack(i);
|
||||
DCHECK(interval->MustBePerformed());
|
||||
DCHECK(next_interval->MustBePerformed());
|
||||
const int64 transition_time = RankedTransitionTime(i, i + 1);
|
||||
next_interval->SetStartRange(
|
||||
CapAdd(interval->StartMin(), slack->Min() + transition_time),
|
||||
CapAdd(interval->StartMax(), slack->Max() + transition_time));
|
||||
}
|
||||
// Propagates on ranked last from right to left.
|
||||
for (int i = last_position; i > last_sentinel; --i) {
|
||||
for (int i = last_position; i > last_sentinel + 1; --i) {
|
||||
IntervalVar* const interval = RankedInterval(i - 1);
|
||||
IntervalVar* const next_interval = RankedInterval(i);
|
||||
DCHECK(interval->MustBePerformed());
|
||||
DCHECK(next_interval->MustBePerformed());
|
||||
IntVar* const slack = RankedSlack(i - 1);
|
||||
const int64 transition_time = RankedTransitionTime(i - 1, i);
|
||||
interval->SetStartRange(
|
||||
@@ -788,10 +792,13 @@ class RankedPropagator : public Constraint {
|
||||
}
|
||||
}
|
||||
// TODO(user): cache transition on ranked intervals in a vector.
|
||||
|
||||
// Propagates on ranked first from right to left.
|
||||
for (int i = std::min(first_sentinel - 2, last_position - 1); i >= 0; --i) {
|
||||
IntervalVar* const interval = RankedInterval(i);
|
||||
IntervalVar* const next_interval = RankedInterval(i + 1);
|
||||
DCHECK(interval->MustBePerformed());
|
||||
DCHECK(next_interval->MustBePerformed());
|
||||
IntVar* const slack = RankedSlack(i);
|
||||
const int64 transition_time = RankedTransitionTime(i, i + 1);
|
||||
interval->SetStartRange(
|
||||
@@ -799,9 +806,11 @@ class RankedPropagator : public Constraint {
|
||||
CapSub(next_interval->StartMax(), slack->Min() + transition_time));
|
||||
}
|
||||
// Propagates on ranked last from left to right.
|
||||
for (int i = last_sentinel; i < last_position - 1; ++i) {
|
||||
for (int i = last_sentinel + 1; i < last_position - 1; ++i) {
|
||||
IntervalVar* const interval = RankedInterval(i);
|
||||
IntervalVar* const next_interval = RankedInterval(i + 1);
|
||||
DCHECK(interval->MustBePerformed());
|
||||
DCHECK(next_interval->MustBePerformed());
|
||||
IntVar* const slack = RankedSlack(i);
|
||||
const int64 transition_time = RankedTransitionTime(i, i + 1);
|
||||
next_interval->SetStartRange(
|
||||
|
||||
Reference in New Issue
Block a user