25
3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Embed Size (px)

Citation preview

Page 1: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Page 2: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Massimo numero pezzi in tempo

Algoritmo di MooreAlgoritmo 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)

Page 3: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

J3JnJ1 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

Page 4: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

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

J3JnJ1 J2 J4

d1 d2 d3=d4 dn

Page 5: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Traduzione logica dell’intuizione

Moore costruisce una sequenza con il massimo numero di lavori terminati in tempo e con il minimo tempo totale di processamento Sn Moore e’ ottima.

sK : = { i1… ik } indici di una generica sequenza dei primi k lavori

Nk : = massimo numero di lavori in tempo, rispetto a tutte le possibili Sk

IP d1 d2 … dn ( i lavori sono ordinati secondo EDD )

Page 6: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Sk di Moore e’ tale che:

- il numero di lavori processati in tempo e’ pari ad Nk

- il tempo di processamento totale e’ minimo

Praticamente Moore trova l’ottimo per i primi k lavori

Dimostriamo per INDUZIONE che Sn e’ ottima

• S1 e’ banalmente ottima.

• Sk assumiamola ottima.

• Sk+1 e’ ottima?

Page 7: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

• Sk+1 e’ ottima?

Costruiamo la sequenza Sk+1 a partire da Sk

- se jk+1 e’ processato in tempo ottengo ancora una sequenza ottima, in cui i lavori che arrivano in tempo sono ( Nk + 1 ).

- se jk+1 non e’ processato in tempo, elimino il lavoro con tempo di processamento più lungo, fra gli ( Nk + 1 ). Ottengo una sequenza di k+1 lavori, di cui Nk+1 = Nk arrivano in tempo, con tempo di processamento totale minimo.

Page 8: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

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

rifiutatio in ritardo

Page 9: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Infatti se

Ja(1) Jr (k)... ... Ja (z)

... Jr ()Jr (1)

Si può posticipare Jr(k) mantenendo l’ottimalità

S0:

Sempre: S0: A0 R0

Page 10: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

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: EDDmin Lmax SIl riordino può essere

necessario solo se di = dj

Page 11: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Algoritmo di Moore min nT S

JJr(1) r(1) : max p: max phh = p = pr(1)r(1)

h=1,l(1)h=1,l(1)

S1:J1 Ja(1) Ja(2) Jr(1) Jl(1) Ja(z) Jl(i) Jn

dl(1)

Definizione di l(1):

Page 12: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Definizione ricorsiva di Jr (k) , da k=2

Ak:Jr(k-1)-1 Jr(k)

Jr(k-1)+1 dl(k)

k i

Jl (k) ultimo lavoro in Ak; unico in ritardo

Jr (k) Ak : max ph = pr (k)

h: Jh Ak

Jl(k)

Jr (h) con h < k non ci sono in Ak

Page 13: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

presenti in A0

Ja(1)Ja(2) Jl(1) Ja(z)

1 := numero lavori di { J1 ....Jl(1) } = :A1

assenti in A0

1 > 0 (almeno uno è assente, altrimenti Jl(1) sarebbe presente e in ritardo, cosa impossibile, per definizione di A0)

assente in A0

S1

Page 14: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Algoritmo di Moore min nT S

pq(1) pr(1) Lavoro di peso massimo fra

quelli in J1 ....Jl(1) assenti in

A0

q(1) può coinciderecon r(1)

Jq(1) : max ph = pq (1)

q(1) l(1) h=1,l(1)

h a () l(1)

Page 15: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Sk: J1 Ja(1) Ja(2) Jl(k) Jn

dl(k)

Jr (h) con h < k, rifiutati al passo h, non ci sono in Sk

Definizione ricorsiva di l(k), iniziando da k=2:

Jr(k-1)-1 Jr(k-1)+1

Passo i-esimo: 1 < k i

Sk : sequenza corrente al passo k

Page 16: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

S (sequenza corrente) :J1 Ja(1) Jl() Jn

