La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

delle operazioni con precedenze

Presentazioni simili


Presentazione sul tema: "delle operazioni con precedenze"— Transcript della presentazione:

1 Lavori con precedenza: algoritmo di Lawler per minimizzare la massima penalità

2 delle operazioni con precedenze
Sequenziamento delle operazioni con precedenze J1 J2 J3 J5 J4 J6 magazzino con movimentazione interna Ci possono essere precedenze fra i lavori da compiere rappresentate da un grafo, anche non connesso

3 gi funzione non decrescente
Algoritmo di Lawler (1973) min max* gi (ci) S i=1,…,n gi funzione non decrescente * misura regolare: non decresce con ci max tardiness gh (ch) gk (ck) ci ch ck gi(ci) lateness

4 Ti: “tardiness”, fuori tempo
( Li: “lateness”, ritardo che negativo diventa anticipo ) Ti := Max (0, ci - di) Ti:  0 di ci

5 gk (ck) gh (ch) ci ch ck gi(ci) V: insieme dei lavori senza successori
nel grafo delle precedenze t := åi pi 1 n k: gk (t) = min gi (t) Ji Î V g i(t) g h (t) g k (t) max gk (ck) gh (ch) ci gi(ci) ch ck t lateness tardiness $ S ottima: Jk è ultimo in S

6 Dim: $ S ottima: Jk è ultimo in S
k: gk (t) = min gi (t) Ji Î V JA Jk JB Jl Sia S’ ottima S’ : c'k c’B t JA JB Jl Jk S : cA cB cl t

7 S’ ottima ci £ c'i  i  k g i (ci) £ g i (c'i)  i  k g k (ck) = g k (t) £ g l (t) = gl (c’l) max g i (ci) £ max g i (c’i) i=1,…,n i=1,…,n

8 i(k): gi(k) (t) = min gi (t) J i Î V
PASSI DELL’ALGORITMO Grafo delle precedenze 1) k := n G : = { }; n tn := åi pi 1 Lavori senza successori in G 2) V := { }; i(k): gi(k) (t) = min gi (t) J i Î V

9 3) tk := tk - pi(k); G := G/{ nodo Ji(k)};
k := k -1 4) k ³ 1 Passo 2 k = 0 S = { Ji(1), Ji(2), ... Ji(n)}

10 gi (ci) = ci - di lateness Lavori: J1 J2 J3 J4 J5 J6
Tempi pi : Cons. di : J1 J2 J3 J5 gi (ci) = ci - di J4 lateness J6

11 t n = 6 gi (ci) = ci - di Lavori: J1 J2 J3 J4 J5 J6
Tempi pi : Cons. di : J6 t n = 6

12 t Lavori Ji: J1 J2 J3 J4 J5 J6 15 gi (tn) : * * 6 * 4 8 n = 6
gi (ci) = ci - di J5 J4 Lavori: J1 J2 J3 J4 J5 J6 Tempi pi : Cons. di : J6 t 15 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 i(n)=5 n = 6

13 t 15 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 13
gi (ci) = ci - di J5 J4 Lavori: J1 J2 J3 J4 J5 J6 Tempi pi : Cons. di : J6 t 15 13 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 gi (t5) : * * 4 * 6 i(n)=5 i(5)=3 n = 6

14 t Lavori Ji: J1 J2 J3 J4 J5 J6 15 gi (tn) : * * 6 * 4 8 13
gi (ci) = ci - di J5 J4 Lavori: J1 J2 J3 J4 J5 J6 Tempi pi : Cons. di : J6 t 15 13 9 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 gi (t5) : * * 4 * 6 gi (t4) : * 3 * 2 i(n)=5 i(5)=3 i(4)=6 n = 6

15 t 15 13 9 8 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8
gi (ci) = ci - di J5 J4 Lavori: J1 J2 J3 J4 J5 J6 Tempi pi : Cons. di : J6 t 15 13 9 8 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 gi (t5) : * * 4 * 6 gi (t4) : * 3 * 2 gi (t3) : * 2 1 i(n)=5 i(5)=3 i(4)=6 i(3)=4 n = 6

