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

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

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

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

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

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

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

J1 J2 J3

J6

J5

J4

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

Algoritmo di Lawler (1973)

min max* i (ci) S i=1,…,n

i funzione non decrescente

* misura regolare: non decresce con ci

i(ci)

ci

ch

h (ch)tardiness

lateness

k (ck)

ck

max

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

Ti := Max (0, ci - di) Ti: 0

di ci

Ti: “tardiness”, fuori tempo( Li: “lateness”, ritardo chenegativo diventa anticipo )

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

k: k () = min i () Ji V

= i pi1

n

S ottima: Jk è ultimo in S

V: insieme dei lavori senza successorinel grafo delle precedenze

i(ci)ci

ch

h (ch)

tardinesslateness

k (ck)

ck

max

k ()h ()i()

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

k: k () = min i () Ji V

Dim: S ottima: Jk è ultimo in S

S’ :c'k

S : cl

Jl Jk

Jk JlSia S’ ottima

cA

JA

c’B

JB

cB

JB

JA

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

ccii c'c'i i i i k k

S’ ottimaS’ ottima

ii (c(cii)) i i (c'(c'ii) ) i i k k

k k (c(ckk) = ) = k k (() ) l l (() = ) = l l

(c’(c’ll))

max max i i (c(cii) ) max max i i

(c’(c’ii)) i=1,…,n i=1,…,n i=1,…,n i=1,…,n

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

PASSIPASSI DELL’ALGORITMODELL’ALGORITMO

1) k := n G: = { };

1

n

Grafo delleprecedenze

n := i pi

2) V= { }; Lavori senzasuccessori in G

i(k): i(k) () = min i () J i V

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

)k:= k - pi(k); G:= G{ nodo Ji(k)};

k := k -1

4) Passo 2

k S = { Ji(1), Ji(2), ... Ji(n)}

k 1

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

Lavori:Lavori: JJ11 JJ22 JJ33 JJ44 JJ55 JJ66

Tempi Tempi ppii : : 22 33 44 33 22 1 1

Cons. dCons. di i :: 33 66 99 77 1111 77

J1 J2 J3

J6

J5

J4

i (ci) = ci - di

lateness

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

n = 6

i (ci) = ci - di

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

Lavori Ji: J1 J2 J3 J4 J5 J6

i (n) : * * 6 * 4 8

n = 6

15

i(n)=5

i (ci) = ci - di

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

Lavori Ji: J1 J2 J3 J4 J5 J6

i (n) : * * 6 * 4 8i (5) : * * 4 * 6

n = 6

1513

i(n)=5

i(5)=3

i (ci) = ci - di

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

Lavori Ji: J1 J2 J3 J4 J5 J6

i (n) : * * 6 * 4 8i (5) : * * 4 * 6i (4) : * 3 * 2

n = 6

15139

i(n)=5

i(5)=3

i(4)=6

i (ci) = ci - di

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

Lavori Ji: J1 J2 J3 J4 J5 J6

i (n) : * * 6 * 4 8i (5) : * * 4 * 6i (4) : * 3 * 2i (3) : * 2 1

n = 6

151398

i(n)=5

i(5)=3

i(4)=6

i(3)=4

i (ci) = ci - di

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

Lavori: J1 J2 J3 J4 J5 J6

Tempi pi : 2 3 4 3 2 1

Cons. di : 3 6 9 7 11 7

J1 J2 J3

J6

J5

J4

Lavori Ji: J1 J2 J3 J4 J5 J6

i (n) : * * 6 * 4 8i (5) : * * 4 * 6i (4) : * 3 * 2i (3) : * 2 1i (2) : * -1i (1) : -1

Sequenza ottima: Ji(1) Ji(2) ...Ji(k) ... Ji(n-1) Ji(n) n = 6

15139852

i(n)=5

i(5)=3

i(4)=6

i(3)=4

i(2)=2

i(1)=1

i (ci) = ci - di

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

Algoritmo di Smith modificato: sequenze efficienti rispetto al

completamento medio e il ritardo massimo

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

Algoritmo di Smith modificato Efficiente rispetto F e Tmax

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)

T°maxTmax

Tmax := maxi Ti1

n

1980

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

Algoritmo di Smith (1956) min F S : Tmax = 0

Ses le sequenze EDD danno Tmax

cm := rpr1

n

soluzione [S EDD Lmax ]

ri = 0 tutti i pezzi disponibili al tempo iniziale

F = 1n i (ci - ri) = c flusso medio

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

S’ :c’k cm dk dlpl < pk

dk , dl cm

S : cl cm dk dl

Jl Jk cl< c’k

nF’ = nF - cl + c’k > nF F’ non è ottimo

Jk Jl

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 ci1

n1n

n

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

S’ :c’k dk dl

S : cl dk dl

Jl Jk

= - cl + c’k >

F’ non è ottimo

Jk Jl

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 ci1

n-1

pl < pk

dk , dl cm

