What are precedence constraints ?

    Precedence constraints define precedence relations among couples of operations. A precedence constraint is represented by an arrow between two operations. Two operations A and B are connected by a precedence constraint A -> B if operation B can only be started when A is finished, or later. Operation A is then said to precede B, or be its predecessor. Equivalently, B succeeds A, or is its successor.

    While precedence constraints define some order of succession among operations, it is important to note that they are different from a sequence of operations. A sequence completely defines the succession of operations, while precedence constraints only do so partially. For instance, consider the following precedence constraints defined for three operations A, B and C:


    A -> B (A precedes B)
    A -> C (A precedes C).

    These two precedence constraints partially define the order of the three operations. Indeed, there are two sequences compliant with them, with time flowing from the left to the right:

    A,B,C
    A,C,B

since there is no precedence defined between B and C.

    In addition, there may be several operations taking place in parallel, in particular on a workstation with several operators. In those cases, the number of possible sequences is even higher, although two operations connected by a precedence constraint still must take place one after the other. For instance, on a workstation with two operators, the operations B and C could be performed simultaneously, both starting at the end of A.