La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Lavori con precedenza: algoritmo di Lawler per minimizzare la massima penalità."— Transcript della presentazione:

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

2 Sequenziamento delle operazioni con precedenze magazzino con movimentazione interna Ci possono essere precedenze fra i lavori da compiere rappresentate da un grafo, anche non connesso J1J1 J2J2 J3J3 J6J6 J5J5 J4J4

3 Algoritmo di Lawler (1973) min max*  i (c i ) S i=1,…,n  i funzione non decrescente * misura regolare: non decresce con c i i(ci)i(ci) cici chch  h (c h ) tardiness lateness  k (c k ) ckck max

4 T i := Max (0, c i - d i ) T i :  0 didi cici T i : “tardiness”, fuori tempo ( L i : “lateness”, ritardo che negativo diventa anticipo )

5 k:  k (  ) = min  i (  ) J i  V  =  i p i 1 n  S ottima: J k è ultimo in S V: insieme dei lavori senza successori nel grafo delle precedenze i(ci)i(ci) cici chch  h (c h ) tardiness lateness  k (c k ) ckck max   k (  )  h (  )  i (  )

6 k:  k (  ) = min  i (  ) J i  V Dim:  S ottima: J k è ultimo in S S’ : c' k  S : clcl  JlJl JkJk JkJk JlJl Sia S’ ottima cAcA JAJA c’ B JBJB cBcB JBJB JAJA

7 c i  c' i  i  k S’ ottima  i (c i )   i (c' i )  i  k  k (c k ) =  k (  )   l (  ) =  l (c’ l ) max  i (c i )  max  i (c’ i ) max  i (c i )  max  i (c’ i ) i=1,…,n i=1,…,n i=1,…,n i=1,…,n

8 PASSI DELL’ALGORITMO 1) k := n G  : = { }; 1 n Grafo delle precedenze  n :=  i p i 2) V  = { }; Lavori senza successori in G i(k):  i(k) (  ) = min  i (  ) J i  V

9  )  k  :=  k - p i(k) ; G  := G  { nodo J i(k) }; k := k -1 4) Passo 2 k  S = { J i(1), J i(2),... J i(n) } k  1

10 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4  i (c i ) = c i - d i lateness

11 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 n = 6   i (c i ) = c i - d i

12 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 Lavori J i :J 1 J 2 J 3 J 4 J 5 J 6  i (  n ) :**6* 48 n = 6 15  i(n)=5  i (c i ) = c i - d i

13 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 Lavori J i :J 1 J 2 J 3 J 4 J 5 J 6  i (  n ) :**6* 48  i (  5 ) :**4*6 n =  i(n)=5 i(5)=3  i (c i ) = c i - d i

14 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 Lavori J i :J 1 J 2 J 3 J 4 J 5 J 6  i (  n ) :**6* 48  i (  5 ) :**4*6  i (  4 ) :*3*2 n =  i(n)=5 i(5)=3 i(4)=6  i (c i ) = c i - d i

15 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 Lavori J i :J 1 J 2 J 3 J 4 J 5 J 6  i (  n ) :**6* 48  i (  5 ) :**4*6  i (  4 ) :*3*2  i (  3 ) :*21 n =  i(n)=5 i(5)=3 i(4)=6 i(3)=4  i (c i ) = c i - d i

16 Lavori:J 1 J 2 J 3 J 4 J 5 J 6 Tempi p i : Cons. d i : J1J1 J2J2 J3J3 J6J6 J5J5 J4J4 Lavori J i :J 1 J 2 J 3 J 4 J 5 J 6  i (  n ) :**6* 48  i (  5 ) :**4*6  i (  4 ) :*3*2  i (  3 ) :*21  i (  2 ) :*-1  i (  1 ) :-1 Sequenza ottima: J i(1) J i(2)...J i(k)... J i(n-1) J i(n) n =  i(n)=5 i(5)=3 i(4)=6 i(3)=4 i(2)=2 i(1)=1  i (c i ) = c i - d i

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