16 Sequenza ottima: Ji(1) Ji(2) ...Ji(k) ... Ji(n-1) Ji(n) n = 6
gi (ci) = ci - di J5 J4 Lavori: J1 J2 J3 J4 J5 J6 Tempi pi : Cons. di : J6 t 15 13 9 8 5 2 Lavori Ji: J1 J2 J3 J4 J5 J6 gi (tn) : * * 6 * 4 8 gi (t5) : * * 4 * 6 gi (t4) : * 3 * 2 gi (t3) : * 2 1 gi (t2) : * -1 gi (t1) : -1 i(n)=5 i(5)=3 i(4)=6 i(3)=4 i(2)=2 i(1)=1 Sequenza ottima: Ji(1) Ji(2) ...Ji(k) ... Ji(n-1) Ji(n) n = 6

17 Algoritmo di Smith modificato:
sequenze efficienti rispetto al completamento medio e il ritardo massimo

18 Algoritmo di Smith modificato Efficiente rispetto F e Tmax
1980 F’ < F° T’max £ T°max S° : Efficiente: $ S’ : F’ £ F° T’max < T°max F non c’è efficienza (inclusa frontiera) Tmax := maxi Ti 1 n non c’è sequenza (inclusa frontiera) Tmax T°max

19 [S EDD Lmax £ 0] Algoritmo di Smith (1956) min F S : Tmax = 0
$ soluzione Ses le sequenze EDD danno Tmax £ 0 : cm := å r pr 1 n ri = 0 tutti i pezzi disponibili al tempo iniziale F = 1 n åi (ci - ri) = c flusso medio

20 F = c = Si ci Si ci Jk Jl S’ : Jl Jk S : nF’ = nF - cl + c’k > nF
una sequenza è minima solo se l’ultimo lavoro è (uno) di lunghezza massima, tra quelli che possono (senza ritardo) essere sequenziati in ultimo : Jk Jl S’ : c’k cm pl < pk dk , dl ³ cm dk dl Jl Jk cl< c’k S : cl cm dk dl nF’ = nF - cl + c’k > nF F’ non è ottimo F = c = Si ci 1 n 1 n Si ci 1 n

21 Jk Jl S’ : Si c’i Jl Jk S : Si ci Si c’i Si ci Si ci = - cl + c’k >
la sequenza dei rimanenti n-1 è minima solo se l’ultimo lavoro è (uno) di lunghezza massima, tra quelli che possono (senza ritardo) essere sequenziati al posto n-1 : Jk Jl S’ : Si c’i 1 n-1 c’k pl < pk dk , dl ³ cm dk dl Jl Jk cl< c’k S : cl Si ci 1 n-1 dk dl Si c’i 1 n-1 = cl + c’k > F’ non è ottimo Si ci 1 n-1 Si ci 1 n-1 e così via a ritroso

22 Passi dell’algoritmo di Smith (1956)
1) k := n U : = { J1 ... Jn }; tn := år pr n 1 2) i(k): Ji(k) Î U (i) di(k) ³ t ( per ipotesi) (ii)  Jl Î U dl ³ t pl £ pi(k)

23 (i) di(k) ³ t ( per ipotesi) (ii)  Jl Î U dl ³ t
2) i(k): Ji(k) Î U (i) di(k) ³ t ( per ipotesi) (ii)  Jl Î U dl ³ t pl £ pi(k) Il passo 2 pone al posto k-esimo il lavoro di peso massimo tra quelli che ci possono stare con il vincolo Tmax =0 il vincolo Tmax =0 equivale a Lmax  0

24 3) tk := tk - pi(k); U := U / { Ji(k)};
k := k -1 4) k ³ 1 Passo 2 k = 0 S = { Ji(1), Ji(2), ... Ji(n)}

25 Algoritmo di Smith modificato:
Efficiente rispetto F e Lmax Dati: una sequenza EDD dei lavori: { J1 ... Jn } D ³ Tmax della EDD di := di + D D D dk dl dk dl Modifica dell’algoritmo

26 (i) di(k) ³ t ( per ipotesi) (ii)  Jl Î U dl ³ t
2) i(k): Ji(k) Î U diviene pl £ pi(k) (i) di(k) ³ t ( per ipotesi) (ii)  Jl Î U dl ³ t 2’) i(k): Ji(k) Î U pl < pi(k) pl = pi(k) => dl £ di(k) NO! di(k) < dl pl pi(k) =

