...

Schedulazione: più macchine Schedulazione: più macchine

by user

on
Category: Documents
17

views

Report

Comments

Transcript

Schedulazione: più macchine Schedulazione: più macchine
Schedulazione: più macchine
Schedulazione: più macchine
casi:
– job composti di un unico task da schedulare su una tra più
macchine;
– open shop (tutti i job hanno task su tutte le macchine, ma non
le stesse precedenze);
– flow shop (tutti i job hanno task su tutte le macchine e le
stesse precedenze;
– job shop (caso generale, non tutti i job hanno task su tutte le
macchine, ma possono avere più task sulla stessa macchina).
Raffaele Pesenti
1
job composti di un unico task da schedulare su una tra più
macchine;
Raffaele Pesenti
Modello
Modello
Ogni job i degli n da eseguire si ritiene caratterizzato da:
• parametri
–
–
–
–
2
• variabili decisionali (caso senza preemption)
– xij: assegnamento job i macchina j
– Ci: tempo completamento job (completion time) di solito variabile
principale
– ti = Ci - pi : tempo inizio esecuzione (starting time)
– Wi = ti - ri : tempo attesa (waiting time)
– Fi = Ci - ri : tempo permanenza/attraversamento nel sistema (flow time)
– Li = Ci - di : tempo di ritardo (lateness)
– Ti = (Ci - di)+: ritardo (tardiness)
– Ui = 1{Ci > Di}: violazione della deadline (tardy)
– Ei = (di - Ci)+: anticipo (earliness)
pi: tempo di esecuzione (processing time)
ri: tempo di rilascio/lancio (release time)
di: data di consegna (due date)
Di: data di recesso (deadline)
Ogni macchina j delle m parallele si ritiene caratterizzato da:
• parametri
– oj: tempo di inizio disponibilità (opening time)
– clj: tempo di termine disponibilità (closing time)
– vij: velocità* esecuzione job i (speed)
* il tempo effettivo di esecuzione è pi/vij
Raffaele Pesenti
3
Raffaele Pesenti
4
P/ /ΣiCi
Terminologia
A seconda della velocità relativa le macchine si dicono
– P: parallele, vij= v, ∀i,j, dal punto di vista operativo le macchine sono
identiche,
– Q: uniformi, vij= vj, ∀i, la velocità relativa delle macchine non dipende
dal job eseguito,
– R: non correlate, vij≠ vik, ∀i,j,k la velocità relativa delle macchine
dipende dal job eseguito
• Problema: minimizzare il tempo medio di completamento su
macchine parallele di job con identica release time.
Uno scheduling è detto List Scheduling (LS) quando i job
vengono ordinati secondo un criterio qualunque e, non appena una
macchina è disponibile, viene eseguito quello il job con priorità più
alta tra quelli immediatamente disponibili.
Raffaele Pesenti
5
• Teorema: la politica Shortest Processing Time first (SPT)
determina la soluzione ottima. Si eseguono per prima i task con
tempo di esecuzione minore assegnandoli alla prima macchina
disponibile.
Raffaele Pesenti
R/ /ΣiCi
P/ .../ΣiCi
Definendo xijk la variabile che indica che il jmo job deve essere
assegnato alla ima macchina in kma posizione dalla fine,
formulando il problema come PLI si osserva che si ottiene un
problema di bipartite matching O(n3):
I problemi diventano NP-hard non appena viene introdotta
qualche complicazione, e.g.,
P 2//Σi wiCi , P 2/tree/ Σi Ci , P 2/ri / Σi Ci , P 2//Cmax.
min Σi Σj Σk k pj xijk /vij
(si moltiplica per k poichè il job influenzerà i k-1 job successivi)
Σi Σk xijk =1
∀j
(job assegnato)
Σj xijk ≤ 1
∀ i,k (non più di un job per posizione)
xijk ∈ {0, 1}
Raffaele Pesenti
6
7
Applicando la regola di Smith per P 2//Σi wiCi si ottiene una
(1+√2)/2 approssimazione.
Nel caso P//Σi wiCi si possono anche definire schemi
completamente polinomiali nel numero di job, ma esponenziali
nel numero di macchine
Raffaele Pesenti
8
Q/pj=1/Σjgj
Q/pj=1/gmax
Il problema Q/pj=1/Σjgj è risolvibile tramite bipartite matching:
• si definisce xijk la variabile binaria che indica che il jmo job deve
essere assegnato alla ima macchina nella kma slot temporale
• il costo è min Σi Σj Σk gj (k/vi) xijk
Q/pj=1/gmax per g generico è risolvibile generalizzando Lawler:
si considerano i completion time Cj possibili dal minimo al
massimo e per ognuno di essi si schedula il job con costo
minimo.
Q/pj=1/Σj wiCi, Q/pj=1/Σj Ti, Q/pj=1/Σj wiUi, sono risolti anche con
algoritmi ad hoc.
Q/ rj, pj=1/Σj Ci, è NP-hard
Raffaele Pesenti
9
Q/pj=1/Lmax, Q/ rj, pj=1/Lmax sono risolti anche con algoritmi ad
hoc.
Raffaele Pesenti
P/pmtn/Σi wiCi
P/ /Cmax
• Per il problema P/pmtn/Σi wiCi il teorema di McNaughton indica
che non c’è alcuno schedule con un numero finito di preemption
(si può generalizzare all’infinito) che garantisca una soluzione
migliore di quella senza preemption. I risultati sulla complessità
risultano inoltre identici al caso senza preemption.
• Il teorema non si applica nel caso di macchine uniformi
Q/pmtn/Σi wiCi, comunque Q/pmtn/ wCmax + Σi Ci è
polinomiale.
• Il problema Q/pmtn/Σi wiUi è NP-hard anche se wi=1.
Raffaele Pesenti
10
11
• Problema: minimizzare il tempo di completamento dell’ultimo
job su macchine parallele di job con identica release time.
• Teorema: il problema è NP-hard (riduzione da bin packing). La
politica Longest Processing Time first (LPT) è in generale una
buona euristica. Si eseguono per prima i task con tempo di
esecuzione maggiore assegnandoli alla prima macchina
disponibile.
Raffaele Pesenti
12
Esempio: P 2//Cmax vs P 2/ /ΣiCi
P/ /Cmax
Teorema: qualunque List Scheduling (LS) è 2-1/m approssimante.
Prova: sia k l’ultimo job ad essere schedulato l’approssimazione si
ottiene osservando che
Cmax(LS) ≤ Σj≠k pj /m + pk
Tale valore è stretto, m(m-1) job con pj=1 e pn=m.
In probabilità se n cresce più velocemente di m, il LS è ottimo.
Se si si sceglie LPT si ottiene una 4/3-1/3m approssimazione.
Da studi probabilistici LPT sembra essere migliore di un
arbitrario LS, inoltre per n che tende all’infinito l’errore rispetto
allo scheduling ottimo tende a zero quasi sicuramente con
velocità n-c per qualche c costante.
Raffaele Pesenti
13
Job
j1
j2
j3
j4
j5
j6
j7
j8
pi
3
4
2
4
4
2
13
2
j1
j3
0
0
Raffaele Pesenti
j6
LPT non ottimo
j4
j5
j1
j6
j8
schedule LPT , Cmax= 17 ottimo, ΣiCi/n = 12.625
j3
j6
j8
j1
j2
j5
j4
j7
schedule SPT, Cmax= 22, ΣiCi/n = 7.5 ottimo
14
P/ /Cmax
j5
j4
j6
schedule ottimo
j1
j3
j2
j3
Raffaele Pesenti
Esempio
Problema P 3/ / Cmax
Job
pi
j1
6
j2
4
7
j3
j4
3
5
j5
j6
9
2
j7
j8
3
j7
• Migliori approssimazioni in tempi O(nlogn+knlogm) possono
ottenersi con il MultiFit (MF), dove si cerca di trovare,
attraverso ricerca binaria e k tentativi di packing, la capacità
minima che m ‘bin’ possono avere per contenere i job che sono
assegnati al primo bin in cui riescono ad essere inseriti.
• Una variazione del MF detto dual approximation algorithm
produce uno schema di approssimazione polinomiale. Fissato il
numero di macchine esistono schemi polinomiali che usano
anche la programmazione dinamica.
• Siccome il problema è NP-hard in senso forte non dovrebbe
esistere uno schema di approssimazione completamente
polinomiale.
j7
j8
j2
13
j5
j2
j8
j7
j4
14
15
Raffaele Pesenti
16
P/ri /Lmax
Q/ /Cmax
• Il problema P/ri/Lmax è NP-hard
– LS è 2 approssimante;
– EDD induce un errore massimo t.c.:
Lmax(EDD) - L*max ≤ (2m - 1)maxjpj/ m;
Per il problema Q//Cmax si estendono i risultati del caso P//Cmax,
cambiano di poco in peggio i valori delle approssimazioni.
Negli schedule può essere conveniente inserire degli idle time,
invece di assegnare alla prima macchina libera si deve assegnare
alla prima macchina che termina i job.
• Il problema P/ri,pj=p/Lmax è polinomiale.
Raffaele Pesenti
17
Raffaele Pesenti
R/ /Cmax
P/pmtn /Cmax
Nel caso di R//Cmax i problemi sono più difficili che nel caso
uniforme.
Non dovrebbero esistere polinomial scheme c-approssimante con
c <3/2. Anche se , fissato il numero delle macchine esistono fully
polinomial scheme.
Una variante del LS è 1+2.5√m +1/(2√m) approssimante. Mentre
un algoritmo di Potts basato sulla programmazione lineare è 2approssimante.
Raffaele Pesenti
18
19
Il problema P/pmtn /Cmax è risolto dall’algoritmo wrap-around
di McNaughton, che parte dalla osservazione che
Cmax=max{maxjpj,(Σjpj)/m}
(estendibile opportunamente al caso macchine uniformi), si
riempiono quindi le macchine successivamente fino a soddisfare
tale valore, spezzando tra una macchina e la successiva i job che
eventualmente lo viola.
In questo caso vi sono al massimo (m-1) preemption.
È NP-hard determinare uno scheduling ottimo che minimizzi il
numero di preemption.
Raffaele Pesenti
20
Esempio
Problema P 3/ pmtn / Cmax (McNaughton)
Job
pi (mac.)
6
(A)
j1
j2
3
(A)
j1
7 (B,A)
j3
j4
3
(B)
j3(parte 1)
j5
8
(B,C)
j5(parte 1)
9
(C)
j6
j7
1
(C)
0
2
(C)
j8
Esempio
j2
j4
j3(parte 2)
j5(parte 2)
j6
j8
Raffaele Pesenti
Q/pmtn /Cmax
j7
13
21
j1
j4
Raffaele Pesenti
R/pmtn /Cmax
J5(parte 2)
j8
j7
18
22
P/pmtn,ri ,Di /Cmax
• Il problema Q/pmtn/Cmax può essere risolto in O(mn2) con una
variazione di LPT che assegna il job con il massimo largest
remaining processing time al processore più veloce disponibile.
Esistono anche algoritmi più efficienti che supponendo le
macchine e i job già ordinati sono O(n).
• Nel caso R/pmtn/Cmax il valore di Cmax si può trovare attraverso
programmazione lineare, la soluzione può essere costruita in un
tempo polinomiale utilizzando un algoritmo per Q/pmtn/Cmax .
Raffaele Pesenti
Problema P 3/ pmtn / Cmax (McNaughton)
Job pi (mac.)
j1 18 (A)
j2
3 (B)
7 (B)
j3
j2
j3
j4
3 (B)
j5
8 (B,C)
j5(parte 1)
j6
9 (C)
j6
0
j7
1 (C)
2 (C)
j8
23
• per il problema P/pmtn,ri ,Di /Cmax l’esistenza di uno scheduling
ammissibile può essere verificato con modelli di network flow
O(n3). I problemi si risolvono quindi polinomialmente facendo
bisezione su Cmax;
• i risultati si generalizzano a Lmax;
• generalizzazioni polinomiali si hanno anche per R/pmtn,ri /Cmax.
Raffaele Pesenti
24
P/prec,pi=1/Cmax
P 2/prec,pi=1/Cmax
• Il problema P/prec,pi=1/Cmax è NP-hard, e non può essere
trovata un’approssimazione polinomiale con c < 4/3;
• P 2/prec,pi=1/Cmax è polinomiale, non è noto per un altro
numero di macchine fissato;
• P/tree,pi=1/Cmax è polinomiale si applica l’algoritmo di Hu del
Critical Path (CP). In ogni slot temporale deve essere
schedulato il job da cui dipende la più lunga catena di job non
eseguiti;
• P/intree,pi=1/Lmax è polinomiale si applica l’algoritmo CP;
• P/outtree,pi=1/Lmax è NP-hard;
• altri casi P|prec,p=1|Cmax polinomiali si possono avere per grafi
di precedenza particolari.
• Il problema P 2/prec,pi=1/Cmax è polinomiale con l’algoritmo di
Coffman e Graham (CG) O(n3)
• CG funziona assegnando il label k+1, essendo già assegnate k
etichette, a quel job che ha gli immediati successori già
etichettati e tali che le etichette dei sui immediati successori
siano lessicograficamente minime.
• Gabow definisce un algoritmo O(n2) che usa le operazioni
cosiddette di union-find.
Raffaele Pesenti
Raffaele Pesenti
25
P/prec, pi=1/ΣiCi
P/prec/Cmax
• Il problema P/prec, pi=1/ΣiCi è NP-hard,
• P/outtree, pi=1/ΣiCi è polinomiale con CP;
• in generale, anche in questi casi non si possono dare
approssimazioni con c<4/3:
– CP è 4/3 approssimante per m=2, e 2-1/(m-1) per m>2,
– CG è 2-1/m approssimante,
– MS che assegna il job con maggior numero di successori è
4/3 approssimante per m=2.
Raffaele Pesenti
26
Il problema P/prec/Cmax è 2-1/m approssimato da LS e da CP.
Poco meglio si riesce a fare con algoritmi ad hoc su grafi di
precedenza particolari.
27
Raffaele Pesenti
28
P/prec/Cmax e LS paradossi
Esempio: P 2/prec/Cmax
Attenzione: il LS, che di solito esprime una priorità tra i job, può
avere comportamenti a paradossali.
j1: p1=3
Dato un problema P/prec/Cmax (ma anche in altre situazioni e per
altre misure), il makespan può aumentare anche se:
– si aumenta il numero delle macchine
– si diminuisce il tempo di esecuzione delle operazioni
– si eliminano alcune precedenze
– si cambia la priorità tra i task.
Raffaele Pesenti
j7: p7=13
j8: p8=2
29
j3
j4
j5
j2
j6
j2
j8
j3
j2
j4
j5
j7
j5
j2
j7
j3
cambio di LS, nuovo LS = {j1, j2, j3, j4, j5, j6, j8, j7}, Cmax= 23
Raffaele Pesenti
j6 j8
tempi di esecuzione diminuiti di un unità, Cmax= 18
j6
j5
j6: p6=2
30
j1
j4
j5: p5=4
Raffaele Pesenti
j1
j8
j7
j3
j4: p4=4
Esempio: P 2/prec/Cmax
schedule ottimo Cmax= 17
j1
j3: p3=2
LS = {j1, j2, j3, j4, j5, j6, j7, j8}
Esempio: P 2/prec/Cmax
j1
j2: p2=4
j6
j4
j7
j8
una macchina in più, Cmax= 19
31
Raffaele Pesenti
32
Esempio: P 2/prec/Cmax
j1: p1=3
j2: p2=4
j7:
p7=13
j3: p1=2
j8: p8=2
j1
j2
j3
j4: p4=4
j5
j4
P/pmtn, prec/Cmax
j5: p5=4
j6: p6=2
j7
j6
• Il problema P/pmtn, prec/Cmax è NP-hard,
• P 2/pmtn, prec/Cmax e P/pmtn, tree/Cmax sono polinomiali
tramite l’algoritmo di Muntz e Coffman.
• In generale tale algoritmo garantisce una 2-1/m
approssimazione, e nel caso Q/pmtn, prec/Cmax una √(3m/2)approssimazione.
j8
meno precedenze, Cmax= 22
Raffaele Pesenti
33
Raffaele Pesenti
Stochastic machine scheduling
Modelli multi-operation
• P/pi~exp(λi)/ECmax è minimizzato da Longest Expected
Processing Time (LEPT);
• Q/pmtn,pi~exp(λi)/ECmax è minimizzato da preempted LEPT;
• P/pi~exp(λi)/EΣiCi è minimizzato da SEPT;
Job composti da più task da schedulare su più macchine;
• Q/pmtn,pi~exp(λi)/EΣiCi è minimizzato da preempted SEPT.
Solo pochissimi casi di modelli multi-operation sono
polinomiali, i più noti sono:
Nel caso di scheduling stocastico algoritmi che sono solo
euristici nel caso deterministico diventano ottimi quando la
probabilità dei casi peggiori tende a zero.
In generale le politiche ottime sono dinamiche e si basano sulla
storia realizzata fino all’istante corrente.
Raffaele Pesenti
34
F2//Cmax, O2//Cmax, O/pmtn/Cmax.
35
Raffaele Pesenti
36
Open shop
Open shop
• O/pmtn/Lmax è polinomiale, (Lenstra et al. in O(n)), questo
implica...
• O/pmtn/Cmax è polinomiale;
Gonzalez e Sahni provano che Cmax coincide con il bound
max{maxΣipij,maxΣjpij};
• O/pmtn, ri /Lmax, l’ammissibilità può essere verificata tramite
programmazione lineare e quindi il valore ottimo può essere
cercato per bisezione;
• O2/pmtn/ΣiCi è aperto tutti gli altri problemi sono NP-hard.
• O2//Cmax è polinomiale O(n),
Gonzalez e Sahni costruiscono uno schedule che coincide con il
lower bound max{Σjp1j,Σjp2j,maxj(p1j+p2j)}, imponendo che non
ci siano idle time dall’inizio della prima operazione al termine
dell’ultima su ognuna delle due macchine;
• O2/rj/Cmax, e O2//Lmax sono NP-hard in senso forte;
• O3//Cmax NP-hard in senso normale.
Raffaele Pesenti
Raffaele Pesenti
37
38
Esempio
Flow shop
• F2//Cmax è polinomiale.
L’algoritmo di Johnson lo risolve in O(nlogn) sequenziando
prima i job con p1j≤ p2j per p1j crescenti quindi i rimanenti job
per p2j decrescenti. Si ottiene un permutation schedule (ogni
macchina processa i job nello stesso ordine), basta un
interchanging argument per provare che almeno un permutation
schedule ottimo esiste;
• F2//Lmax , F2/ri/Cmax,sono NP-hard nel senso forte;
• per F2/ri/Cmax un algoritmo approssimato che applica una
variante la regola di Johnson è 5/3-approssimato.
Raffaele Pesenti
39
Problema F 2/ / Cmax (Johnson)
T5A
T1A
T5B
T4A
T1B
Job piA
j1
4
4
j2
j3 10
6
j4
j5
2
T3A
T4B
piB
5
2
4
12
3
T2A
T3B
T2B
0
30
Raffaele Pesenti
40
Flow shop
Flow shop
• F3//Cmax è NP-hard in senso forte,
diventa polinomiale sotto varie ipotesi di rapporti particolari tra
i processing times, oppure se la macchina intermedia è non
bottleneck, cioè può processare più job contemporaneamente.
• Fm//Cmax, per m≥ 4, viene affrontato con qualche successo
anche dalla simulated annealing (dove si intendono adiacenti
permutazioni che coincidono tranne per la posizione di un job),
euristiche basate su Johnson sono ⎣m/2⎦-approsimanti.
Raffaele Pesenti
Fm//Cmax, per m≥ 4 , non necessariamente ammette soluzioni ottime
che siano permutation schedule anche se esiste una soluzione ottima
che ha una stessa sequenziazione su M1 e M2 e una su Mm-1 e Mm.
Se ci si limita lo stesso a cercare solo permutation schedule i migliori
bound si ottengono considerando tutte le macchine u, v (u≤v), tranne
due, di infinita capacità (possono processare più job assieme).
Cmax={minjΣi=1,u-1pij+contributo_macchine_da_u_a_v+minjΣi=v+1,mpij},
– se u=v, contributo_macchine_da_u_a_v = Σj puj,
– se v=u+1 si risolve con Johnson,
– altrimenti si considerano le macchine intermedie tra u e v come un’unica
macchina non bottleneck.
41
Raffaele Pesenti
Flow shop no-wait
Job shop
• Ogni istanza di J//Cmax può venire rappresentata attraverso un
grafo disgiuntivo*, dove ad ogni insieme di operazioni sulla
stessa macchina corrisponde una clique.
Ogni soluzione ammissibile corrisponde a rendere il grafo
orientato e senza circuiti scegliendo un orientamento per gli
archi disgiuntivi.
Un flow-shop è no-wait se ogni job, una volta iniziato, deve
essere processato senza soluzione di continuità.
• F/no-wait/Cmax può essere formulato come un TSP
n+1 città 0,1,...,n con distanze
cjk=max1≤i≤m{Σh=1,iphj- Σh=1,i-1phk} con pi0=0.
• F2/no-wait/Cmax è un TSP particolare risolvibile in O(n2),
• tutte le altre variazioni sono NP-hard (anche F2/no-wait/ΣiCi,
F2/no-wait/Lmax O2/no-wait/Cmax J2/no-wait/Cmax etc..).
Una gestione no wait può allungare considerevolmente lo
scheduling fino a, ma escluso, m volte.
Raffaele Pesenti
42
* Un grafo disgiuntivo G=(N,C∪ D) ha un nodo in N per ogni task, un arco
orientato (congiuntivo) in C per ogni relazione di precedenza tra due task, un
arco non orientato (disgiuntivo) in D per ogni coppia di task in competizione
per la stessa macchina.
43
Raffaele Pesenti
44
Job shop
Job shop
• J2/m≤ 2/Cmax può essere risolto con una modifica dell’algoritmo
di Johnson. Su M1 si sequenziano i job secondo la regola
(J12,J1,J21), dove il pedice degli insiemi indicano l’ordine delle
macchine su cui devono essere eseguiti, J12, J21 ordinati secondo
Johnson, su M2 si sequenzia secondo (J21,J2,J12);
• J2/pij=1/Cmax (Lmax) è polinomiale;
• J//Cmax polinomiale se si considerano solo due job con
precedenze complete. Ci si riconduce alla ricerca di un percorso
minimo;
• J2/pmtn/ΣiCi e gli altri job shop sono in generale NP-hard in
senso forte.
Raffaele Pesenti
45
Resource constrained
project scheduling
Sliding/shifting bottleneck machine e simulated annealing sono
le euristiche più usate (scheduling adiacenti sono quelli che
scambiano due job sul maximum weight path)
Raffaele Pesenti
46
Problemi reali
• P2/pj=1/Cmax, con risorse con disponibilità costante Rh, t.c. ogni
job ne abbisogni di rjh è polinomiale.
Il problema si trasforma in maximum cardinality matching. Si
costruisce un grafo che ha per vertici i job e presenta archi che
uniscono le coppie di job che possono essere eseguite
contemporaneamente.
• In generale i problemi sono NP-hard, anche perché la
disponibilità e la richiesta di risorse possono variare nel tempo o
per l’uso.
Raffaele Pesenti
Il problema del job-shop è in genere risolto tramite B&B
facendo il branching sulla direzione degli archi non orientati del
grafo disgiuntivo.
I bound che vengono calcolati generalmente con rilassamento
surrogato (sulla capacità delle macchine o i vincoli di
precedenza).
47
La realtà è spesso molto più complessa di quella ipotizzata nei
semplici modelli considerati. Si incontrano quasi sempre dei job
shop, in cui i task di uno stesso job posson dovere essere
eseguiti in momenti diversi sulla stessa macchina, in cui sono
inoltre spesso presenti:
– stocasticità;
– dinamicità;
– disturbi;
– congestione;
– ambiguità negli obiettivi e nei vincoli;
– ...
Raffaele Pesenti
48
Obiettivi
Euristiche
Nella maggiore parte dei casi reali è difficile definire
esattamente in modo formale l’obiettivo perseguito.
I problemi reali sono spesso NP-hard e vengono risolti tramite
euristiche.
In genere si vuole comunque ridurre
– flow time medio
– wip medio*
– tardiness media e massima (in presenza di due date)
I modelli semplificati visti in precedenza servono comunque a:
– suggerire dei modelli di comportamento su cui basare le
euristiche;
– valutare le prestazioni delle euristiche in situazioni in cui è
possibile calcolare i valori ottimi.
* il metodo dei kanban pone dei limiti per il wip massimo in presenza di produzioni
molto regolari
Raffaele Pesenti
49
Raffaele Pesenti
Approcci generali
50
Approcci generali
In problemi di scheduling quanto affermato si traduce nel
cercare di schedulare al meglio le macchine collo di bottiglia (le
macchine con throughput minimo, lungo le loro linee di
produzione, che determinano la prestazione della linea) e le
attività critiche (task il cui ritardo nell’esecuzione si traduce in
un ritardo complessivo nel completamento del job di
appartenenza).
Regola di buon senso:
quando si affronta un problema complesso conviene cercare di
decomporlo e concentrare l’attenzione solo su quegli aspetti in
cui vi sia probabilità di maggiore miglioramento delle
prestazioni per unità di “sforzo” impiegato.
Purtroppo sia le macchine collo di bottiglia che le attività
critiche sono spesso dipendenti dai job e tempo varianti.
Raffaele Pesenti
51
Raffaele Pesenti
52
Approcci generali
Approcci generali
Per i colli di bottiglia si propongono approcci generali in cui si
individua un collo di bottiglia alla volta e si cerca di schedularlo
al meglio (e.g., sliding/shifting bottleneck, OPT), oppure in cui
si cerca di schedulare le altre macchine in modo che le le
macchine collo di bottiglia non rimangano mai idle (starvation
avoidance).
Le euristiche orientate alla riduzione del flow time medio
tendono ad eseguire i task più veloci e a fare uscire dal sistema i
job che siano più avanti nelle lavorazioni.
Per l’identificazione delle attività critiche si utilizzano
metodologie PERT-CPM.
In seguito vengono presentate le euristiche generali che hanno di
solito le migliori prestazioni. Euristiche più complesse in genere
non presentano risultati apprezzabilmente diversi.
Raffaele Pesenti
53
Notazione
Raffaele Pesenti
54
Euristiche relative al flow time
•
•
•
•
•
•
Z: indice minimizzato,
t: tempo corrente,
di: due date job i,
pij: tempo (atteso) di esecuzione del task del job i sulla macchina j,
ni: numero di task ancora da eseguire per il job i al tempo t,
wij : tempo di attesa che un task del job i si supponga (date le
informazioni all’istante t) debba spendere prima di essere eseguito
sulla macchina j,
• sli : slack sli = di - ( t + Σj∈S(i) pij )
• S(i): macchine su cui devono essere ancora eseguiti i task del job i
al tempo t.
Raffaele Pesenti
Le euristiche orientate al rispetto delle due date tendono ad
eseguire i task in un qualche senso più urgenti.
55
• SI: Shortest Imminent Operation, Z = pij
• SR: Shortest Remaining Processing Time, il primo task del job
per cui è minimo Z = Σj∈S(i) pij
Possibili correzioni
• SI troncata FCFS: quando l’attesa di un task eccede una data
soglia, viene posto su una coda prioritaria gestita FCFS.
• SI*: i task dei job con sli - Σj∈S(i) wij <0 vengono posti su una
coda prioritaria, anche essa gestita SI;
• SPT-T: il primo task del job per cui è minimo
Z = min{pij+ r, sli /ni}, dove r parametro fissato.
Raffaele Pesenti
56
Euristiche relative alla tardiness
•
•
•
•
EDD: Earliest Due Date, Z = di,
Slack: slack minimo , Z = sli,
Slack/OPN:slack per operation, Z = sli /ni,
Critical Ratio: Z = Σj∈S(i) pij /(di - t)
Appendice Matematica
Euristiche ed Approssimazioni
Per due date stringenti (meno di circa sei volte il tempo di esecuzione
complessivo dei job) o sistemi congestionati >90% della capacità disponibile
le politiche SI o SI corrette hanno buone prestazioni, se non migliori delle
regole specifiche, anche per la tardiness (questo poiché i job tendono
comunque ad essere in ritardo).
17/12/2004 11.25
Raffaele Pesenti
Raffaele Pesenti
57
Soluzioni approssimate e algoritmi
euristici
Errori
Quando è possibile (non sempre lo è) è opportuno dare una
stima per eccesso dell’errore compiuto accettando la soluzione
di un algoritmo euristico rispetto a quella ottima
Trovare la soluzione ottima di problemi di ottimizzazione NPhard può risultare in pratica troppo oneroso, inoltre dato che i
parametri del modello considerato possono essere affetti da
errori tale sforzo potrebbe essere anche poco rilevante.
Nei casi pratici possono essere anche accettate delle soluzioni
“buone” che, sperabilmente, non siano lontane dall’ottimo.
Algoritmo euristico:
algoritmo che risolve un problema di ottimizzazione, utilizzando
in genere regole di buon senso, e fornisce una soluzione
ammissibile ma non necessariamente ottima.
Raffaele Pesenti
59
Errori:
dato un problema (F,c; max), detti zopt= {max c(x) : x∈F} il
valore della soluzione ottima e zA il valore fornito dall’algoritmo
euristico A si definiscono
– errore assoluto: EA= zopt - zA
– errore relativo: RA= (zopt - zA)/zopt
Raffaele Pesenti
60
Algoritmi approssimati
Algoritmi approssimati
Algoritmo ε-approssimato:
algoritmo che garantisce un errore relativo non maggiore di ε > 0:
Ra ≤ ε
Schema di approssimazione:
algoritmo che garantisce Ra ≤ ε per qualunque ε > 0
– schema di approssimazione polinomiale: schema di
approssimazione con complessità polinomiale nelle dimensioni
dell’istanza
– schema di approssimazione pienamente polinomiale: schema di
approssimazione con complessità polinomiale nelle dimensioni
dell’istanza e in 1/ε
Raffaele Pesenti
61
Commenti:
• Quando esistono conviene applicare algoritmi approssimati, per
i quali è calcolabile, per definizione, un limite massimo
dell’errore compiuto, rispetto a degli algoritmi euristici basati
sul buonsenso, ma per cui non si può fornire un limite massimo
dell’errore.
• Per alcuni problemi non sono noti algoritmi approssimati, per
altri il migliore algoritmo approssimato ha valori di ε grandi
(maggiori di 0.5). Inoltre algoritmi euristici con accettabili
prestazioni medie vengono a volte preferiti ad algoritmi
approssimati (almeno in prima battuta) perché sono più facili da
implementare e generalmente più veloci.
Raffaele Pesenti
Tipi di euristiche
Tipi di euristiche
Commenti:
in genere le soluzioni fornite dalle euristiche costruttive e
quelle utilizzate dalle euristiche di miglioramento sono
soluzioni ammissibili. Per certi problemi risulta anche
estremamente complesso determinare una prima soluzione
ammissibile, allora può convenire rilassare lagrangianamente
alcuni vincoli, i.e., determinare una prima soluzione che
soddisfi almeno parte dei vincoli e penalizzare il fatto che altri
vincoli non siano rispettati. Quindi iterativamente a partire
dalla soluzione (non ammissibile ottenuta) cercano di
determinarne una che rispetti maggiormente i vincoli
nell’intorno di quella data
Euristiche costruttive
costruiscono una soluzione del problema
Euristiche di miglioramento
iterativamente a partire da una soluzione del problema
cercano di determinarne una migliore nell’intorno di quella
data
Raffaele Pesenti
62
63
Raffaele Pesenti
64
Metaeuristiche
Metaeuristica greedy
Affinché una euristica sia efficace deve sfruttare le
caratteristiche strutturali del problema che deve risolvere, per
questo motivo non esiste una euristica generale.
Esistono però degli approcci generali a cui si può fare
riferimento per sviluppare euristiche specifiche. Tali approcci
vengono detti metaeuristiche.
Esempi:
metaeuristica costruttiva:
– greedy
metaeuristica migliorativa:
– ricerca locale
• simulated annealing
• tabu search
Raffaele Pesenti
Metaeuristica greedy
1. inizializzazione:
Si ordinano gli elementi e1, e2,..., em che concorrono a comporre una
soluzione in modo non decrescente(c1≤c2≤... ≤cm) rispetto ai loro costi
(oppure in modo non crescente rispetto ai profitti o comunque in
modo monotono rispetto ad una funzione euristica di valutazione).
Si pone F0=∅, //insieme degli elementi che compongono la soluzione
65
Raffaele Pesenti
Metaeuristica greedy
Euristiche greedy
2. iterazione:
while non si è costruita completamente una soluzione {
si sceglie ek,
if Fk-1∪{ek} non viola i vincoli dati Fk=Fk-1∪{ek},
else Fk=Fk-1
}
return /Fk è l’insieme degli elementi che costituiscono la soluzione
Raffaele Pesenti
66
67
Esempi:
• problema dello zaino KP(U,s,c,B, max): si ordinano gli oggetti
per densità decrescente c(u)/s(u) e a partire dal primo si prova
ad inserire gli oggetti nello zaino lasciando in esso quelli che vi
possono essere contenuti, e.g.,
max zRL= 12x1 +36 x2 +42 x3 +16 x4 + 25x5
3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23
xi ∈{0,1}
(oggetti già ordinati) soluzione greedy x= [1,1,0,1,0]
Raffaele Pesenti
68
Euristiche greedy
Euristiche greedy
Esempi (cont.):
• problema del commesso viaggiatore TSP(G(V,E), c,s,min):
euristica detta del nodo più prossimo (nearest neighbor), si
parte da un nodo qualunque ed ad ogni passo si va al nodo più
vicino non ancora visitato.
Esempio (supponendo distanze euclidee):
Esempi (cont.):
Problema di scheduling 1/ri/ΣCi(U,p,r, min): si eseguono
immediatamente le operazioni disponibili, se più operazioni
sono disponibili si sceglie secondo shortest processing time
first.
Esempio con tre operazioni:
– J1: ri = 0, pi=10
– J2: r2 = 1, p2=1
ΣCi =10+11+13=34
– J3: r3 = 4, pi=2
J1
J2 J3
Commenti:
non funziona molto bene:
i primi archi sono brevi, gli ultimi molto lunghi
nodo iniziale
però gli archi molto lunghi sono pochi:
può essere una buona base da migliorare
semplice da implementare
soluzioni mediamente del 25% superiori al minimo effettivo
troppo lento per più di 10.000 nodi
Raffaele Pesenti
0
69
Metaeuristica RicercaLocale
1. inizializzazione:
si genera una soluzione iniziale ammissibile x0
2. iterazione:
do {
//dove f(xk) è una funzione che,
//data una soluzione ammissibile,
//ne genera una nuova ammissibile non peggiore
} while xk+1 ≠ xk
//esce dal loop quando la condizione è falsa
return
//xk+1 è un ottimo locale
Raffaele Pesenti
Raffaele Pesenti
70
Metauristica ricerca locale
Metaeuristica ricerca locale
xk+1 = f(xk)
10 11 13
71
Commenti:
• in generale si determina solo un ottimo locale, se, come spesso avviene
nei problemi combinatori, vi sono molti ottimi locali, applicando
semplicemente una ricerca locale è molto probabile che venga
determinato un ottimo locale lontano dall’ottimo globale
• la funzione f(xk) deve determinare la soluzione successiva rapidamente,
quindi in genere si limita a valutare le soluzioni ammissibili
appartenenti all’intorno della soluzione corrente xk
• un intorno di x è una funzione che dato x restituisce un insieme di
soluzioni ammissibili I(x) t.c.
– x ∈ I(x) i.e., x appartiene al suo intorno
– ∀x, y ∈ S, ∃{x0, ..., xr} t.c. x= x0, y= xr, e xs∈ I(xs-1) s=1,...,r
i.e., è possibile andare da x a y passando per punti che appartengono
uno all’intorno dell’altro.
Raffaele Pesenti
72
Ricerca locale
2-opt
Esempi:
problema del commesso viaggiatore TSP(G(V,E), c,s,min):
euristica detta 2–opt. Concetto base: ad ogni passo si eliminano
due rami, si ricongiungono i due semicircuiti.
Circuito iniziale
archi da rimuovere
Semicircuiti
Algoritmo 2-opt:
si parte da un circuito hamiltoniano,
si eseguono tutti gli scambi 2–opt
(fra tutte le coppie di rami del circuito)
che riducono la lunghezza.
Efficacia: 8% più del minimo in media
Raffaele Pesenti
Circuito passo 1
nuovi archi
notare l’inversione del verso di
percorrenza di un semicircuito
73
Raffaele Pesenti
archi da rimuovere
74
archi da rimuovere
Circuito passo 1
Circuito passo 2
nuovi archi
Circuito passo 3
nuovi archi
Circuito passo 2
ecc..
Raffaele Pesenti
75
Raffaele Pesenti
76
Ricerca locale
Ricerca locale
Esempi (cont.):
problema del commesso viaggiatore TSP(G(V,E), c,s,min):
euristica detta 3–opt. Concetto base: ad ogni passo si eliminano
tre rami, si ricongiungono i tre semicircuiti.Efficacia: 4% più del
archi da rimuovere
minimo in media.
Si generalizza a k-opt.
Esempi (cont.):
Problema di scheduling 1/ri/ΣCi(U,p,r, min): ad ogni passo si
scambiano di posto due operazioni (anche non necessariamente
adiacenti)
Scheduling iniziale
Circuito iniziale
J1
ΣCi =10+11+13=34
J2 J3
0
10 11 13
Scheduling dopo scambio J1 con J2
J2
Nuovo circuito
Raffaele Pesenti
0 1 2
77
J3
ΣCi =2+12+14=28
12 14
Raffaele Pesenti
78
Simulated annealing
Altre strategie di esplorazione
dell’intorno
• Utilizzando una funzione f(xk) che determina una soluzione
successiva non peggiore (o addirittura che determina la
soluzione successiva ottima tra quelle appartenenti all’intorno)
in generale si rimane intrappolati in un ottimo locale.
• Può allora convenire usare una funzione g(xk) che a volte
determina una soluzione successiva peggiore della precedente
nella speranza di ‘saltare’ fuori dall’ottimo locale. Su questa
filosofia si basano, ad esempio, due metaeuristiche di ricerca
locale:
– simulated annealing
– tabu search
Raffaele Pesenti
J1
79
La simulated annealing è un algoritmo per la soluzione di
problemi combinatori NP-hard basato sulla metafora della
tempratura dei metalli: si raggiunge uno stato di minima energia
non troppo velocemente in modo da evitare che si raggiunga uno
stato finale.
La simulated annealing è una metaeuristica di ricerca locale che
permette passi in cui avvengono dei peggioramenti con probabilità
che decrsce nel tempo.
Il tasso di decremento è definito dal cooling schedule; molto
spesso consiste semplicemente nel fissare un parametro
caratterizzante in un decadimento esponenziale.
Se valgono alcune (deboli) ipotesi sul cooling schedule si può
dimostrare che l’algoritmo converge all’ottimo in probabilità (ma
in
tempi esponenziali).
Raffaele Pesenti
80
Simulated annealing
Simulated annealing
Metaeuristica SimulatedAnnealing(a: parametro di raffreddamento)
1. inizializzazione:
si genera una soluzione iniziale ammissibile x0
Raffaele Pesenti
81
2. iterazione:
do {cambiamento = FALSE
for (i = 0,( i < N) && (cambiamento = FALSE), i++) {
y =g(xk)
∆ = cy - cxk //valutazione della soluzione y generata
if (∆ <0)
{xk+1 = y; cambiamento = TRUE}
else (con probabilità exp(-∆ /t))
{ xk+1 = y; cambiamento = TRUE}
}
t = at
} while cambiamento //esce dal loop quando la condizione è falsa
return
//viene restituita la migliore soluzione xk ottenuta
Raffaele Pesenti
82
Tabù search
Simulated annealing
Tabu search:
Commenti:
Sia la simulated annealing che la tabu search appaiono
promettenti per la risoluzione euristica di problemi difficili quali
quelli di scheduling le cui istanze reali attualmente appaiono di
dimensione troppo grande per essere affrontate con gli algoritmi
esatti disponibili.
Raffaele Pesenti
83
la tabu search è una metaeuristica di ricerca locale che permette passi in cui
avvengono dei peggioramenti con criteri deterministici.
Si definiscono dei criteri di accettazione della soluzione generata a soglia
basati non necessariamente solo sul valore della funzione obiettivo.
Poiché si accettano anche soluzioni che inducono peggioramenti della
funzione obiettivo, per evitare di ritornare su soluzioni già visitate, ad ogni
passo viene aggiornata una lista di operazioni vietate (tabù) che
riporterebbero su soluzioni già visitate.
Raffaele Pesenti
84
Tabù search
Tabù search
Metaeuristica TabuSearch
1. inizializzazione:
si genera una soluzione iniziale ammissibile x0, si pone TabuList = nil, k = 0;
2. iterazione:
do {
[y1, y2, ..., yn] =g(xk)
//genera un insieme di nuove soluzioni alternative
y = h((y1, y2, ..., yn), TabuList,
xk)
//seleziona la migliore alternativa se esiste
if (y = nil) {cambiamento = FALSE}
}
else { xk+1 = y; cambiamento = TRUE, aggiorna(TabuList) }
k= k+1
} while (cambiamento and k < M) //rimane nel loop se si è verificato un cambiamento di
//soluzione e se non si è superato un limite massimo di mosse
return
//viene restituita la migliore soluzione xk ottenuta
Raffaele Pesenti
function h((y1, y2, ..., yn), TabuList, xk)
1. inizializzazione:
z* = ∞, i* = 0, y0= nil;
2. iterazione:
for (i = 1; i <= n; i++) {
if ((yi not in TabuList) or (f(yi) == TRUE) //valuta se yi non è tabù o soddisfa delle “aspirazioni”
//valuta se yi è migliore della soluzione yi* corrente
if (cyi < z*) {z* = cyi, i* = i}
85
return (yi*)
//viene restituita la migliore soluzione yi* ottenuta
Raffaele Pesenti
86
Tabù search
Tabù search
Commenti:
• Sono ovviamente critiche per algoritmi tabù search la definizione delle
funzioni:
– g(xk) che determina un insieme di nuove soluzioni nell’intorno di xk, nei
metodi più semplici tale insieme è generato in modo casuale, nei metodi
più complessi tenendo conto delle statistiche delle soluzioni già visitate e
delle caratteristiche strutturali del problema;
– h((y1, y2, ..., yn), TabuList, xk) che ad ogni iterazione deve determinare la
nuova migliore soluzione;
– f(y) che descrive i criteri di aspirazione ovvero l’insieme di quelle
condizioni che permettono di violare i tabù;
• nello pseudocodice presentato per semplicità concettuale le funzioni g(.) e
h(.) sono presentate separatamente ma in molti algoritmi sono fuse assieme;
• la tabù search viene applicata con discreto successo anche quando alcuni dei
vincoli del problema originale vengono rilassati lagrangianamente. In questo
caso i criteri di aspirazione possono prevedere la soddisfazione dei vincoli.
Commenti (continuazione):
• la TabuList ha una lunghezza massima prefissata (o anche definibile
dinamicamente), una volta raggiunto il limite massimo di mosse tabù (in
generale non più di una decina) un nuovo tabù può essere immesso nella lista
solo dopo averne eliminato uno già presente;
• gli algoritmi più avanzati tengono contemporaneamente conto di più
TabuList contemporaneamente. Possono convivere liste che descrivono una
memoria a breve termine e liste che descrivono una memoria a lungo termine
(che cioè impediscono la generazione di determinate soluzioni per un più
lungo periodo). La memoria a breve termine favorisce una ricerca intensiva
di un intorno di soluzioni, la memoria a lungo termine la diversificazione
delle soluzioni generate, in questo caso le TabuList possono essere usate
anche dalla funzione g(xk). Possono anche convivere liste che tengono conto
di aspetti diversi del problema (e.g., in un problema di scheduling
l’assegnazione e la sequenziazione delle operazioni);
• definire i criteri di aggiornamento delle TabuList è un altro degli aspetti
critici delle euristiche tabù search.
Raffaele Pesenti
Raffaele Pesenti
87
88
Tabù search
Tabù search
archi dell’albero
Esempio*:
Problema - minimo albero ricoprente con vincoli aggiuntivi (side constraints):
data la rete in figura determinare l’albero ricoprente minimo che soddisfi le
seguenti condizioni aggiuntive:
– solo uno tra gli archi a, b, f può essere presente
– l’arco a può essere presente solo se è presente anche l’arco c
a6
c 18
b9
d2
e0
g 12
f8
*tratto dal lavoro di Glover (vedi bibliografia)
a6
d2
89
Tabù search
a6
b9
d2
e0
g 12
f8
a6
d2
f8
Raffaele Pesenti
c 18
b9
c 18
e0
g 12
passo 2: scambio di f con g.
Scambio che induce un peggioramento,
inevitabile data l’ottimalità della soluzione
al passo precedente, z = 32
passo 3: scambio di c con b.
Scambio che viola un tabù, ma che viene
effettuato in quanto induce una soluzione
migliore di quella correntemente ottima.
Nuova soluzione correntemente ottima,
z = 23.
La soluzione corrente è l’ottimo assoluto.
91
a6
d2
f8
Raffaele Pesenti
c 18
e0
g 12
f8
Approccio basato su tabù search
• la scelta dell’intorno è basata su scambio di archi
• il tabù impedisce di scambiare gli
ultimi due archi inseriti
• il criterio di aspirazione permette di violare il
tabù se si ottiene una soluzione migliore di quella
correntemente ottima
• i vincoli possono essere violati pagando una
penalità di 50 per ogni violazione
Raffaele Pesenti
b9
b9
arco escluso dall’albero
tramite scambio
archi tabù dell’albero
passo 0: soluzione generata con algoritmo di Prim
trascurando i vincoli.
Soluzione correntemente ottima,
ma non ammissibile z = 116
c 18
e0
g 12
passo 1: scambio di a con c.
Ottimo locale.
Soluzione correntemente ottima,
z = 28
90
Fly UP