cl< c’k

i c’i1

n-1

i c’i1

n-1 i ci1

n-1 i ci1

n-1

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

1) k := n U: = { J1 ... Jn }; n := r pr1

n

Passi dell’algoritmo di Smith (1956)Passi dell’algoritmo di Smith (1956)

2) i(k): Ji(k) U

(i) di(k) (per ipotesi)

(ii) Jl U dl

pl pi(k)

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

Il passo 2 pone al posto k-esimo il lavorodi peso massimo tra quelli che ci possonostare con il vincolo Tmax =0

il vincolo Tmax =0 equivale a Lmax 0

2) i(k): Ji(k) U

(i) di(k) (per ipotesi)

(ii) Jl U dl

pl pi(k)

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

)k:= k - pi(k); U:= U{ Ji(k)}; k := k -1

4) Passo 2

k S = { Ji(1), Ji(2), ... Ji(n)}

k 1

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

Algoritmo di Smith modificato:Algoritmo di Smith modificato:Efficiente rispetto Efficiente rispetto FF e L e Lmaxmax

Tmax della EDD

i := di +

dk dl k l

Modifica dell’algoritmo

Dati: una sequenza EDD dei lavori: { J1 ... Jn }

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

pl < pi(k)

pl = pi(k) => l

i(k)

NO!

=pl pi(k)<i(k) l

2’) i(k): Ji(k) U (i) i(k) (per ipotesi)

(ii) Jl U l

2) i(k): Ji(k) U

(i) di(k) (per ipotesi)

(ii) Jl U dl

pl pi(k)diviene

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

La condizione modificata dà:

° = min Lmax F F°

F°:= min F* Lmax

È il risultato dell’algoritmomodificato

Con°:= Lmax per la S ottima

* Attenzione: Lmax può essere negativo

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

l’algoritmo dà:

F° = min F Tmax T°max

°= T°maxmin Tmax

F F°

Se ° 0

Con° = min Lmax F F°

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

F°= min F Tmax T°max

T°max = min Tmax

F F°

Efficienza rispetto F e Tmax

non c’è sequenza*

non c’è efficienza*

F

T°max Tmax

* frontiera compresa

S: S° è Efficiente

F F° Tmax < T°max

F < F° Tmax T°max

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

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

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

Efficienza rispetto F e Tmax

Esempio:curva diefficienza

Lavori: J1 J2 J3 J4

Tempi pi : 2 4 3 1

Cons. di : 1 2 4 6

Passo 1: =

Passo 2: Smith mod. dà: J4 J1 J3 J2

i pi = 101

nPunto 1

F° = 5 T°max = 8

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

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 : 2 4 4 1

Cons. di : 1 2 4 6

Passo 1: =

Passo 2: Smith mod. dà: J4 J1 J2 J3

i pi = 101

nPunto 1

F° = 5 T°max = 6

L: 2 5 6 -5

L’altra SPT avrebbe dato 9

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

Efficienza rispetto F e Tmax

Esempio:curva diefficienza

Lavori: J1 J2 J3 J4

Tempi pi : 2 4 3 1

Cons. di : 1 2 4 6

Passo 1: =8 -1= 7 Passo 2: Smith mod. dà: J4 J1 J2 J3

Punto 2

F° = 5.25 T°max = 6

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

Passo 1: =6 -1= 5 Passo 2: Smith mod. dà: J1 J2 J3 J4

Punto 3

F° = 6.75 T°max = 5

Efficienza rispetto F e Tmax

Esempio:curva diefficienza

Lavori: J1 J2 J3 J4

Tempi pi : 2 4 3 1

Cons. di : 1 2 4 6

La seq. è una (la unica in questo caso) EDD quindi non si può abbassare T°max

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

Passo 1: =5 -1= 4 Passo 2: non ci sono sequenze con T°max 4 perché min Lm = 5

Infatti:

Efficienza rispetto F e Tmax

Lavori: J1 J2 J3 J4

Tempi pi : 2 4 3 1

Cons. di : 1 2 4 6

Esempio:curva diefficienza

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

Efficienza rispetto F e Tmax

Esempio: curva di efficienza: punti calcolati

F

F°= 5.25

T°max= 5 TmaxT°max = 8T°max = 6

F°= 5

non c’è efficienza

F°= 6.75

non c’è sequenza*

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

Efficienza rispetto F e Tmax

Esempio: curva di efficienza: punti calcolati

F

F°= 5.25

T°max= 5 TmaxT°max = 8T°max = 6

F°= 5

non c’è efficienza*

F°= 6.75

non c’è sequenza*

EDD:

min Lmax = 5 SPT:

min F = 5

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

Efficienza rispetto 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 c = nF

c

c = 21

L°m= 5 LmL°m = 8L°m = 6

c= 20

non c’è efficienza*

c = 27

non c’è sequenza*

EDD:

min Lm = 5 SPT:

min c = 20

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.

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

Lavori: A B C D E F

