Controllo delle operazioni su una macchina 3.1 Sequenziamento delle operazioni a minimo: tempo di completamento medio, ritardo massimo 16.03.04 N10 17.03.04 N11
Sequenziamento delle operazioni (Scheduling) magazzino con movimentazione interna controllo della successione dei tempi Ipotesi: tutti i grezzi sono disponibili dall’inizio (ri= 0)
Gantt del Sequenziamento presenza dell’operazione p1 p2 p3 p4 pn op1 op2 op4 opn op3 c1 c2 c3 c4 cm tempo n cm= Si pi: completamento totale delle operazioni (makespan) 1
c = Si ci: completamento medio delle operazioni presenza dell’operazione p1 p2 p3 p4 pn op1 op2 op4 opn op3 c1 c2 c3 c4 cm tempo 1 1 n c = Si ci: completamento medio delle operazioni n 1 n Si ci : somma dei tempi di completamento
Minimo completamento medio presenza dell’operazione pn p2 p1 p3 p4 op2 op2 op1 op1 op3 op4 opn c1 c2 c3 c4 cm tempo c2 c1 se p2 < p1 lo scambio => c2< c2 c1= c2 riduce il completamento medio o la somma dei tempi di completamento min c S SPT: Shortest Process Time (first):
Minimizza anche: - flusso medio F - attesa media W (ri= 0 => fi:= ci-ri = ci) SPT: p3 pn p2 p4 op3 opn op2 op4 c3 cn c2 c4 cm Minimizza anche: - flusso medio F - attesa media W - num. medio p. in att. Nw
n c / cm= 1 + Nw 1 cm Nw = Srx cr + cm- cm = n c / cm -1 n-1 2 1 t ci Nw(t) n-1 n c / cm= 1 + Nw 2 1 t ci cn ck cj cy cx =cm n 1 cm Nw = Srx cr + cm- cm = n c / cm -1 1
= ( ncm- nc ) = n(1-c/ cm) SPT Massimizza cm cm ci cj ck cn cy cm 1 1 Nu(t) SPT Massimizza n-1 2 1 ci cj ck cn cy cm t n 1 cm Nu = Sri (cm- cr) + cm- cm 1 = ( ncm- nc ) = n(1-c/ cm) 1 cm
dr: tempo di consegna dovuto per Ritardo del pezzo r : Lr = cr-dr (lateness) Lr < 0 dr Lr > 0 cr anticipo ritardo cr- dr Lr(cr) dr: tempo di consegna dovuto per pezzo r Ritardo del pezzo r : Lr = cr-dr
min c <=> min L n n L = 1 n 1 n 1 n S Lr cr- dr S S = = c - dr n anticipo ritardo cr- dr Lr(cr) min c <=> min L n n L = 1 n 1 n n 1 n S r =1 Lr cr- dr S r =1 S r =1 = = c - dr
minimo ritardo Massimo min LM S Lj Lk ci dj di cj dk ck Li LM = Maxr Lr = Lj
Si hanno le seguenti date di consegna: Earliest Due Date EDD dati lavori J1 ...Jn Si hanno le seguenti date di consegna: di (1) di (2) di (3) di (4) di (l)
e si sequenziano i lavori nello stesso ordine Earliest Due Date EDD Si riordinano gli indici nell’ordine delle date dovute d1 d2 d3 d4 dn e si sequenziano i lavori nello stesso ordine J1 J2 J3 J4 Jn d1 d2 d3 d4 dn
n Maxi Li 1 EDD min S Sott. ck di ci dk > di dk S’ ci’ ck’= ci di Jk Ji Sott. ck di ci dk > di Ji Jk dk S’ ci’ ck’= ci di
EDD S’: -dk< - di ci = ck’ ci’< ci Max (Lk’, Li’) Ji Jk S’: dk ci’ di ck’= ci -dk< - di ci = ck’ ci’< ci Max (Lk’, Li’) = Max (ci - dk, ci’- di) £ ci - di ci - di Max (ck -dk, ci-di) = Max (Lk, Li)
Earliest Due Date EDD n min Maxi Li S 1 : Massimo anticipo minimo n Max mini Ai S 1 Ai = -Li> 0 ci di Ai< 0 ci di
3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo
Massimo numero pezzi in tempo Algoritmo di Moore J1 J2 J3 J4 Jn d1 d2 d3=d4 dn 1) Si scelgono gli indici in ordine EDD (non sempre è unico: es. J3 e J4 sopra)
J3 Jn J1 J2 J4 d1 d2 d3=d4 dn 1’) La sequenza ottenuta è la sequenza corrente S1 (la prima) ; si pone i=1 2) Si individua il primo lavoro in ritardo Jl(i) nella sequenza corrente, se non esiste: stop
J3 Jn J1 J2 J4 d1 d2 d3=d4 dn 3) Si individua il lavoro più lungo Jr(i) con r l(i), nella sequenza corrente Si 4) Si ottiene una nuova sequenza corrente Si+1 escludendo Jr(i) e si torna al passo 2), con i:= i+1
nT numero di pezzi che vanno rifiutati Algoritmo di Moore min nT S 1968 nT numero di pezzi che vanno rifiutati (T: Tardiness) Ipotesi di lavoro: S0 ottima Sempre: S0: A0 R0 ammessi o in anticipo rifiutati o in ritardo
Si può posticipare Jr(k) mantenendo l’ottimalità Sempre: S0: A0 R0 Infatti se Ja(1) ... ... Jr (k) Ja (z) Jr (1) ... Jr (l) S0: Si può posticipare Jr(k) mantenendo l’ottimalità
Infatti in A0: Lmax £ 0, inoltre: EDD S0 : A0 R0 scelti gli indici dei lavori secondo una qualsiasi S EDD i < j di dj Si può sempre riordinare A0 come la EDD scelta: h<k a(h) < a(k) Infatti in A0: Lmax £ 0, inoltre: EDD min Lmax S Il riordino può essere necessario solo se $ di = dj
Algoritmo di Moore Definizione di l(1): Jr(1) : max ph = pr(1) min nT S Definizione di l(1): S1: J1 Ja(1) Ja(2) Jr(1) Jl(1) Ja(z) Jl(i) Jn dl(1) Jr(1) : max ph = pr(1) h=1,l(1)
Definizione ricorsiva di Jr (k) , da k=2 k £ i Jr(k-1)-1 Jr(k) Jl(k) Ak: Jr(k-1)+1 dl(k) Jr (h) con h < k non ci sono in Ak Jl (k) ultimo lavoro in Ak; unico in ritardo Jr (k) Ak : max ph = pr (k) h: Jh Ak
m 1 := numero lavori di { J1 ....Jl(1) } = :A1 assenti in A0 Ja(1) Ja(2) Jl(1) Ja(z) presenti in A0 assente in A0 m 1 := numero lavori di { J1 ....Jl(1) } = :A1 assenti in A0 m 1 > 0 (almeno uno è assente, altrimenti Jl(1) sarebbe presente e in ritardo, cosa impossibile, per definizione di A0)
Algoritmo di Moore Jq(1) : max ph = pq (1) min nT S pq(1) £ pr(1) q(1) £ l(1) h=1,l(1) h ¹ a (·) £ l(1) pq(1) £ pr(1) Lavoro di peso massimo fra quelli in J1 ....Jl(1) assenti in A0 q(1) può coincidere con r(1)
Passo i-esimo: 1 < k £ i Definizione ricorsiva di l(k), iniziando da k=2: J1 Ja(1) Ja(2) Jr(k-1)-1 Jr(k-1)+1 Jl(k) Jn Sk: dl(k) Jr (h) con h < k, rifiutati al passo h, non ci sono in Sk Sk : sequenza corrente al passo k
Sn +1 (sequenza corrente) : J1 Ja(1) Jr(n)-1 Jr(n)+1 Jl(n) Jn Se l(n+1) non esiste Ultimo passo: i = n +1 Sn : J1 Ja(1) Jr(n)-1 Jr(n) Jr(n)+1 Jl(n) Jn pr(n) dl(n) dn Sn +1 (sequenza corrente) : pr(n) pr(n) J1 Ja(1) Jr(n)-1 Jr(n)+1 Jl(n) Jn dl(n) dn
mk : numero lavori in J1 ....Jl(k) assenti in A0 Jq(k) è un lavoro di peso massimo tra i mk in J1 … Jl(k) fuori da A0 , non già abbinati J1 ....Jl(k) A0 Jq(k)
Definizione ricorsiva di Jq(k) : J1 ....Jl(k) A0 Ï {Jq(1) ... Jq(k-1) } Bk Jq(k) => h £ l(k) Jq(k) => ÏA0 È {Jq(1) ... Jq(k-1)} Jq(k) : pq(k) = ph q(k) £ l(k) max h £ l(k) Jh Ï Bk abbinato a Jr(k)
Algoritmo di Moore Ipotesi: Tesi: min nT S Passo i-esimo: a) mi ³ i b) $ Jq(1) ... Jq(i) : pq(k) £ pr(k) Ipotesi: A) mi+1 ³ i +1 B) $ Jq(i+1) : pq (i+1) £ pr (i+1) Tesi:
A) mi+1 ³ i +1 B) $ Jq(i+1) : pq (i+1) £ pr (i+1) Tesi: Se la tesi è dimostrata, m1 ³ 1 mn ³ n dimostra che l’algoritmo dà un ottimo Mu con nu è il numero di lavori rifiutati nell’ipotetica ottima da giei uno a giei nu
Se mi >i mi+1 ³ mi ³ i +1 Se mi = i i Jq(1) ... Jq(i), abbinati a Jr (1) ... Jr(i) q (k) £ l (k) pq(k) £ pr(k) k = 1,…,i sono esattamente tutti i lavori assenti in A0 tra J1 ... Jl(i)
ritardati di ( å h pr (h) - å h pq (h)) Ja(1) Ja(2) Jr(i) Jl(i) Jl(i+1) Ja(z) J1 Si dl(i) dl(i+1) Ja(1) Ja(2) Jl(i) J1 Jl(i+1) Ja(z) Si+1 dl(i) dl(i+1) Ja(1) Ja(2) Jl(i) Jl(i+1) Ja(z) A0 I lavori da giei elle i in poi vengono anticipati di somma di pi qu di acca nell’ipotetica ottima e di somma di pi erre acca in esse i più uno ritardati di ( å h pr (h) - å h pq (h)) rispetto a Si+1 i i 1 1 mi = i
Jr (h) con h < k non ci sono in Ak Tesi B) $ Jq(i+1) : pq (i+1) £ pr (i+1) Jr (k-1)-1 Jr (k) Jl(k) Ak: Jr (k-1)+1 dl(k) Jr (h) con h < k non ci sono in Ak con l (i) < q(i+1) £ l (i+1) perché mi = i
$ Jr (h’) “nasconde” Jq(i+1) = Jr (h’) tempo di processo massimo dei lavori in A i+1 Jq(i+1) Î A i+1 pq(i+1) £ pr(i+1) Jq (i+1) Ï A i+1 $ Jr (h’) “nasconde” Jq(i+1) = Jr (h’) Jq(k) è un lavoro di peso massimo tra i mk in J1 ....Jl(k) fuori da A0 ,non già abbinati
pq(i+1) £ pq(h’) £ pr(h’) = pq(i+1) h’’’ < h’’ < h’ £ i A h’’’ Jr (h’’’) A h” Jr (h’’) Jq (h’) pq (h’) = A h’ pq(i+1) £ pq(h’) £ pr(h’) = pq(i+1) q(i+1) £ l(h’) A i+1 pq (i+1) Jq (i+1) Jr (h’) Jr (i+1) Jq(h”) Ï A i+1 Jq(h’) Ï A i+1 sono indicati solo i lavori rifiutati in Ak o assenti in A0 Jq (h) pq (h) = Jq (h’’) pq (h’’) = Sia h il valore per cui $ Jr =Jq(h) ($ h sempre,perché i Jq sono più dei Jr): allora Jq(h) Î A i+1 pq(i+1) = pq(h) £ pr(i+1)