27 F°:= min F * Lmax £ D D° = min Lmax F £ F°
È il risultato dell’algoritmo modificato * Attenzione: Lmax può essere negativo Con D°:= Lmax per la S ottima D° = min Lmax F £ F° La condizione modificata dà:

28 F £ F° D°= T°max = min Tmax F £ F° F° = min F Tmax £ D°= T°max
Se D° ³ 0 Con D° = min Lmax F £ F° l’algoritmo dà: F° = min F Tmax £ D°= T°max D°= T°max = min Tmax F £ F°

29 Efficienza rispetto F e Tmax
F°= min F Tmax £ T°max F < F° Tmax £ T°max $ S: S° è Efficiente T°max = min Tmax F £ F° F £ F° Tmax < T°max F non c’è efficienza* non c’è sequenza* * frontiera compresa T°max Tmax

30 L’algoritmo dà una sequenza S efficiente rispetto a F e Tmax
Att. : Se i(k) non è unico al passo 2’ ogni scelta diversa porterà a sequenze efficienti diverse

31 Efficienza rispetto F e Tmax
Esempio: curva di efficienza Lavori: J1 J2 J3 J4 Tempi pi : Cons. di : Punto 1 n Passo 1: D = Passo 2: Smith mod. dà: J4 J1 J3 J2 åi pi = 10 1 F° = 5 T°max = 8

32 Efficienza rispetto F e Tmax
Se ci sono più SPT l’alg. da’ quella con Lm minore. Es.: Lavori: J1 J2 J3 J4 Tempi pi : Cons. di : L: Punto 1 n Passo 1: D = Passo 2: Smith mod. dà: J4 J1 J2 J3 åi pi = 10 1 L’altra SPT avrebbe dato 9 F° = 5 T°max = 6

33 Efficienza rispetto F e Tmax
Esempio: curva di efficienza Lavori: J1 J2 J3 J4 Tempi pi : Cons. di : Punto 2 Passo 1: D = 8 -1 = 7 ³ 0 Passo 2: Smith mod. dà: J4 J1 J2 J3 F° = T°max = 6

34 Efficienza rispetto F e Tmax
Esempio: curva di efficienza Lavori: J1 J2 J3 J4 Tempi pi : Cons. di : Punto 3 Passo 1: D = 6 -1 = 5 ³ 0 Passo 2: Smith mod. dà: J1 J2 J3 J4 La seq. è una (la unica in questo caso) EDD quindi non si può abbassare T°max F° = T°max = 5

35 Efficienza rispetto F e Tmax
Esempio: curva di efficienza Lavori: J1 J2 J3 J4 Tempi pi : Cons. di : Infatti: Passo 1: D = 5 -1 = 4 ³ 0 Passo 2: non ci sono sequenze con T°max £ 4 perché min Lm = 5

36 Efficienza rispetto F e Tmax
Esempio: curva di efficienza: punti calcolati F non c’è efficienza F°= 6.75 F°= 5.25 F°= 5 non c’è sequenza* 4 T°max = 6 T°max = 8 T°max= 5 Tmax

37 Efficienza rispetto F e Tmax
Esempio: curva di efficienza: punti calcolati F non c’è efficienza* EDD: min Lmax = 5 F°= 6.75 F°= 5.25 SPT: min F = 5 F°= 5 non c’è sequenza* 4 T°max = 6 T°max = 8 T°max= 5 Tmax

38 Efficienza rispetto S c ed Lm
Per come si sviluppa l’algoritmo chiamato Smith modificato è più corretto parlare di min Lm (che può anche risultare negativo) e più comodo usare S c = nF S c non c’è efficienza* EDD: min Lm = 5 S°c = 27 S°c = 21 SPT: min S°c = 20 S°c= 20 non c’è sequenza* 4 L°m = 6 L°m = 8 L°m= 5 Lm Si noti che, mentre il punto con la Lm più a destra è senz’altro relativo a una SPT, quello più a sinistra ha la Lm di una EDD, ma può non essere relativo, come qui è, a una EDD.

