• Non ci sono risultati.

Rappresentazione reticolare di un progetto

N/A
N/A
Protected

Academic year: 2021

Condividi "Rappresentazione reticolare di un progetto"

Copied!
101
0
0

Testo completo

(1)

Parte 3: Gestione dei progetti, Shop

scheduling

(2)

Rappresentazione reticolare di un progetto

• Insieme di attività {1,...,n}

• pi durata (nota e deterministica dell’attività i)

• relazione di precedenza fra attività: Grafo G = (V, A) diretto (Activity on Node) aciclico

(Activity on Node) aciclico

• aggiungiamo due nodi fittizi s e t a rappresentare l’inizio e la fine del progetto; inseriamo gli archi:

– (s, j) per ogni nodo j che non ha archi entranti – (i, t) per ogni nodo i che non ha archi uscenti

• associamo una lunghezza lij = pia ciascun arco (i, j)∈A

(3)

Durata del progetto

attività durata pred.

a 14 -

b 3 -

c 3 a,b

d 7 a

s

a 14 d

7 e

14 4

e 4 d

f 10 c,e

b c f t

3 3 10

La durata del progetto è quindi pari a yt − ys

Rappresentiamo un schedule con un vettore [y1, ..., yn] (istanti di inizio delle attività)

(4)

Minimizzare la durata del progetto (makespan)

s

t

y

y − min

Formulazione PL:

A j

i l

y

y

j

i

ij

( , ) ∈

vincoli di precedenza

una sol. con qualche yi < 0 può essere scalata, rimanendo ammissibile e di pari valore

V i

y

i

≥ 0 ∈

(5)

Problema duale

ij A j i

ij

x

∑ l

) , (

max

+

=

) ( j) (i, )

