2 fixes on scheduling
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user