Sequence constraints on interval variables and interval sequence variables

Groups of interval variables may be constrained to have relative positions of the start and end points of the interval variables.

An interval sequence variable alone does not enforce any constraint on the relative position of the end points of the interval variables. For instance, an interval variable a could be sequenced before an interval variable b in a sequence p without any impact on the relative position between the start/end points of a and b (a could still be fixed to start after the end of b). Different semantics can be used to define how a sequence constrains the positions of intervals.

There are four sequencing constraints available on sequence variables. The first in sequence constraint on an interval variable and an interval sequence variable states that if the interval variable is present, then it will be the first interval of the sequence. The last in sequence constraint on an interval variable and an interval sequence variable states that if an interval variable is present, it will be the last interval of the sequence. The before constraint on an interval sequence variable and two interval variable states that if both interval variables are present, then the first interval variable will appear in the sequence before the other interval. The previous constraint on an interval sequence variable and two interval variable states that if both interval variables are present then the first interval variable will be just before the other in the sequence, that is, it will appear before the second and no other interval will be sequenced between the two intervals.

In the C++ API of CP Optimizer, the functions IloFirst, IloLast, IloBefore and IloPrev represent the sequencing constraints.

In the Java™ API of CP Optimizer, the methods IloCP.first, IloCP.last, IloCP.before and IloCP.prev represent the sequencing constraints.

In the C# API of CP Optimizer, the methods CP.First, CP.Last, CP.Before and CP.Prev represent the sequencing constraints.

The no overlap constraint on an interval sequence variable p states that the sequence defines a chain of non-overlapping intervals, any interval in the chain being constrained to end before the start of the next interval in the chain. This constraint is typically useful for modeling disjunctive resources.

A transition distance matrix can be specified, which defines the minimal distance that must separate two consecutive intervals in the sequence.

In the C++ API of CP Optimizer, the class IloNoOverlap represents a no overlap constraint.

In the Java API of CP Optimizer, the method IloCP.noOverlap returns a no overlap constraint.

In the C# API of CP Optimizer, the method CP.NoOverlap returns a no overlap constraint.