39 L(SPT => min Lm) : -17 -12 - 5 - 4 2 11 Sc(SPT)= 50
c(SPT => min Lm) : L(SPT => min Lm) : Sc(SPT)= 50 minLm = 11 Lavori: A B C D E F Tempi p : Cons. d : L £ 10 18 14 9 n = 6 t Lavori: A B C D E F L18 : L14 : * 7 L9 : * * Col vincolo L £ 10, occorre calcolare i ritardi solo con c=18 perché la data dovuta minore è 7, il che porta ad escludere F. Scelto E come il più lungo dei restanti, i ritardi con c=14 degli altri saranno tutti £ 10, quindi vanno ordinati secondo la SPT che ha il minor Lm, il che fa scegliere D e non C con c=9. J(n):E J(5):F J(4):D °c : S°c =51 Sequenza ottima: A B C D F E Min Lm = 7 Min Sc => L£ Sc = 51

40 Sequenza ottima: A B C F E D Min Lm = 5
Otteniamo ora un altro punto di efficienza imponendo L £ 6 Lavori: A B C D E F Tempi p : Cons. d : 18 15 11 n = 6 t Lavori: A B C D E F L18 : L15 : * 4 8 L11 : * * 4 Col vincolo L £ 6, occorre calcolare i ritardi solo con c=18 (attribuito a D) e con c=15 (attribuito a E). I ritardi degli altri (A,B,C,F) saranno tutti £ 6, perché i completamenti c diminuiscono. Quindi vanno ordinati secondo la SPT che ha il minor Lm, ma qui è unica: proprio A B C F J(n):D J(5):E J(4):F °c : S°c = 54 Sequenza ottima: A B C F E D Min Lm = 5 Min Sc => L£ Sc = 54

41 Sequenza ottima: A C F E D B Min Lm = 3
Otteniamo ora un altro punto di efficienza imponendo L £ 4 Lavori: A B C D E F Tempi p : Cons. d : 18 16 13 9 n = 6 t Lavori: A B C D E F L18 : L16 : -2 * L13 : -5 * 2 * 2 6 L9 : -9 * -2 * * 2 Col vincolo L £ 4, si calcolano i ritardi con c=18 (attribuito a B), con c=16 (attribuito a D) , con c=13 (attribuito a E) , con c=9 (attribuito a F). I ritardi degli altri (A e C) saranno tutti £ 4, perché i completamenti c diminuiscono. Quindi vanno ordinati secondo la SPT che ha il minor Lm, ma qui è unica: A C J(n):B J(5):D J(4):E J(3):F °c : S°c = 61 Sequenza ottima: A C F E D B Min Lm = 3 Min Sc => L£ Sc = 61

42 Sequenza ottima: C F E D B A
c(EDD => min Sc) : Sc(EDD=>minSc)=75 EDD: F C E D B A Min Sc Lm= 2 Lavori: A B C D E F Tempi p : Cons. d : Lm £ 2 t 18 17 15 12 8 3 Lavori: A B C D E F L18 : 0(EDD!) L17 : * 2(EDD!) L15 : * * 4 2(EDD!) 4 8 L12 : * * 1 * 1(EDD!) 5 L8 : * * -3 * * 1(NO EDD!) L3 : * * -8 * * * J(n):A J(5):B J(4):D J(3):E J(2):F J(1):C °c : S°c = 73 <75! Min Lm = 2 Sc = 73 Sequenza ottima: C F E D B A Non è una sequenza EDD, ma ha la stessa Lm!

43 non c’è efficienza* non c’è sequenza* SPT° Lm
Efficienza rispetto S c ed Lm per l’esempio sviluppato Esistono due SPT°, entrambe con Lm=11, mentre min Sc con Lm=2 non è una EDD Sc = 75 EDD => min Sc S°c = 73 non c’è efficienza* S°c = 61 S°c = 54 S°c = 51 SPT° S°c= 50 non c’è sequenza* Lm 11 2 3 5 7 Quanto sopra conferma che, mentre il punto di efficienza con la Lm più a destra è senz’altro relativo a una SPT, quello più a sinistra ha la Lm di una EDD, ma può non essere relativo a una EDD.


Scaricare ppt "delle operazioni con precedenze"

Presentazioni simili


Annunci Google