Tempi p : 1 2 3 3 4 5

Cons. d : 18 15 11 13 11 7

Lavori: A B C D E FL18 : 0 3 7 5 7 11L14 : -4 -1 3 1 * 7L9 : -9 -6 -2 -4 * *Col vincolo LL 10, occorre calcolare i ritardi solo con c=18 perché la data 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 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 restanti, i ritardi con c=14 degli altri saranno tutti 10, quindi vanno ordinati 10, quindi vanno ordinati secondo la SPT che ha il minor Lsecondo la SPT che ha il minor Lmm, il che fa scegliere D e non C con c=9., il che fa scegliere D e non C con c=9.

Sequenza ottima: A B C D F E Min Lm = 7 Min c => L1010 c = = 5151

n = 6

1814 9

J(n):E

J(5):F

J(4):D

LL 1010

°c : : 11 33 66 99 1818 1414 c ==5151

cc(SPT => min (SPT => min LmLm)) :: 11 3 3 6 6 9 9 1313 1818LL(SPT => min (SPT => min LmLm) ) :: -17-17 -12-12 - 5- 5 - 4- 4 2 2 1111

c(SPT)= = 5050

minLminLmm = = 1111

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

Lavori: A B C D E F

Tempi p : 1 2 3 3 4 5

Cons. d : 18 15 11 13 11 7

Lavori: A B C D E FL18 : 0 3 7 5 7 11L15 : -3 0 4 * 4 8L11 : -7 -4 0 * * 4Col vincolo LL 6, occorre calcolare i ritardi solo con c=18 (attribuito a D) e con 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 c=15 (attribuito a E). I ritardi degli altri (A,B,C,F) saranno tutti 6, perché i 6, perché i completamenti completamenti cc diminuiscono. Quindi vanno ordinati secondo la SPT che ha il diminuiscono. Quindi vanno ordinati secondo la SPT che ha il minor Lminor Lmm, ma qui è unica: proprio A B C F , ma qui è unica: proprio A B C F

Sequenza ottima: A B C F E D Min Lm = 5 Min c => L66 c = 54 = 54

n = 6

1815 11

J(n):D

J(5):E

J(4):F

Otteniamo ora un altro punto di efficienza imponendo LOtteniamo ora un altro punto di efficienza imponendo L 66

°c : : 11 33 66 1818 1515 1111 c == 54 54

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

Lavori: A B C D E F

Tempi p : 1 2 3 3 4 5

Cons. d : 18 15 11 13 11 7

Lavori: A B C D E FL18 : 0 3 7 5 7 11L16 : -2 * 5 3 5 9L13 : -5 * 2 * 2 6L9 : -9 * -2 * * 2Col vincolo Col vincolo LL 4, si calcolano i ritardi con c=18 (attribuito a B), con c=16 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 (attribuito a D) , con c=13 (attribuito a E) , con c=9 (attribuito a F). I ritardi degli altri (A e C) saranno tutti altri (A e C) saranno tutti 4, perché i completamenti c diminuiscono. Quindi 4, perché i completamenti c diminuiscono. Quindi vanno ordinati secondo la SPT che ha il minor Lvanno ordinati secondo la SPT che ha il minor Lmm, ma qui è unica: A C , ma qui è unica: A C

Sequenza ottima: A C F E D B Min Lm = 3 Min c => L44 c = 61 = 61

n = 6

1816 13 9

J(n):B

J(5):D

J(4):E

J(3):F

Otteniamo ora un altro punto di efficienza imponendo LOtteniamo ora un altro punto di efficienza imponendo L 44

°c : : 11 1818 44 1616 1313 99 c == 61 61

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

Lavori: A B C D E F

Tempi p : 1 2 3 3 4 5

Cons. d : 18 15 11 13 11 7

Lavori: A B C D E FL18 : 0(EDD!) 3 7 5 7 11L17 : * 2(EDD!) 6 4 6 10L15 : * * 4 2(EDD!) 4 8L12 : * * 1 * 1(EDD!) 5L8 : * * -3 * * 1(NO EDD!)

L3 : * * -8 * * *

Sequenza ottima: C F E D B ANon è una sequenza EDD, ma ha la stessa Lm!

18171512 8 3

J(n):A

J(5):B

J(4):D

J(3):E

J(2):F

J(1):C

LLmm 2 2

°c : : 1818 1717 33 1515 1212 88

c(EDD => min c) :18 17 8 15 12 5EDD: F C E D B AMin c Lm= 2

c(EDD=>minc)==75

c == 73 73 <75!<75!

Min Lm = 2c = 73 = 73

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

Efficienza rispetto c ed Lm per l’esempio sviluppato

Esistono due SPT°, entrambe con Lm=11, mentre min c con Lm=2 non è una EDD

c = 51

3 Lm117

c= 50

non c’è efficienza*

c = 54

SPT°

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.

c = 61

c = 73

52

c = 75

non c’è sequenza*

EDD => min c