( i) (j,

} , {

\ 0

- i

ij i

ji

x i V s t

x

δ δ

+

=

) ( ) , (

1

s j

s

x

sj δ

=

) ( ) , (

1

t t

j

x

jt δ

problema del cammino di lunghezza massima da s a t in G

A j

i

x

ij

≥ 0 ( , ) ∈

(6)

Algoritmo

• per il teorema della dualità forte il makespan equivale alla lunghezza del cammino massimo in G

• ponendo luv := −luv equivale a calcolare un cammino da s a t di lunghezza minima

• G = (V, E) è aciclico, quindi il cambio di segno non

• G = (V, E) è aciclico, quindi il cambio di segno non introduce cicli di lunghezza negativa

• l’albero dei cammini minimi in un grafo diretto aciclico si calcola in tempo O(m)

Un vettore e(.) di interi definisce un ordinamento topologico dei nodi di G se risulta e(i) < e(j) per ogni arco (i,j)∈ A

(7)

Ordinamento topologico

j:=0 repeat

• j := j + 1

• Sceglie un nodo v con grado entrante pari a zero

• Assegna a v l’etichetta e(v) := j

• Assegna a v l’etichetta e(v) := j

• Elimina v e i suoi archi uscenti

until (esiste qualche nodo con grado entrante nullo)

Se la rete rimanente contiene nodi ed archi allora G contiene un ciclo diretto

Altrimenti le etichette definiscono un ordinamento topologico

(8)

Esempio

s

a d e

v e(v)

s 1

a 2

b 5

c 6

s

b c f t

c 6

d 3

e 4

f 7

t 8

L’algoritmo ha complessità O(m) [mantenendo il grado dei nodi e la lista dei nodi a grado entrante nullo]

(9)

Albero dei cammini minimi

• dato un ordinamento topologico (etichette e(.))

• d(.) vettore delle distanze

• p(.) vettore dei predecessori

Init. d(s) = 0, d(v) =∞, p = NULL, v∈V.

Init. d(s) = 0, d(v) =∞, pv = NULL, v∈V.

loop: for (j = 1 to |V|){

u: e(u) = j

SCAN(u): forall v tale che (u,v)∈A if (d(v)>d(u)+luv)

dv := du + luv; pv := u;

}

(10)

Esempio

d p

s 0 -

a 0 s

b 0 s

c − 14 a

a −14 d

7 e

14 4

0 −14 −21

c − 14 a

d − 14 a

e − 21 d

f − 25 e

t − 35 f

s

b 3 c 3 f t

14 4

10

0 −14 −25 −35

(11)

Earliest start time

• ponendo yv = −dv, v ∈ V, si ha che yv rappresenta il minimo istante di inizio per l’attività v tale da rispettare i vincoli di precedenza.

• Questo è detto Earliest Start Time, EST(v)

• EST(t) equivale quindi al minimo makespan

s

a

b

d

c

e

f t

0 14 21

0 14 25 35

14 7

4

3 3 14

10

14 7

4

(12)

Cammino critico

Ogni cammino di lunghezza massima da s a t è detto cammino critico

• le attività apparenenti ad un cammino critico sono dette attività critiche: un ritardo in una di esse provoca un ritardo dell’intero progetto

s

a

b

d

c

e

f t

0 14 21

0 14 25 35

3 3 10

14 7

14 4

(13)

Diagramma di Gantt

s

a

b

d

c

e

f t

0 14 21

3 3 10

14 7

4

b c f t

0 14 25 35

3 3 10

b

a

3

f

21

c d

35

e

14 17 25

(14)

Latest start time

• Tipicamente, il progetto deve essere terminato entro una data di consegna T

• ciò vincola ogni attività v ad essere iniziata entro un certo istante, detto Latest Start Time, LST(v)

• Se indichiamo δ(v) con la lunghezza del cammino massimo

• Se indichiamo δ(v) con la lunghezza del cammino massimo da v a t, si ha che LST(v) = T − δ(v)

s

a

b

d

c

14 e

f t

3 3

7

14 4

10

δ(c) = 13

(15)

Total float

La quantità LST(v) − EST(v) è detta total float TF(v)

a 14 d

7 e

δ(c) = 13

s

b c f t

3 3

14 4

10

δ(c) = 13

T = 29

EST(c) = 14 LST(c) = 16 TF(c) = 2

(16)

Trade-off tempi-costi

In molti casi, una maggiore allocazione di risorse su una certa attività permette di ridurne la durata.

pendenza costo

ai bi

di

pendenza

durata nominale durata minima

(17)

Formulazione

variabili decisionali:

yi istante di inizio dell’attività i,

βi riduzione del tempo di processamento dell’attività i Problema: determinare uno schedule tale che l’intero

progetto abbia durata non superiore a λ

i N

i

d

i

β

min

A j

i a

y

y

j

i

i

− β

i

∀ ( , ) ∈ V

i b

a

i i

i

≤ − ∈

≤ β 0

λ

s

t y

y

progetto abbia durata non superiore a λ

(18)

Formulazione

sostituzione di variabili:

β′ =y − β

i N

i

i N

i

i

i

y d

d − ∑ β

min

A j

i a

y

j

− β

i

′ ≥

i

∀ ( , ) ∈ λ

s

t y

y

β′i =yi − βi

N i

b a

y

i

− β

i

′ ≤

i

i

∈ N i

y

i

− β

i

′ ≥ 0 ∀ ∈

yi, β′i non vincolate

ogni riga ha al più un +1 ed un −1, quindi è il duale di un problema di flusso a costo minimo

(19)

Job Shop Scheduling

• insiemi J = {1,...,n} di job, M={1,...,m} di macchine

• Ogni job richiede una fissata sequenza di operazioni, ciascuna eseguita su una specifica macchina (con capacità unitaria e buffer di ingresso); cioè, visita le capacità unitaria e buffer di ingresso); cioè, visita le macchine secondo un dato instradamento

• Un job visita una macchina al più una volta (no-ricircolo) Problema: decidere la sequenza di processamento delle operazioni su ciascuna macchina in modo da minimizzare il makespan

(20)

Notazione

• (i, j), i∈M, j∈J operazione

• pij durata dell’operazione (i, j)