dn

Jr()-1 Jr()+1

Ultimo passo: i = S:

J1 Ja(1) Jl() Jn

dl()

Jr() Jr()+1

dnpr()

pr()pr()

Jr()-1

dl()

Se l() non esiste

Page 17: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Jq(k) è un lavoro di peso massimo tra i k in J1 … Jl(k) fuori da A0 , non già abbinati

J1 ....Jl(k)

A0

k : numero lavori in J1 ....Jl(k) assenti in A0

Jq(k)

Page 18: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Jq(k) : pq(k) = ph

q(k) l(k)

max h l(k)Jh

Definizione ricorsiva di Definizione ricorsiva di JJq(k)q(k) ::

abbinato a Jr(k)

J1 ....Jl(k)

A0

{Jq(1) ... Jq(k-1) }Jq(k) => A0 {Jq(1) ... Jq(k-1)}

Jq(k) => h l(k) Bk

Bk

Page 19: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Algoritmo di MooreAlgoritmo di Moore min nmin nTT

SS

Tesi: A) A) i+1 i+1 ii1 1

B) B) JJq(i+1)q(i+1) : p : pq (i+1) q (i+1) ppr r

(i+1)(i+1)

Ipotesi: i i iiJJq(1)q(1) ... J ... Jq(i)q(i) : p : pq(k)q(k)

ppr(k)r(k)

Passo i-esimo:

Page 20: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Tesi:A) A) i+1 i+1 ii1 1

B) B) JJq(i+1)q(i+1) : p : pq (i+1) q (i+1) ppr (i+1)r (i+1)

Se la tesi è dimostrata, 1 1 dimostra che l’algoritmo dà un ottimo

Page 21: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Se i >i i+1 ii1

Se i = i

iJq(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)

Page 22: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Jl(i)

i = i

ritardati di ( ritardati di ( h h ppr (h)r (h) - - h h ppq (h)q (h)))

rispetto a Srispetto a Si+1i+1

A0

Ja(1) Ja(2) Jl(i) Ja(z)Jl(i+1)

1

i

1

i

Si

J1Ja(1) Ja(2) Jr(i) Jl(i) Ja(z)

dl(i) dl(i+1)

Jl(i+1)

J1Ja(1) Ja(2) Ja(z)

dl(i)

Jl(i+1)

Si+1

dl(i+1)

Page 23: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Tesi B) Jq(i+1) : pq (i+1) pr (i+1)

Ak:Jr (k-1)-1 Jr (k)

Jr (k-1)+1 dl(k)

Jl(k)

Jr (h) con h < k non ci sono in Ak

con l (i) < q(i+1) l (i+1)perché i = i

Page 24: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

Jr (h’) “nasconde” Jq(i+1) = Jr (h’)

A i+1 Jq (i+1)

Jq(i+1)A i+1 pq(i+1) pr(i+1)

tempo di processo massimo dei lavori in A i+1

Jq(k) è un lavoro di peso massimo tra i k

in J1 ....Jl(k) fuori da A0 ,non già abbinati

Page 25: 3.2 Algoritmo di Moore per la minimizzazione dei lavori in ritardo

A i+1

Jr (i+1)

Jq (h)

pq (h) =

Jq (h’’)

pq (h’’) =

sono indicati solo i lavori rifiutati in Ak o assenti in A0

A h”

Jr (h’’)

A h’’’

Jr (h’’’)

Jq(h’) A i+1

h’’’ < h’’ < h’ i

Jq(h”) A i+1

allora Jq(h) A i+1

pq(i+1) = pq(h) pr(i+1)

Jq (h’)

pq (h’) =

A h’

pq(i+1) pq(h’) pr(h’) =

pq(i+1)

q(i+1) l(h’)

Sia h il valore per cui Jr =Jq(h)

( h sempre,perché i Jq sono più dei Jr):

pq (i+1)

Jq (i+1)

Jr (h’)