Title: Principali Algoritmi di Scheduling
1Principali Algoritmi di Scheduling
21 / / F Shortest Job First p1 p2
. . . pn (le misure
sono in questo caso
equivalenti)
lt
lt
lt
C,
W,
L
31 / / Lmax Algoritmo di Jackson
Earliest Due Date First d1
d2 . . . dn
lt
lt
lt
4- 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.
51 / 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
61 / / Tmax e Algoritmo di Smith Tra
quelli con dh S pi si mette per ultimo
quello con ph massimo.
F
gt
7- 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,
S pi, dk ), - Metterlo allultimo posto disponibile,
- Procedere analogamente sui lavori rimanenti.
8Lawler. Esempio con f(c,d) c-d L.
1. S pi 12, pozzi J4 e J5 f(12,d4) 1 lt
f(12,d5) 5.
2. S pi 10, pozzi J2 e J5 f(10,d5) 3 lt
f(10,d2) 4.
(p12, d13)
(p23,d26)
J1
J2
J2
J1
(p42,d411)
3. S pi 9, pozzi J2 e J3 f(9,d3) 1 lt
f(9,d2) 3.
J4
J4
J3
J3
(p34,d38)
J5
J5
4. Pozzo J2
(p51,d57)
5. Pozzo J1
J4
J5
J3
J2
J1
0 1 2 3 4 5 6
7 8 9 10 11 12
9Algoritmi per macchine parallele
10P / / F Si assegna il prossimo lavoro più
corto alla macchina che ha lavorato meno.
P2/ / Cmax è NP-completo
11Pm / preempt / Cmax Algoritmo di
McNaughton distribuire i lavori in modo che
risulti cmax max( S pi / m, max pi
) (seguono esempi)
12McNaughton (Esempio 1). Tre lavori unitari su
due macchine
J1
J2
J3
J3
macchina 1 macchina 2
J1
J3
J2
0 0.5 1.0 1.5
(è ammesso iniziare un lavoro in una macchina e
finirlo su unaltra)
13McNaughton (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
14- 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.
15Hu. Esempio con due macchine
2
1
2
0
2
3
1
2
16Lalgoritmo di Hu può non funzionare se le
precedenze non formano un intree
1
2
1
0
2
1
2
1
2
1
0
2
1
2
17- 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.
18Muntz-Coffman. Esempio con due macchine
1. Rendere i lavori unitari
2. Etichettare i nodi con la massima distanza da
un pozzo
3. Raggruppare e schedulare le sorgenti
J5
J1
J4
J2
J7
0
2
J3
J6
m1 m2
J7
0 0.5 1 1.5 2 2.5
3 3.5 4 4.5 5
19Muntz-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
0
1
2
J3
J6
3
1
m1 m2
J4/2
J7
0 0.5 1 1.5 2 2.5
3 3.5 4 4.5 5
20Algoritmi per macchine in serie(flow shop)
Flow shop se un lavoro visita la macchina i e
poi la macchina j, allora iltj (ossia un lavoro
non può visitare la macchina i e poi unaltra
macchina con indice più piccolo).
21Proprietà 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 ) lt min( pi2, pj1 ) allora il lavoro i
precede il lavoro j nello schedule ottimo.
22- F2 / / Cmax Algoritmo di Johnson
- Trovare ph1 mini( pi1 ) e pk2 mini( pi2 ),
- Se ph1lt pk2, si pone il lavoro h nella
primaposizione libera da sinistra altrimenti,
si pone il lavoro k nella prima posizione libera
da destra - Se ci sono ancora lavori tornare al passo 1.
23- F2 / / Cmax Algoritmo di Johnson
- implementazione
- Sia U i pi1 lt pi2 e V i pi1 gt 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.