• N insieme di tutte le operazioni (se ogni job visita tutte le macchine esattamente una volta |N| = nm)

macchine esattamente una volta |N| = nm)

• mj numero di macchine visitate dal job j

• (i(j,1),...,i(j,mj)) instradamento di j (sequenza delle macchine che visita)

• J(i) insieme dei job che visitano la macchina i

(21)

Esempio

job i(j,1) [pi(j,1),j]

i(j,2) [pi(j,2),j]

i(j,3) [pi(j,3),j]

A 1

[2]

4 [2]

3 [4]

B 2

[3]

4 [1]

1 [2]

Una soluzione:

•A precede B sulla macchina 1

•A precede B sulla macchina 4

1 A B

[3] [1] [2]

A

B

2 3 4

2

B

A

A B

3 4 5 7 8

se B precedesse A sulla macchina 1 ?

1 4

3

2

(22)

Caso particolare: Flow Shop

• Tutti i job hanno la stessa sequenza (1, 2,…, m) di visita delle macchine

J 1 2 m-1 m

• Il buffer di ingresso consente i sorpassi: la sequenza di processamento della macchina i + 1 può essere diversa da quella sulla macchina i. Il numero di soluzioni è pari a (n!)m

• Nel caso senza buffer (no-wait) ci sono n! soluzioni

(23)

n

ij

R

t ∈ istante di inizio dell’operazione ij

Formulazione disgiuntiva

minC

A insieme delle coppie

(i(j,h), j),(i(j,h+1), j), h =1,…,mj−1, j=1,…,n

N k

i j

i p

t t

or p

t

t

ij

ik

ik ik

ij

ij

( , ), ( , ) ∈

N j

i

t

ij

≥ 0 ( , ) ∈

A j

r j

i p

t

t

rj

ij

ij

( , ), ( , ) ∈ N j

i p

t

C

max

ij

+

ij

( , ) ∈

minC

max

(24)

 

= 

0

i

1

y

jk

Se il job j precede k sulla macchina i

Formulazione PLM

minC

max

altrimenti

N k

i j

i M i

p y

M t

t

ik

ij

+ ( 1 −

ijk

) ≥

ij

∈ , ( , ), ( , ) ∈

N j

i

t

ij

≥ 0 ( , ) ∈

A j

r j

i p

t

t

rj

ij

ij

( , ), ( , ) ∈

N j

r j

i p

t

C

max

ij

+

ij

( , ), ( , ) ∈ minC

max

N k

i j

i M i

p My

t

t

ij

ik

+

ijk

ik

∈ , ( , ), ( , ) ∈

(25)

Esempio

