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