Startpositionen:
Urspr. Reihenfolge an W_0: t_0, t_1, t_3 Urspr. Reihenfolge an W_1: t_0, t_1, t_2, t_3
t_1, t_0 --------
|
t_3 ----------[W_0]----------
|
t_2 ----------------------[W_1]---------------
Aktion:
Es wird die Reihenfolge der oberen Fahrzeuge t_3, t_0 an W_0 geändert.
Aktuelles Verhalten:
Es entsteht ein Deadlock, vor W_0 und W_1, da t_3 auf t_1 und t_0 auf t_3 an W_0 wartet.
Gewünschtes Verhalten:
Es existieren weiterhin für alle Reihenfolgeentscheidungen Constraints. Es entsteht vermutlich eine der beiden Call-Sequenzen:
Variante I:
swapConstraints("t_3 vor t_0 an W_0") [User-Input]
|-> swapConstraints("t_3 vor t_1 an W_0") [Deadlock-Verhinderung Tiefe I] (sonst Deadlock an W_0, da t_1 nicht mehr t_0 passieren kann)
|-> swapConstraints("t_2 vor t_1 an W_1") [Deadlock-Verhinderung Tiefe II] ('normaler' Folgeswap)
|-> swapConstraints("t_2 vor t_0 an W_1") [Deadlock-Verhinderung Tiefe I] ('normaler' Folgeswap)
Variante II:
swapConstraints("t_3 vor t_0 an W_0") [User-Input]
|-> swapConstraints("t_2 vor t_0 an W_1") [Deadlock-Verhinderung Tiefe I] ('normaler' Folgeswap)
|-> swapConstraints("t_2 vor t_1 an W_1") [Deadlock-Verhinderung Tiefe II] (sonst Deadlock an W_1, da t_1 nicht mehr t_0 passieren kann)
|-> swapConstraints("t_3 vor t_1 an W_0") [Deadlock-Verhinderung Tiefe I] (sonst Deadlock an W_0, da t_1 nicht mehr t_0 passieren kann)
Gewünschte Reihenfolge:
t_2, t_3, t_0, t_1 an W_1