Principali Algoritmi di Scheduling 31/12/2018
1 / / F: Shortest Job First p[1] p[2] . . . p[n] (le misure sono in questo caso equivalenti) < < < C, W, L 31/12/2018
1 / / Lmax: Algoritmo di Jackson: Earliest Due Date First d[1] d[2] . . . d[n] < < < 31/12/2018
1 / / nT: Algoritmo di Moore-Hodgson: Ordino secondo le date di consegna. Se il primo lavoro che fa ritardo è il k-esimo, escludo il più lungo fra i primi k e ricomincio. 31/12/2018
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 31/12/2018
1 / / Tmax e : Algoritmo di Smith Tra quelli con : dh Σ pi si mette per ultimo quello con ph massimo. F > 31/12/2018
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. Trovare il pozzo k che minimizza f( rk, pk, Σ pi, dk ), Metterlo all’ultimo posto disponibile, Procedere analogamente sui lavori rimanenti. 31/12/2018
Lawler. Esempio con f(c,d) = c-d = L. 1. Σ pi = 12, pozzi J4 e J5: f(12,d4) = 1 < f(12,d5) = 5. 2. Σ pi = 10, pozzi J2 e J5: f(10,d5) = 3 < f(10,d2) = 4. (p1=2, d1=3) (p2=3,d2=6) J1 J1 J2 J2 (p4=2,d4=11) 3. Σ pi = 9, pozzi J2 e J3: f(9,d3) = 1 < f(9,d2) = 3. J4 J4 J3 J3 (p3=4,d3=8) J5 J5 4. Pozzo J2 (p5=1,d5=7) 5. Pozzo J1 J1 J2 J3 J5 J4 0 1 2 3 4 5 6 7 8 9 10 11 12 31/12/2018
Algoritmi per macchine parallele 31/12/2018
P / / F: Si assegna il prossimo lavoro più corto alla macchina che ha lavorato meno. P2/ / Cmax: è NP-completo 31/12/2018
Algoritmo di McNaughton distribuire i lavori in modo che risulti: Pm / preempt / Cmax: Algoritmo di McNaughton distribuire i lavori in modo che risulti: cmax = max( Σ pi / m, max pi ) (seguono esempi) 31/12/2018
Tre lavori unitari su due macchine: McNaughton (Esempio 1). Tre lavori unitari su due macchine: J1 J2 J3 macchina 1 macchina 2 J1 J3 J3 J2 0 0.5 1.0 1.5 (è ammesso iniziare un lavoro in una macchina e finirlo su un’altra) 31/12/2018
McNaughton (Esempio 2). Due macchine. Tre lavori con durate: 1, 1, 2.2. J1 J2 J3 macchina 1 macchina 2 J1 J2 J3 0 1 2 2.2 31/12/2018
Pm / intree, pi = 1 / Cmax: Algoritmo di Hu Etichettare i nodi con la distanza massima da un pozzo. Se il numero di sorgenti è minore di m, schedularle e rimuoverle, altrimenti schedulare le m sorgenti con etichette maggiori e rimuoverle. Se il grafo non è vuoto tornare al passo 2. 31/12/2018
Hu. Esempio con due macchine 2 1 2 2 3 1 2 31/12/2018
L’algoritmo di Hu può non funzionare se le precedenze non formano un intree 1 2 Cmax = 5 2 1 2 1 1 2 Cmax = 4 2 1 2 1 31/12/2018
Algoritmo di Muntz-Coffman P2 / preempt, prec / Cmax: Algoritmo di Muntz-Coffman Rendere i lavori unitari (usare preempt e prec) Etichettare i nodi con la distanza massima da un pozzo. - 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 (McNaughton) e rimuoverle. Se il grafo non è vuoto tornare al passo 3. 31/12/2018
3. Raggruppare e schedulare le sorgenti Muntz-Coffman. Esempio con due macchine 3. Raggruppare e schedulare le sorgenti 2. Etichettare i nodi con la massima distanza da un pozzo 1. Rendere i lavori unitari J5 J1 1 3 J4 J2 J7 2 J3 J6 m1 m2 J1 J2 J3 J4/1 J5 J4/2 J6 J7 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 31/12/2018
Muntz-Coffman: quando vi è un sola sorgente con etichetta massima è importante accoppiarla con una sola sorgente di etichetta massima minore (quando possibile). J5 J1 1 3 J4 J2 J7 3 2 1 J3 J6 3 1 m1 m2 J1 J2 J3 J4/1 J6 J5 J4/2 J7 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 31/12/2018
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). 31/12/2018
Regola di Johnson per F2 / / Cmax: Se 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 F2 / / Cmax: Se min( pi1, pj2 ) < min( pi2, pj1 ) allora il lavoro i precede il lavoro j nello schedule ottimo. 31/12/2018
F2 / / Cmax: Algoritmo di Johnson Trovare ph1 = mini( pi1 ) e pk2 = mini( pi2 ), Se ph1< pk2, 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. 31/12/2018
F2 / / Cmax: Algoritmo di Johnson: implementazione Sia U = {i: pi1 < pi2 } e V = {i: pi1 > pi2 }, Ordinare U in ordine non decrescente di pi1, Ordinare V in ordine non crescente di pi2, Una sequenza ottima è data da U seguito da V. 31/12/2018