Principali Algoritmi di Scheduling 11222020 1 1 F

  • Slides: 23
Download presentation
Principali Algoritmi di Scheduling 11/22/2020 1

Principali Algoritmi di Scheduling 11/22/2020 1

1 / / F: Shortest Job First p[1] < p[2] < . . .

1 / / F: Shortest Job First p[1] < p[2] < . . . < p[n] (le misure C, W, L sono in questo caso equivalenti) 11/22/2020 2

1 / / Lmax: Algoritmo di Jackson: Earliest Due Date First d[1] < d[2]

1 / / Lmax: Algoritmo di Jackson: Earliest Due Date First d[1] < d[2] < 11/22/2020 . . . < d[n] 3

1 / / n T: Algoritmo di Moore-Hodgson: 1. Ordino secondo le date di

1 / / n T: Algoritmo di Moore-Hodgson: 1. Ordino secondo le date di consegna. 2. Se il primo lavoro che fa ritardo è il k-esimo, escludo il più lungo fra i primi k e ricomincio. 11/22/2020 4

1 / ri / Lmax: è equivalente allo zaino 1 / ri , pi

1 / ri / Lmax: è equivalente allo zaino 1 / ri , pi = 1 / Lmax: Jackson generalizzato (si schedula il primo che scade tra quelli arrivati) 1 / ri / Lmax: se le date di consegna sono tutte uguali si ordina in base a ri 11/22/2020 5

1 / / Tmax e F : Algoritmo di Smith Tra quelli con :

1 / / Tmax e F : Algoritmo di Smith Tra quelli con : dh > Σ pi si mette per ultimo quello con ph massimo. 11/22/2020 6

1 / prec / fmax : Algoritmo di Lawler Sia f(r, p, c, d)

1 / prec / fmax : Algoritmo di Lawler Sia f(r, p, c, d) non decrescente rispetto a c e poniamo fi = f(ri, pi, ci, di). La misura fmax può essere minimizzata con il seguente algoritmo. 1. Trovare il pozzo k che minimizza f( rk, pk, Σ pi, dk ), 2. Metterlo all’ultimo posto disponibile, 3. Procedere analogamente sui lavori rimanenti. 11/22/2020 7

Lawler. Esempio con f(c, d) = c-d = L. 1. Σ pi = 12,

Lawler. Esempio con f(c, d) = c-d = L. 1. Σ pi = 12, pozzi J 4 e J 5: f(12, d 4) = 1 < f(12, d 5) = 5. 2. Σ pi = 10, pozzi J 2 e J 5: f(10, d 5) = 3 < f(10, d 2) = 4. (p 1=2, d 1=3) (p 2=3, d 2=6) J 1 J 2 3. Σ pi = 9, pozzi J 2 e J 3: f(9, d 3) = 1 < f(9, d 2) = 3. (p 4=2, d 4=11) J 4 J 3 (p 3=4, d 3=8) 4. Pozzo J 2 J 5 (p 5=1, d 5=7) 5. Pozzo J 1 0 1 11/22/2020 J 2 2 3 J 3 4 5 6 7 J 5 8 9 J 4 10 11 8 12

Algoritmi per macchine parallele 11/22/2020 9

Algoritmi per macchine parallele 11/22/2020 9

P / / F: Si assegna il prossimo lavoro più corto alla macchina che

P / / F: Si assegna il prossimo lavoro più corto alla macchina che ha lavorato meno. P 2/ / Cmax: è NP-completo 11/22/2020 10

Pm / preempt / Cmax: Algoritmo di Mc. Naughton distribuire i lavori in modo

Pm / preempt / Cmax: Algoritmo di Mc. Naughton distribuire i lavori in modo che risulti: cmax = max( Σ pi / m, max pi ) (seguono esempi) 11/22/2020 11

Mc. Naughton (Esempio 1). Tre lavori unitari su due macchine: J 1 J 2

Mc. Naughton (Esempio 1). Tre lavori unitari su due macchine: J 1 J 2 J 3 J 1 macchina 2 J 3 0 J 3 J 2 0. 5 1. 0 1. 5 (è ammesso iniziare un lavoro in una macchina e finirlo su un’altra) 11/22/2020 12

Mc. Naughton (Esempio 2). Due macchine. Tre lavori con durate: 1, 1, 2. 2.

Mc. Naughton (Esempio 2). Due macchine. Tre lavori con durate: 1, 1, 2. 2. J 1 J 2 J 1 macchina 2 J 3 0 11/22/2020 J 3 1 2 2. 2 13

Pm / intree, pi = 1 / Cmax: Algoritmo di Hu 1. Etichettare i

