2 fixes on scheduling

This commit is contained in:
lperron@google.com
2012-07-24 22:32:50 +00:00
parent cc4e706e53
commit 895a4a8ef1
2 changed files with 3 additions and 1 deletions

View File

@@ -901,7 +901,7 @@ class RankedPropagator : public Constraint {
}
}
// Propagates on ranked first from right to left.
for (int i = std::min(first_sentinel - 1, last_position - 1); i >= 0; --i) {
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);
IntVar* const transit = RankedTransit(i);

View File

@@ -251,6 +251,7 @@ void SequenceVar::RankSequence(const std::vector<int>& rank_first,
void SequenceVar::RankFirst(int index) {
solver()->GetPropagationMonitor()->RankFirst(this, index);
intervals_[index]->SetPerformed(true);
const int forward_frontier = ComputeForwardFrontier();
nexts_[forward_frontier]->SetValue(index + 1);
}
@@ -267,6 +268,7 @@ void SequenceVar::RankNotFirst(int index) {
void SequenceVar::RankLast(int index) {
solver()->GetPropagationMonitor()->RankLast(this, index);
intervals_[index]->SetPerformed(true);
const int backward_frontier = ComputeBackwardFrontier();
nexts_[index + 1]->SetValue(backward_frontier);
}