18 Algoritmo di Smith modificato Efficiente rispetto F e T max S° : Efficiente:  S’ : F’  F° T’ max < T° max F’ < F° T’ max  T° max F non c’è sequenza (inclusa frontiera) non c’è efficienza (inclusa frontiera) F°F° T° max T max T max := max i T i 1 n 1980

19 Algoritmo di Smith (1956) min F S : T max = 0 Ses le sequenze EDD danno T max  c m :=  r  p r 1 n  soluzione [ S EDD L max  ] r i = 0 tutti i pezzi disponibili al tempo iniziale F = 1n1n  i (c i - r i ) = c flusso medio

20 S’ : c’kc’k cmcm dkdk dldl p l < p k d k, d l  c m S : clcl cmcm dkdk dldl JlJl JkJk c l < c’ k nF’ = nF - c l + c’ k > nF F’ non è ottimo JkJk JlJl una sequenza è minima solo se l’ultimo lavoro è (uno) di lunghezza massima, tra quelli che possono (senza ritardo) essere sequenziati in ultimo : F = c =  i c i 1 n 1 n i ci i ci 1 n

21 S’ : c’kc’k dkdk dldl S : clcl dkdk dldl JlJl JkJk = - c l + c’ k > F’ non è ottimo JkJk JlJl 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 : e così via a ritroso i ci i ci 1 n-1 p l < p k d k, d l  c m c l < c’ k  i c’ i 1 n-1  i c’ i 1 n-1 i ci i ci 1 i ci i ci 1

22 1) k := n U  : = { J 1... J n };  n :=  r p r 1 n Passi dell’algoritmo di Smith (1956) 2) i(k): J i(k)  U (i) d i(k)  (  per ipotesi) (ii)  J l  U  d l  p l  p i(k)

23 Il passo 2 pone al posto k-esimo il lavoro di peso massimo tra quelli che ci possono stare con il vincolo T max =0 il vincolo T max =0 equivale a L max  0 2) i(k): J i(k)  U (i) d i(k)  (  per ipotesi) (ii)  J l  U  d l  p l  p i(k)

24  )  k  :=  k - p i(k) ; U  := U  { J i(k) }; k := k -1 4) Passo 2 k  S = { J i(1), J i(2),... J i(n) } k  1

25 Algoritmo di Smith modificato:  Efficiente rispetto F e L max   T max della EDD  i := d i +  dkdk dldl kk ll   Modifica dell’algoritmo Dati: una sequenza EDD dei lavori: { J 1... J n }

26 p l < p i(k) p l = p i(k) =>  l   i(k) NO! = plpl p i(k) <  i(k) ll 2’) i(k): J i(k)  U (i)  i(k)  (  per ipotesi) (ii)  J l  U   l  2) i(k): J i(k)  U (i) d i(k)  (  per ipotesi) (ii)  J l  U  d l  p l  p i(k) diviene

27 La condizione modificata dà:  ° = min L max F  F° F°:= min F * L max  È il risultato dell’algoritmo modificato Con  °:= L max per la S ottima * Attenzione: L max può essere negativo

28 l’algoritmo dà: F° = min F T max  T° max  °= T° max  min T max F  F° Se  °  0 Con  ° = min L max F  F°

29 F°= min F T max  T° max T° max = min T max F  F° Efficienza rispetto F e T max non c’è sequenza* non c’è efficienza* F F°F° T° max T max * frontiera compresa  S: S° è Efficiente F  F° T max < T° max F < F° T max  T° max

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

31 Efficienza rispetto F e T max Esempio: curva di efficienza Lavori:J 1 J 2 J 3 J 4 Tempi p i :2431 Cons. d i :1246 Passo 1:  = Passo 2:Smith mod. dà: J 4 J 1 J 3 J 2  i p i = 10 1 n Punto 1 F° = 5 T° max = 8