job i(1) [pi(1),j] i(2) [pi(2),j] i(3) [pi(3),j] i(4) [pi(4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

3 1[8] 2 [7] 4 [3]

(26)

Grafo disgiuntivo

A archi congiuntivi

rappresentano la relazione di precedenza fra le grafo diretto

s (sorgente) e z (pozzo)

G = (N ∪{s,z}, A, D)

operazioni di ciascun job j

in aggiunta, per ogni j∈J, gli archi

dalla sorgente alle prime operazioni dalle ultime operazioni al pozzo

(i(j,h), j)→(i(j,h+1), j), h =1,…,m

j

−1

s →(i(j, 1), j)

(i(j, m

j

), j) →z

(27)

Esempio (archi congiuntivi)

job i(j,1) [pi(j,1),j] i(j,2) [pi(j,2),j] i(j,3) [pi(j,3),j] i(j,4) [pi(j,4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

(28)

Archi disgiuntivi

Rappresentano la sequenza dei job su ciascuna macchina per ogni coppia di operazioni da eseguirsi sulla macchina i, l’ arco (i,j) → (i,k) indica che l’operazione (i,j) precede (i,k)

{ ,

( s z }, , )

G = N ∪ A D

D(i) = {archi disgiuntivi associati alla macchina i}, inducono una clique in G

Per ogni macchina i ∈ M, e ciascuna coppia j,k di job in J(i), D contiene una coppia (disgiuntiva) di archi

( , ) i j → ( , ) i k ( , ) i k → ( , ) i j

(29)

Esempio (archi disgiuntivi)

job i(j,1) [pi(j,1),j] i(j,2) [pi(j,2),j] i(j,3) [pi(j,3),j] i(j,4) [pi(j,4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

(30)

Lunghezza degli archi

job i(j,1) [pi(j,1),j] i(j,2) [pi(j,2),j] i(j,3) [pi(j,3),j] i(j,4) [pi(j,4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

1,1 11 2,1 4 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

0

0 0

11 11

8 8

8

8

8 3

3

3

4 4 5

5 5

7

7

7

4 4 6

6

3 3

Ad ogni arco (i,j)→(h,k) si associa una lunghezza pari a pij

(31)

Selezione

Definizione. Un insieme Si ⊆ Di che contiene esattamente un elemento per ciascuna coppia disgiuntiva è detto selezione della macchina i.

• Si è aciclica se (il grafo parziale) non contiene cicli orientati.

• Una selezione aciclica S corrisponde (biunivocamente) ad

• Una selezione aciclica Si corrisponde (biunivocamente) ad un sequenziamento delle operazioni sulla macchina i.

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

S1

(32)

Schedule ammissibili

Definizione. L’unione degli archi congiuntivi e delle selezioni Si, i∈M, è detta selezione completa.

Gli schedule ammissibili corrispondono biunivocamente alle selezioni complete acicliche

alle selezioni complete acicliche

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

schedule non ammissibile

(33)

Selezioni complete e schedule ammissibili

lunghezza del cammino critico

1,1 2,1 3,1

4,2 1,2 3,2

z s

0

2,2 11

7

6 5

4 2 3 2

1 1

11 8

1

15 3

19 1

3

26 2

22

3

2

29 31

2

37

=

makespan

1,3 2,3 4,3

8

7

(34)

Riformulazione

Job shop scheduling: trovare una selezione completa aciclica che minimizzi la lunghezza del cammino critico

Oss. Valutare una soluzione (selezione completa) richiede la Oss. Valutare una soluzione (selezione completa) richiede la soluzione di un problema di ottimizzazione (calcolo del cammino critico)

(35)

Cicli

1,1 2,1 3,1

Una selezione completa può formare cicli anche se le selezioni Si sono tutte acicliche

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

Quindi, non è immediato progettare algoritmi che decompongono il problema per macchine

(36)

Lower bound I

Supponiamo di aver scelto una selezione aciclica Si, per i∈M′⊂ M. Poniamo S(M′) = ∪i∈M′ Si

Definiamo G(M′) il grafo parziale formato dagli archi congiuntivi e dagli archi in S(M′)

Supponiamo che G(M′) sia aciclico e sia Cmax(M′) la lunghezza del cammino critico in G(M′)

Proprietà. Cmax(M′) è un lower bound di Cmax quando le operazioni su ciascuna macchina i∈M′ sono sequenziate secondo Si

Infatti, ciò equivale a considerare a capacità infinita le macchine in M\M′

(37)

Esempio

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

M′ = {1}

0 0 0

11 11

8

8 3

4

5

4 6

3 11

S1

1,3 2,3 4,3

8

8 7

3

Cmax(M′) = 33

lower bound per Cmax nel caso in cui la macchina 1 processa le operazioni secondo S1

(38)

Lower bound II

Teniamo adesso conto dell’effetto di sequenziare un’ulteriore macchina

Supponiamo di aver scelto una selezione aciclica Si, per i∈M′⊂ M. Poniamo S = ∪i∈M′ Si

Per ogni operazione (i,j), i ∉ M′, poniamo

• rij = ESTM′′′′(i,j) primo istante ammissibile per l’operazione (i,j) fissate Si, i∈M′

• dij = LSTM′′′′(i,j) + pij due date per l’operazione (i,j) affinché Cmax ≤ Cmax(M′)

(39)

Esempio

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

M′ = {1}

0 0 0

11 11

8 3

4

5

4 6 11

Cmax(M′) = 33

S1

1,3 2,3 4,3

0 8

8 7

3

S1

operazione (2,1) (2,2) (2,3) (3,1) (3,2) (4,2) (4,3)

p

ij 4 5 7 4 6 8 3

r

ij 11 22 19 15 27 0 26

d

ij 29 27 30 33 33 19 33

(40)

1/r

j

/L

max

• le operazioni (k,j), j∈J(k) associate ad una macchina k, con release date r(k,j) e due date d(k,j), identificano un’istanza del problema 1/rj/Lmax

• Definiamo Lmax(k) il suo valore ottimo

Op. (2,1) (2,2) (2,3)

p

ij 4 5 7

r

ij 11 22 19

d

ij 29 27 30

(2,3) 15

11

(2,1)

27 (2,2)

34

−14 −1 4

Esempio. k = 2

Lmax(k) = 4

22

(41)

Lower bound II

Proprietà. Cmax(M′) + Lmax(k) è un lower bound di Cmax quando le operazioni su ciascuna macchina i∈M′ sono sequenziate secondo Si

Infatti, la selezione S è scelta in modo da minimizzare il

• il miglior lower bound si ottiene calcolando Lmax (k), per k ∉M′ e scegliendo il massimo fra questi valori:

Lmax (k*) = maxk ∉∉M′′′′{Lmax (k)}

Infatti, la selezione Sk è scelta in modo da minimizzare il ritardo sul makespan, mentre tutte le altre macchine (M\M′\{k}) sono assunte a capacità infinita

(42)

Lower Bound II

• indichiamo con S*(k) la selezione associata alla soluzione ottima

• Aggiungendo gli archi S*(k) al grafo la lunghezza LB2 del cammino critico aumenta di Lmax(k)

1,1 2,1 3,1

4,2 1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0 0

11 11

8 8

8 3

4

5

7

4 6

3 11

S1

4 4

5

Cmax(M′) = 33 LB2 = 37 Lmax(k=2) = 4

(43)

Euristica Shifting Bottleneck

• Costruisce una selezione completa aciclica construendo iterativamente selezioni parziali acicliche M

0

insieme delle macchine già sequenziate

inizializzazione M

0

= ∅ Passo generico:

• Costruisce il grafo G(M

0

) e calcola C

max

(M

0

)

• sceglie la macchina “critica” (bottleneck) k* = argmax

k ∉∉M0

{L

max

(k)}

• fissa (definitivamente) la selezione S*(k*)

• M

0

:= M

0

∪{k*}

(44)

Validità

Teorema. Gli archi orientati associati alla soluzione ottima di un problema a macchina singola non creano cicli nel grafo G(M0).

Conseguenza: la selezione completa ottenuta dalle selezioni acicliche generate nelle singole iterazioni è aciclica.

(45)

Esempio

job mj(1) [pm(1),j] mj(2) [pm(2),j] mj(3) [pM(3),j] mj(4) [pM(4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

init. M

0

= ∅

1,1 2,1 3,1

4,2 1,2 3,2 z

s

0

11

4

0

2,2

1,3 2,3

7

4,3

0

8

8 3 5

3 6

G(M

0

)

4

(46)

Esempio

1,1

11

2,1

4

3,1

Iter 1. Calcola Cmax, rij, dij Cmax(M0) = 22

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8 8

3

5

3 6

[0, 14] [11, 18] [15, 22]

[0, 8]

[0, 12]

[8, 11] [11, 16] [16, 22]

[8, 19] [15, 22]

(47)

Iter 1: problemi 1/r

j

/L

max

Job 1 2 3

pj 11 3 8

rj 0 8 0

d 14 11 12

1 Job 1 2 3

pj 4 5 7

rj 11 11 8

d 18 16 19

2

dj 14 11 12 dj 18 16 19

Job 1 2

pj 4 6

rj 15 16 dj 22 22

3 Job 2 3

pj 8 3

rj 0 15 dj 8 22 4

(48)

1/r

j

/L

max

macchina 1

Job 1 2 3

pj 11 3 8

rj 0 8 0

PEDD restituisce la soluzione ammissibile:

1

0 8

3

11

2

22 dj 14 11 12

−4 0 8

(49)

1/r

j

/L

max

macchina 2

PEDD restituisce la soluzione non ammissibile:

1

3 2

Job 1 2 3

pj 4 5 7

rj 11 11 8 dj 18 16 19

0 2 5

3

11

8 16 20 24

Soluzione ottima:

1

15 8

3 2

20

-4 4 6

24

L

max

= 6

(50)

1/r

j

/L

max

macchina 3

Job 1 2

pj 4 6

rj 15 16 dj 22 22

Soluzione ottima:

1

19 15

2

−3 3

25

(51)

1/r

j

/L

max

macchina 4

Job 2 3

pj 8 3

rj 0 15 dj 8 22

Soluzione ottima

0 8

2

0 −4

15

3

18

(52)

iter. 2

1,1 2,1 3,1

0

11 4

4

M

0

= {1}

3 Iter 2. Calcola Cmax

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8 8

3

5

3 6

C

max

(M

0

) = 30

8 8

3

(53)

iter. 2

1,1 2,1 3,1

0

11 4

4

M

0

= {1}

C

max

(M

0

) = 30

3

[22, 26] [26, 30]

Iter 2. Calcola rij, dij

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8

8 3 5

3 6

8 8

3

[0, 8] [11, 24] [16, 30]

[8, 27] [15, 30]

(54)

Iter 2: problemi 1/r

j

/L

max

Job 1 2 3

pj 4 5 7

rj 22 11 8 dj 26 24 27

2 2

Job 1 2

pj 4 6

rj 26 16 dj 30 30

3

Job 2 3

pj 8 3

rj 0 15 dj 8 30

4

(55)

1/r

j

/L

max

macchina 2

Job 1 2 3

pj 4 5 7

rj 22 11 8 dj 26 24 27

Soluzione ottima:

3

8 15

2

20 22

0 0 0

1

(56)

1/r

j

/L

max

macchina 3

Job 1 2

pj 4 6

rj 26 16 dj 30 30

Soluzione ottima:

16 22

2

26 30

−8 0

1

(57)

1/r

j

/L

max

macchina 4

Job 2 3

pj 8 3

rj 0 15 dj 8 30

Soluzione ottima:

0 8

2

15 0

3

−12

18

(58)

iter. 3

1,1 2,1 3,1

0

11 4

4

M

0

= {1,2}

3 Iter 2. Calcola Cmax

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8

8 3 5

3 6

C

max

(M

0

) = 30

8 8

3 5

7 7

(59)

iter. 3

1,1

11

2,1

4

3,1

M

0

= {1,2}

C

max

(M

0

) = 30

[26, 30]

Iter 2. Calcola rij, dij

1,1 2,1 3,1

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8

8 3 5

3 6

8 8

3

[0, 8] [20, 30]

[15, 30]

7

(60)

Iter 3: problemi 1/r

j

/L

max

Job 1 2

pj 4 6

rj 26 20

3 Job 2 3

pj 8 3

rj 0 15 4

rj 26 20 dj 30 30

rj 0 15 dj 8 30

20

2

26 30

−4 0

1

0 8

2

18 0

3

−12

15

(61)

Iter. 4

1,1 2,1 3,1

0

11 4

4

M

0

= {1,2,3}

Iter 4. Calcola rij, dij

4,2 1,2 3,2 z

s

0 4

0

2,2

1,3 2,3 4,3

7 0

8

8 3 5

3 6

C

max

(M

0

) = 30

8 8

3 5

7 7

6

[0, 8]

[15, 30]

(62)

STOP

1,1 2,1 3,1

0

11 4

4

M

0

= {1,2,3, 4}

3 5 6

La soluzione calcolata è:

4,2 1,2 3,2 z

s

0

2,2

1,3 2,3 4,3

7 0

8

8 3 5

3 6

C

max

(M

0

) = 30

8 8

7 8 7

(63)

Operazioni su schedule

Due operazioni trasformano uno schedule ammissibile in un altro schedule ammissibile:

4 2

3 1 2

3

shift: anticipa un’operazione

3 2

1 1

1 3

1

3 2

2

2

4 2 3 2

1 1

1 3

1

2

3

3

2

2

shift: anticipa un’operazione

jump: anticipa un’operazione in un intervallo in cui la

macchina è ferma

modificando la sequenza

(64)

Schedule attivi

Definizione. Uno schedule ammissibile si dice attivo se nessuna operazione può essere anticipata mediante uno shift o un jump senza ritardare un’altra operazione

4 2 3 2

1 1

1 3

1

2

3

3

2

2

(65)

Branch-and-bound

• Esiste uno schedule ottimo che è attivo, quindi restringiamo la ricerca agli schedule attivi

• ad ogni livello dell’albero di enumerazione si fissa un’operazione

• le operazioni fissate ad un dato sottoproblema formano

• le operazioni fissate ad un dato sottoproblema formano uno schedule parziale

• un’operazione si dice disponibile se tutte le operazioni che la precedono sono state schedulate. AO = insieme delle operazioni disponibili

(66)

Branching

• step 1 (inizializzazione)

calcola l’insieme AO e rij per ogni (i,j)∈AO

• step 2 (selezione della macchina)

calcola t(AO) = min(i,j)∈AO{rij + pij} = ri*j + pi*j

• step 3 (branching)

BO = {operazioni (i*,j) ∈ AO tali che ri*j< t(AO)}

per ogni operazione in BO:

•genera un sottoproblema fissando tale operazione come successiva

(67)

Esempio

job i(j,1) [pi(j,1),j] i(j,2) [pi(j,2),j] i(j,3) [pi(j,3),j] i(j,4) [pi(j,4),j]

1 1 [11] 2 [4] 3 [4]

2 4 [8] 1 [3] 2 [5] 3 [6]

3 1[8] 2 [7] 4 [3]

AO = {(1,1),(4,2),(1,3)}

t(AO) = min{0+11, 0+8, 0+8} = 8, i* = 4 r4,2=0 ⇒ BO = {(4,2)}

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo radice:

branching: genera un singolo sottoproblema A fissando l’operazione (4,2)

(68)

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo A:

AO = {(1,1),(1,3),(1,2)}

t(AO) = min{0+11, 0+8, 8+3} = 8, i* = 1

r1,1=0, r1,2=8, r1,3=0 ⇒ BO={(1,1), (1,3)} A

B C

(1,1) (1,3)

(4,2)

(69)

AO = {(1,3),(1,2),(2,1)} t(AO)=min{11+8,11+3,11+4} = 14, i* = 1 r1,3=11, r1,2=11 ⇒ BO = {(1,2),(1,3)} ⇒ sottoproblemi D,E

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo B:

1

11 11

AO = {(1,1),(1,2),(2,3)} t(AO) =min{8+11, 8+3, 8+7} = 11, i* = 1 r1,1=8, r1,2=8 ⇒ BO = {(1,1),(1,2)} ⇒ sottoproblemi F,G

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo C:

3

8 8

(70)

A

B C

(1,1) (1,3)

(4,2)

D E

(1,2) (1,3)

F G

(1,1) (1,2)

(71)

AO = {(1,3),(2,1),(2,2)} t(AO)=min{14+8, 11+4, 11+3} = 14, i* = 2 r2,1=11, r2,2=11 ⇒ BO = {(2,1),(2,2)} ⇒ sottoproblemi H,I

nodo D

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2 11 11

4 2 3 2

1 1 2

3

AO = {(1,2),(2,1),(2,3)} t(AO)=min{19+3,11+4, 11+8} = 15, i* = 2 r2,1=11, r2,3=11 ⇒ BO = {(2,1),(2,3)} ⇒ sottoproblemi J,K

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo E

1

11 11

3

8

(72)

A

B C

(1,1) (1,3)

(4,2)

D E

(1,2) (1,3)

F G

(1,1) (1,2)

H I

(2,1) (2,2)

J K

(2,1) (2,3)

(73)

AO = {(1,2),(2,3),(2,1)} t(AO) =min{19+3, 8+7, 19+4} = 15, i* = 2 r2,3=8, r2,1=19 ⇒ BO = {(2,3)} ⇒ sottoproblema L

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo F

3

8 8

11

1

AO = {(1,1),(2,2),(2,3)} t(AO) =min{11+11, 11+5, 8+7} = 15, i* = 2 r2,2=11, r2,3=8 ⇒ BO = {(2,2),(2,3)} ⇒ sottoproblemi M,N

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo G

3

8 8

2

3

(74)

A

B C

(1,1) (1,3)

(4,2)

D E

(1,2) (1,3)

F G

(1,1) (1,2)

H I J K L

(2,3)

M N

(2,2) (2,3)

(2,1) (2,2) (2,1) (2,3)

(75)

AO = {(1,3),(2,2),(3,1)} t(AO)=min{14+8, 15+5, 15+4} = 19, i* = 3 r3,1=15 ⇒ BO = {(3,1)} ⇒ sottoproblema O

nodo H

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2 11 11

4 2 3 2

1 1 2

1 3

4

4

AO = {(1,3),(2,1),(3,2)} t(AO)=min{14+8, 19+4, 14+5} = 19, i* = 3 r3,2=11 ⇒ BO = {(3,2)} ⇒ sottoproblema P

nodo I

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2 11 11

4 2 3 2

1 1 2

2 3

5

5

(76)

A

B C

(1,1) (1,3)

(4,2)

D E

(1,2) (1,3)

F G

(1,1) (1,2)

H I J K L

(2,3)

M N

(2,2) (2,3)

(2,1) (2,2) (2,1) (2,3)

O

(3,1)

P

(3,2)

(77)

AO = {(1,2),(3,1),(2,3)} t(AO)=min{19+3,15+4, 15+7} = 19, i* = 3 r3,1=15 ⇒ BO = {(3,1)} ⇒ sottoproblema R

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo J

1

11 11

3 1 8

4 4

AO = {(1,2),(2,1),(4,3)} t(AO)=min{19+3,15+4, 15+3} = 18, i* = 4 r2,3=15 ⇒ BO = {(4,3)} ⇒ sottoproblema S

4 2 3 2 1

1,1 2,1 3,1

1,2 3,2 z

s 2,2

1,3 2,3 4,3

0 0

0

11

8

8 3

4

5

7

6

3 4

4,2

nodo K

1

11 11

3

3 8 7

Riferimenti

Documenti correlati

Al di là delle aree estreme del danno, in cui in pratica il danno biologico non corrisponde o corrisponde pienamente alla perdita pressoché definitiva e totale

“danno biologico”, non v’è chi possa ancora negare che la logica sin qui ispiratrice di ogni assetto assicurativo deve essere propriamente rivista, svincolandosi

— area dell’educazione della fede comprensiva degli interventi educativi che hanno come fine specifico quello di aiutare i giovani ad incontrare e accogliere

Se l'utente ancora non dispone di una autorizzazione alla numerazione unitaria, quando seleziona &#34;SI” gli viene proposta una schermata attraverso cui

Inoltrata la richiesta, l’applicazione visualizza una pagina con il numero, la data e la tipologia di autorizzazione (Fig. 23b – Punto 1) è possibile visualizzare il file

- “Centro Velico Lucano” Policoro (MT) ( progetto “Accoglienza”) classi I Secondaria di Primo Grado - “EXPO Milano 2015- Lecco- Bergamo (4 giorni 3 pernottamenti) classi

Al Segretario di Dipartimento IRC della Uil Scuola tale mossa è sembrata un estremo tentativo di far ingoiare una pillola amara agli insegnanti di religione:

La seconda fase, il cuore del processo, è la gestione del ciclo di vita del bando per l'assegnazione di fondi per investimenti pubblici, successivi alla delibera regionale che