Pm / intree, pi = 1 / Cmax: Algoritmo di Hu 1. Etichettare i nodi con la distanza massima da un pozzo. 2. Se il numero di sorgenti è minore di m, schedularle e rimuoverle, altrimenti schedulare le m sorgenti con etichette maggiori e rimuoverle. 3. Se il grafo non è vuoto tornare al passo 2. 11/22/2020 14

Hu. Esempio con due macchine 2 1 2 0 3 2 11/22/2020 15

Hu. Esempio con due macchine 2 1 2 0 3 2 11/22/2020 15

L’algoritmo di Hu può non funzionare se le precedenze non formano un intree 2

L’algoritmo di Hu può non funzionare se le precedenze non formano un intree 2 1 2 1 Cmax = 4 11/22/2020 Cmax = 5 0 2 1 2 1 0 16

P 2 / preempt, prec / Cmax: Algoritmo di Muntz-Coffman 1. Rendere i lavori

P 2 / preempt, prec / Cmax: Algoritmo di Muntz-Coffman 1. Rendere i lavori unitari (usare preempt e prec) 2. Etichettare i nodi con la distanza massima da un pozzo. 3. - Se vi è una sola sorgente schedularla e rimuoverla, - altrimenti: se vi è una sola sorgente con etichetta massima, accoppiarla ad una sorgente di etichetta massima tra quelle minori, schedulare la coppia e rimuoverla, - altrimenti: le sorgenti con etichetta massima sono almeno 2, schedulare tutte le sorgenti con etichetta massima (Mc. Naughton) e rimuoverle. 4. Se il grafo non è vuoto tornare al passo 3. 11/22/2020 17

Muntz-Coffman. Esempio con due macchine 2. Etichettare 3. Raggruppare i nodi 1. Rendere con

Muntz-Coffman. Esempio con due macchine 2. Etichettare 3. Raggruppare i nodi 1. Rendere con laeimassima schedulare lavori unitari distanza le sorgenti da un pozzo J 5 J 1 1 3 J 4 J 2 3 2 J 3 J 1 J 3 0 11/22/2020 0. 5 1 J 3 J 2 1 0 1 J 6 3 m 1 m 2 J 7 J 4/1 J 5 1. 5 2 J 4/2 J 6 2. 5 3 3. 5 J 7 4 4. 5 18 5

Muntz-Coffman: quando vi è un sola sorgente con etichetta massima è importante accoppiarla con

Muntz-Coffman: quando vi è un sola sorgente con etichetta massima è importante accoppiarla con una sola sorgente di etichetta massima minore (quando possibile). J 5 J 1 1 3 J 4 J 2 3 2 J 3 J 1 J 3 0 11/22/2020 0. 5 1 J 3 J 2 1 0 1 J 6 3 m 1 m 2 J 7 J 4/1 J 5 J 6 1. 5 2 2. 5 3 J 4/2 3. 5 4 J 7 4. 5 19 5

Algoritmi per macchine in serie (flow shop) Flow shop: se un lavoro visita la

Algoritmi per macchine in serie (flow shop) Flow shop: se un lavoro visita la macchina i e poi la macchina j, allora i<j (ossia un lavoro non può visitare la macchina i e poi un’altra macchina con indice più piccolo). 11/22/2020 20

Proprietà 1: Rispetto a una misura regolare, è sufficiente considerare schedule in cui la

Proprietà 1: Rispetto a una misura regolare, è sufficiente considerare schedule in cui la stessa sequenza di lavori si presenta nelle macchine 1 e 2. Proprietà 2: Rispetto alla misura Cmax, è sufficiente considerare schedule in cui la stessa sequenza di lavori si presenta nelle ultime due macchine. Regola di Johnson per F 2 / / Cmax: Se min( pi 1, pj 2 ) < min( pi 2, pj 1 ) allora il lavoro i precede il lavoro j nello schedule ottimo. 11/22/2020 21

F 2 / / Cmax: Algoritmo di Johnson • Trovare ph 1 = mini(

F 2 / / Cmax: Algoritmo di Johnson • Trovare ph 1 = mini( pi 1 ) e pk 2 = mini( pi 2 ), • Se ph 1< pk 2, si pone il lavoro h nella prima posizione libera da sinistra altrimenti, si pone il lavoro k nella prima posizione libera da destra • Se ci sono ancora lavori tornare al passo 1. 11/22/2020 22

F 2 / / Cmax: Algoritmo di Johnson: implementazione 1. Sia U = {i:

F 2 / / Cmax: Algoritmo di Johnson: implementazione 1. Sia U = {i: pi 1 < pi 2 } e V = {i: pi 1 > pi 2 }, 2. Ordinare U in ordine non decrescente di pi 1, Ordinare V in ordine non crescente di pi 2, 3. Una sequenza ottima è data da U seguito da V. 11/22/2020 23