32 Efficienza rispetto F e T max Se ci sono più SPT l’alg. da’ quella con L m minore. Es.: Lavori:J 1 J 2 J 3 J 4 Tempi p i :2441 Cons. d i :1246 Passo 1:  = Passo 2:Smith mod. dà: J 4 J 1 J 2 J 3  i p i = 10 1 n Punto 1 F° = 5 T° max = 6 L: L’altra SPT avrebbe dato 9

33 Efficienza rispetto F e T max Esempio: curva di efficienza Lavori:J 1 J 2 J 3 J 4 Tempi p i :2431 Cons. d i :1246 Passo 1:  =  8 -1  = 7  Passo 2: Smith mod. dà: J 4 J 1 J 2 J 3 Punto 2 F° = 5.25 T° max = 6

34 Passo 1:  =  6 -1  = 5  Passo 2: Smith mod. dà: J 1 J 2 J 3 J 4 Punto 3 F° = 6.75 T° max = 5 Efficienza rispetto F e T max Esempio: curva di efficienza Lavori:J 1 J 2 J 3 J 4 Tempi p i :2431 Cons. d i :1246 La seq. è una (la unica in questo caso) EDD quindi non si può abbassare T° max

35 Passo 1:  =  5 -1  = 4  Passo 2: non ci sono sequenze con T° max  4 perché min L m = 5 Infatti: Efficienza rispetto F e T max Lavori:J 1 J 2 J 3 J 4 Tempi p i :2431 Cons. d i :1246 Esempio: curva di efficienza

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

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

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

39 Lavori:ABCD E F Tempi p : Cons. d : Lavori:ABCD E F L 18 : L 14 : *7 L 9 : ** 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 L m, il che fa scegliere D e non C con c=9. 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 L m, il che fa scegliere D e non C con c=9. Sequenza ottima: A B C D F E Min L m = 7  10 = 51 Min  c => L  10  c = 51 n =  J(n):E J(5):F J(4):D L  10 : °c : = 51  c = 51 c (SPT => min Lm) : L (SPT => min Lm) : = 50  c (SPT ) = 50 minL m = 11

40 Lavori:ABCD E F Tempi p : Cons. d : Lavori:ABCD E F L 18 : L 15 : -304*48 L 11 :-7-40**4 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 L m, ma qui è unica: proprio A B C F 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 L m, ma qui è unica: proprio A B C F Sequenza ottima: A B C F E D Min L m = 5  6 = 54 Min  c => L  6  c = 54 n =  J(n):D J(5):E J(4):F Otteniamo ora un altro punto di efficienza imponendo L  6 : °c : = 54  c = 54

41 Lavori:ABCD E F Tempi p : Cons. d : Lavori:ABCD E F L 18 : L 16 : -2*5359 L 13 :-5*2*26 L 9 :-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 L m, ma qui è unica: A C Sequenza ottima: A C F E D B Min L m = 3  4 = 61 Min  c => L  4  c = 61 n =  J(n):B J(5):D J(4):E J(3):F Otteniamo ora un altro punto di efficienza imponendo L  4 : °c : = 61  c = 61

42 Lavori:ABCD E F Tempi p : Cons. d : Lavori:ABCD E F L 18 :0 (EDD!) L 17 : *2 (EDD!) L 15 :**42 (EDD!) 48 L 12 :**1*1 (EDD!) 5 L 8 :**-3**1 (NO EDD!) L 3 :**-8*** Sequenza ottima: C F E D B A Non è una sequenza EDD, ma ha la stessa L m !  J(n):A J(5):B J(4):D J(3):E J(2):F J(1):C Lm  2Lm  2Lm  2Lm  2 : °c : c (EDD => min  c ) : EDD: F C E D B A Min  c L m = 2 =  c (EDD=> min  c ) = 75 = 73 <75!  c = 73 <75! Min L m = 2 = 73  c = 73

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


Scaricare ppt "Lavori con precedenza: algoritmo di Lawler per minimizzare la massima penalità."

Presentazioni simili


Annunci Google