Professional Documents
Culture Documents
Pre-requisiti:
Classi di complessit
Programmazione Lineare (Intera)
Metodo branch-and-bound
Cammini minimi su grafi
Materiale didattico:
M. Pinedo, Scheduling (Systems, Models and Algorithms)
Prentice Hall
A. Agnetis, dispense http://www.dii.unisi.it/~agnetis/didattica
Trasparenti dalle lezioni http://www.di.univaq.it/~oil
Parte I:
Scheduling a macchina singola
Indice
problemi di scheduling
esempi
classificazione
Esempio
Silvia (S) e Francesca (F) giungono nello stesso
momento ad una macchina fotocopiatrice. F deve fare 1
fotocopia, S ne deve fare 100.
Il galateo imporrebbe a S di lasciar passare per prima F,
che ha un compito molto pi breve.
una buona idea?
S precede F F precede S
303 3
0 300 0 303
Attesa totale = 300 + 303 = 603 Attesa totale = 3 + 303 = 306
Esempio
S F
303
Attesa totale = 300 + 303 rf =
0 rf 300 = 603 rf
rf + 3
Attesa totale = 3 + 303 = 306
0 rf 303
Ricapitolando
303
S F
0 300
CPU scheduling
Attivit: programmi
Risorse: CPU
Vincoli: Capacit: al pi un programma in ciascun
intervallo per ciascuna CPU
Misure:
tempo massimo di attesa di un programma
tempo di completamento di tutti i programmi
ritardi nei processi urgenti
Scheduling dei velivoli in atterraggio
Attivit: atterraggi
Risorse: k piste
Vincoli:
Capacit: su ogni pista, al pi un atterraggio in un
certo istante
finestre temporali di atterraggio
separazione fra atterraggi consecutivi
Misura:
somma (pesata in base allimportanza) dei ritardi
rispetto allorario pubblicato
Ancora nella vita quotidiana
Aldo (A), Bruno (B), Carlo (C), Duilio (D) condividono un
appartamento e, ogni mattino, ricevono 4 giornali:
Financial Times (FT), Guardian (G), Daily Express (DE),
Sun (S).
Ognuno ha i propri gustiinizia la lettura ad una certa
ora, legge i giornali nella sua sequenza preferita e
(ciascuno) per un tempo prefissato:
Problema:
determinare in quale
A FT G B
sequenza ciascun
giornale accetta i
lettori in modo da
D S DE C minimizzare il tempo di
lettura totale.
Soluzioni
lettore inizio Sequenza giornali (min.)
Aldo 8.30 FT(60) G (30) DE (2) S(5)
Bruno 8.45 G(75) DE(3) FT(25) S(10)
Carlo 8.45 DE(5) G(15) FT(10) S(30)
Duilio 9.30 S(90) FT(1) G(1) DE(1)
n tempo
5 354 min
10 2 1017
giorni
In generale
m
Campo
1 2 m
job 1 2 1 2 1
pj 3 4 1 5 7
schedule ammissibile
Campo
prec: dato un grafo G = (N, A) diretto e aciclico che
rappresenta una relazione di precedenza fra job. Un job j
pu iniziare solo se tutti i suoi predecessori sono stati
completati
2 4
1
1 2 4 3 5
3 5
schedule non ammissibile
1 2
job 1 2 0 7 15
pj 7 8 C1= 7 C2= 15
dj 9 11 L1= 2 L2= 4
T1 = 0 T2 = 4
U1= 0 U2= 1
Campo : funzioni obiettivo
job 1 2
wj 2 3
pj 7 8
dj 9 11
1 2
0 7 15
Lmax= 4 wjTj = 12
wjCj = 59 Uj = 1
Sequenze e schedule
1 10
job 1 2 3 4 5 6 7 8 9 10
3
pj 7 6 6 1 2 1 1 7 7 14
5 8
Soluzione ottima:
M2 1 2 8 9
M1 46 5 7 3 10
27
0 10 20 30
fermo macchina forzato
1.1 Scheduling a macchina singola
i precede j t j ti + pi valgono in
j precede i ti t j + p j alternativa !!
1 se i precede j
yij =
0 se j precede i
Formulazione disgiuntiva (PLM)
i precede j yij = 1 t j ti + pi
j precede i yij = 0 ti t j + p j
Formulazione disgiuntiva
(1 yij )M + t j ti pi i, j J
yijM + ti t j pj i, j J
tj 0 j J
yij { 0,1} i , j J
min w (t
j J
j i + pi ) = w t +w p
j J
j j
j J
j j
(1 yij )M + t j ti pi i, j J
yijM + ti t j pj i, j J
tj 0 j J
yij { 0,1} i , j J
n2+n variabili
2n2 vincoli
Esercizio
job 1 2 3
pj 3 1 2
rj 0 2 0
wj 3 2 4
Problemi minsum: 1//j wjTj
min w
j J
j max{ t j + p j d j ,0 }
(1 yij )M + t j ti pi i , j J
yijM + ti t j pj i, j J
tj 0 j J
yij { 0,1} i , j J
RICHIAMO: Funzioni convesse lineari a tratti
c 3x + d3
max (c iT x + di )
c1x + d1 i =1,...,m
x
z c iT x + di i = 1,..., m
Ax b Ax b
c iT x + di z i = 1,..., m
Formulazione PLM
max{ t j + p j d j ,0 }
tj
0 dj pj
min w fj j
fj 0
Formulazione PLM
min w f j j
f j t j pj dj , j J
(1 yij )M + t j ti pi i , j J
yijM + ti t j pj i, j J
tj 0 j J
yij { 0,1} i , j J
fj 0
Problemi min-max: Lmax
min f
f t j pj dj , j J
(1 yij )M + t j ti pi i , j J
yijM + ti t j pj i, j J
tj 0 j J
yij { 0,1} i , j J
f 0
Formulazioni Time-indexed
Orizzonte temporale [0,T] discretizzato in periodi di durata
unitaria. Il periodo t concide con lintervallo di [t 1, t]
T p j +1
x jt = 1, j = 1,..., n
t =1
j
j
j
j
1 2 3 4 5 Tpj
Formulazioni Time-indexed
j
j
j
t
quindi:
n min( t ,T p j + 1 )
j =1
x js
s = max( 1 , t p j + 1 )
1, t = 1,..., T
Formulazione PL(0-1)
n T p j +1
min
j =1
c jt x jt
t =1
cjt costo di assegnazione
del job j allistante t
T p j +1
x jt = 1, j = 1,..., n
t =1
n min( t ,T p j + 1 )
j =1
x js
s = max( 1 , t p j + 1 )
1, t = 1,..., T
nT variabili; n + T vincoli
Funzioni obiettivo (min-sum)
t t+pj1
tardiness totale:
c jt = w j max{ 0, t + p j d j 1}
n T p j +1 n
w
j =1 t =1
j max( 0, t + p j d j 1)x jt = w T
j =1
j j
Esercizio
job 1 2 3
pj 3 1 2
rj 0 2 0
wj 3 2 4
Vincoli di precedenza
j
i
t
quindi:
t + pi t
x
s =1
js x
r =1
ir , t = 1,..., T pi p j + 1
1.2 Tempo totale pesato di completamento
w jC j
nondelay schedule
Sussiste il seguente
S j k
t+pj
S k j
t+pk
t
t+pj+pk
Dimostrazione
S j k
S k j
t t+pj+pk
(t+pj)wj + (t+pj+pk)wk
mentre in S' :
(t+pk)wk + (t+pk+pj)wj
Dimostrazione
in S] (t+pj)wj + (t+pj+pk)wk
in S] pjwk
in S'] pkwj
Lemma 1.2 Se k n
wj wj
j =1 j =k +1
k
> n
pj pj
j =1 j =k +1
n n n
wk +1pk +1 + K+ wn pj + w1( pj + p1) + K+ wk pj
j =k +1 j =k +1 j =1
Semplificando
S1
k k n k
w k +1 p j + K + w n p j = ( w j )( p j )
j =1 j =1 j = k +1 j =1
S2
n n k n
w1 p j + K + wk p j = ( w j )( p j )
j =k +1 j =k +1 j =1 j =k +1
w j w j n k k n
j =1
k
> j = k +1
n
( w )( p j j ) < ( w j )( p j )
p p
j = k +1 j =1 j =1 j = k +1
j j
j =1 j = k +1
cio, S1migliore di S2
Coefficiente di una catena
1 2 3 4
l w
max j =1 j
(1,K,4) = l = , , ,
10 14 31 39
1 l 4 p 3 7 9 15
j
j =1
l* = 3
Propriet del coefficiente
l* u
wj wj
j =u +1 j =1
l*
> u
pj pj
j =u +1 j =1
Dimostrazione
l* u
Per definizione: wj wj
j =1 j =1
l*
> u
pj pj
j =1 j =1
da cui:
l* l* u u
p1 w j + K + pu w j > p1 w j + K + pl * w j
j =1 j =1 j =1 j =1
l* l* u u
p1 w j + K + pu w j > pu +1 w j + K + pl * w j
j =u +1 j =u +1 j =1 j =1
u l* l* u
( p j )( w j ) > ( p j )( w j )
j =1 j = u +1 j = u +1 j =1
Propriet dello schedule ottimo
(S) 1,,u,v,u+1,l*
Propriet dello schedule ottimo
(S) 1,,u,v,u+1,l*.
Consideriamo le sottosequenze:
(S') v,1,,u,u+1,,l*
(S'') 1,,u,u+1,l*,v
wv w1 + w2 + K + wu
<
pv p1 + p2 + K + pu
wv wu +1 + wu + 2 + K + wl *
>
pv pu +1 + pu + 2 + K + pl *
Dimostrazione
Per la Propriet 1.4 risulta inoltre:
wu +1 + wu + 2 + K + wl * w1 + w2 + K + wu
>
pu +1 + pu + 2 + K + pl * p1 + p2 + K + pu
wv wu +1 + wu +2 + K + wl * w1 + w2 + K + wu
> >
pv pu +1 + pu +2 + K + pl * p1 + p2 + K + pu
Algoritmo 1.6
In ogni istante in cui la macchina libera, seleziona fra le
rimanenti catene quella con il massimo coefficiente e la
processa senza interruzione fino al job che definisce
(incluso)
1 2 3 4
5 6 7
step1.
(1,2,3,4) = (6+18)/(3+6) = 24/9, l*=2
1 2
Esempio
job 1 2 3 4 5 6 7 3 4
wj 6 18 12 8 8 17 18
pj 3 6 6 5 4 8 10 5 6 7
step2.
(3,4) = 12/6, l*=3
1 2 5 6
Esempio
job 1 2 3 4 5 6 7 3 4
wj 6 18 12 8 8 17 18
pj 3 6 6 5 4 8 10 7
step3.
(3,4) = 12/6, l*=3
1 2 5 6 3
Esempio
job 1 2 3 4 5 6 7 4
wj 6 18 12 8 8 17 18
pj 3 6 6 5 4 8 10 7
step4.
(4) = 8/5, l*=4
(7) = 18/10, l*=7
1 2 5 6 3 7 4
Release date e preemption
(i) S
(ii) x S risulta w(x) z(x)
Rilassamento preemptivo
job 1 2 3 4 5
wj 1 4 3 5 3
pj 2 3 3 2 1
rj 0 2 3 1 4
15 28 33
1 4 4 2 5 2 2 1 3 3 3
15 8
ZPWSPT=99
PWSPT non ottima per
1/rj ,prmp / wj Cj
2 108
1 1 2 2 2 2 2 2 2 2 2 2 3 3
job 1 2 3
112
wj 1 9 8 ZPWSPT=222
pj 2 10 2
rj 0 1 11
99 104
1 2 2 2 2 2 2 2 2 2 2 3 3 1
14
ZOPT=217
Complessit
Si ha il seguente:
Lemma 1.6
La regola SRPT ottima per 1/rj, prmp/Cj
S j k
S k
t t'
Dimostrazione
S j k
S k
t t'
i job diversi da j e k non subiscono alcuna variazione;
primo caso: Ck(S ) > Cj(S )
Essendo pj(t) > pk(t) si ha che Ck(S ) Cj(S);
inoltre, per costruzione, Cj(S ) = Ck(S );
Quindi: Ck(S ) + Cj(S ) Ck(S ) + Cj(S )
Dimostrazione
S j k
S k
t t'
Ck(S ) Ck(S);
Cj(S ) = Cj(S);
Quindi: Ck(S) + Cj(S ) Ck(S) + Cj(S )
Esercizi
Esercizio 1
z(SPT) = 12
1 2
job 1 2 3 4 8
rj 3 0
pj 1 4
1 z(OPT) = 9
2
1 4 5 5
Esercizio 2
Dimostrare che la regola WSPT non ottima per il
problema 1/brkdwn/ wj Cj
z(WSPT) = 85
1 2
job 1 2 1 2 3 4 5
wj 10 15
10 75
pj 1 2
1 z(OPT) = 70
2
1 2 3 4 5
30 40
Esercizio 3
Dimostrare o confutare che la regola SPT ottima per il
problema 1/brkdwn/ Cj
job 1 2 3
pj 3 2 4
z(SPT) = 22
2 1 3
2 4 5 8 12
z(OPT) = 21
3 2 1
4 5 7 10
1.3 Problemi min-max
(Massima Lateness Lmax)
1/prec/hmax
Esempi:
hj(Cj)= Cj dj = Lj hmax = Lmax
hj(Cj) = max (0,Lj) = Tj hmax = Tmax
Inizializzazione:
J = , Jc = {1, , n}, J insieme dei job privi di successori
h j * ( p j ) < h j ** ( p j )
j J c j J c
S j* j** J
hj * hj *
j* j** j** j*
S S
hj * hj *
j* j** j** j*
S S
h j * ( p j ) < h j ** ( p j ) costo di j* in S inferiore al costo di
c c
jJ jJ
j** in S. Quindi S meglio di S, contraddizione.
Esempio
Gp
job 1 2 3 4
pj 3 4 2 6
(C4/5)
4 2
hj 10 1+C2 1.5 C3 2
Iter 1.
p j = 15
j J c
J
job 1 2 3
Jc {1,2,3,4}
costo 10 16 22.5
J {1,2,3}
1
0 12 15
Esempio
job 1 2 3 4 Gp
pj 3 4 2 6
hj 10 1+C2 1.5 C3 2 (C4/5) 4 2
Iter 2.
p j = 12
j J c
J {1} job 2 3
Jc {2, 3,4} costo 13 18
J {2,3}
2 1
0 8 12 15
Esempio
job 1 2 3 4
pj 3 4 2 6
hj 10 1+C2 1.5 C3 2 (C4/5)
Iter 3. pj = 8
j J c
J {1,2}
job 3 4
Jc {3,4}
costo 12 3.03
J {3,4}
S* 3 4 2 1
0 2 8 12 15
h j (C j ) = C j d j
min (h j ( c p j )) = max (d j )
j J j J j J
Controesempio:
job 1 2 3
pj 3 4 2
dj 6 4 5
2 3 1 4
0 4 6 9
3 1 2 1
0 2 5 9
1/rj/Lmax: complessit
r1 d1 r2 d2 r3 d3 rt 2 dt-2 rt1 dt 1
b
p = a
j =t
j
j =t
j t +1 = tb
A={27,27,29,33,33,33,35,35,35,37,37,39}
b=100
1/rj,prmp/Lmax
S k j
t t+1 t t + 1
dk > dj
S j k
t t+1 t t +1
Il contributo dei job diversi da j e k non cambia
PEDD - correttezza
S k j
t t+1 t t + 1
dk > dj
S j k
t t+1 t t + 1
Definiamo Cj e Ck i tempi di completamento di j e k nello
schedule S.
Dimostriamo che Lmax(S ) Lmax(S). Tre casi:
1. C j > t + 1, Ck > t + 1
2. C j = t + 1, Ck > t + 1
3. C j t + 1, Ck < t + 1
PEDD - correttezza
S k j
t t+1 t t + 1
S j k
t t+1 t t + 1
caso 2. C j = t + 1, Ck > t + 1
S k j
C j = t + 1
S j k
t t+1 t t + 1
caso 3. C j t + 1, Ck < t + 1
S k j
S j k
t t+1 t t + 1
Il tempo di completamento di k aumenta fino a t+1.
La lateness di k in S , quindi, pari a:
dk>dj t + 1 dk < t + 1 d j C j d j = L j
ed quindi inferiore alla lateness di j in S
1/rj/Lmax
Algoritmo branch-and-bound
Branch-and-bound: nozioni di base
z* = min {z(x) : x S}
S ={x1, , xm}
Enumerazione totale
Algoritmo banale:
Si S per i = 1, , p.
i=1, ..., p Si = S
sia zi* il valore ottimo del sottoproblema (Si, c), i = 1,, p.
Allora,
Nodo radice
Esempio: S
S = {0,1}3 x1=0 x1=1
S0 S1
Si
Limitazioni inferiori di zi*
Proposizione 1. Sia S = S1 S2 Sp una
decomposizione della regione ammissibile S in p insiemi.
Allora,
zLB = mini ziLB un lower bound per z*
S
z LB= 5
S1 S2 S3
S
z UB= 9
S1 S2 S3
Se
LB
zi
LB UB
zi z z UB
z*
1, 2 - - 1, n - - n, 1 - - n, n-1 - -
Livello n : n! sottoproblemi
Vincoli di branching: schedule parziali
Un sottoproblema S(k1) al livello k1 contiene
linsieme delle schedule in cui le prime k1 posizioni
sono assegnate
j1 , , jk1 jk j1 , , jk1 jk
0 t 0 t
Calcolo di ziLB
j1 , , jk1
j1 , , jk1 jk j1 , , jk1 jk
j1 , , jk1
j1 , , jk-1 jk
0 t rjk
STOP
Test: L = ? Caso 2: potatura per Ottimalit
zUB Se la soluzione ottima xiUB di RPi
ottima anche per Pi, allora elimina Si.
job 1 2 3 4 1
pj 4 2 6 5 2
rj 0 1 3 5 3
dj 8 12 11 10 4
nodo radice:
-4 0 4 5
1 3 4 3 2
4 5 10 15 17
zLB(----) = 5
Branching
job 1 2 3 4 ottimo corrente: (1,2,3,4)
pj 4 2 6 5
z =7
rj 0 1 3 5
dj 8 12 11 10
---- 5
r3 > r2 + p2 r4 > r2 + p2
Eliminati per dominanza
Valutazione di (1 - - -)
job 1 2 3 4
pj 4 2 6 5
rj 0 1 3 5
dj 8 12 11 10
-4 0 4 5
1 3 4 3 2
4 5 10 15 17
zLB(1,---) = 5
Valutazione di (1 - - -)
-4 0 4 5
1 3 4 3 2
4 5 10 15 17
zLB(1,---) = 5
---- 5 7
5 1---
2 ---
job 1 2 3 4
pj 4 2 6 5
rj 0 1 3 5
dj 8 12 11 10
-4 -6 -1 6
1 2 4 3
4 6 11 17
zLB(1,2--) = 6 Soluzione ammissibile z =6
Valutazione di (1 2 - -)
-4 -6 -1 6
1 2 4 3
4 6 11 17
zLB(1,2--) = 6
5 1---
2 ---
6 6
1243 13-- 14--
Valutazione di (1 3 - -)
job 1 2 3 4
pj 4 2 6 5
rj 0 1 3 5
dj 8 12 11 10
-4 -1 5 5
1 3 4 2
4 10 15 17
zLB(1,3--) = 5 Soluzione ammissibile z =5
Arresto
6 5
---- 5
5 1---
2 ---
6 6 5 5
regola di branching
rilassamento
regole di dominanza
strategia di visita dellalbero di enumerazione
(selezione del nuovo sottoproblema da valutare)
euristiche (in particolare al nodo radice)
Esercizio
Calcolare la soluzione ottima del seguente problema
1/prec/wjCj
Regola di selezione del sottoproblema FIFO (visita in
ampiezza)
job 1 2 3 4 5
wj 1 4 1 6 3
pj 3 7 1 5 4
1 2 3
Grafo delle precedenze
4 5
Valutazione di (-, -, -, -, -)
1 2 3
(1,2,3*)=max(1/3,5/10,6/11)=6/11
4 5 1 2 3 zLB= 165
5 9 12 19 20
Soluzione del rilassamento chain: non ammissibile (5 precede 2)
1 2 3 4 5
3 10 11 16 20
zUB= 210
1---- 4----
1 4 5 2 3
3 8 12 19 20
12--- 14---
Lista dei problemi candidati: {(1, 2, - - -), (1, 4, - - -), (4, - - -)}
Valutazione di (4, -, -, -, -)
1 2 3
4 5 1 2 3
5 9 12 19 20
zUB= 210
----- zLB = 165
12--- 14---
41---
Lista dei problemi candidati: {(1, 2, - - -), (1, 4, - - -), (4, 1 - -)}
Valutazione di (1, 2, -, -, -)
3
(3) = max(1/1)= 1
(4*,5) = max(6/5,9/9)=6/5
4 5
1 2 4 3 5
3 10 15 16 20
Valutazione di (1, 4, 2, -, -)
1 4 2 3 5
3 8 15 16 20
Valutazione di (4, 1, 2, -, -)
3 5
(3) = max(1/1)= 1 (5) =3/4
4 1 2 3 5
3 8 15 16 20
4---- L= 165
1----
41---
12--- 14---
12--- 14---
41---
123-- 124--
142-- 412--
12435 ottima
12345 41235 41253
12453 14253 14253 z*= 174
scelta del sottoproblema: least lower bound
-----
# problemi valutati = 5 (!)
12--- 14---
41---
123-- 124--
142-- 412--
12435 ottima
12345 41235 41253
12453 14253 14253 z*= 174
Gerarchia di rilassamenti
Schedule ammissibili z
(risp. alle precedenze)
z*
LB2
schedule non ammissibili
rimozione archi
LB1
Infatti, Lj = Cj dj
quindi Lj = Cj dj
-1
-1 0 -1
1 2 Tmax=Lmax=0 2 1 Lmax=-1
1 6 5 6
Osservazione
Sia P un generico problema e RP un suo rilassamento.
se P ed RP hanno la stessa funzione obiettivo, allora
qualunque soluzione ottima di RP che sia anche
ammissibile per P ottima per P;
al contrario, se P ed RP hanno funzioni obiettivo diverse
questo non vero: consideriamo la seguente istanza di
1//wjCj ed il suo rilassamento 1//Cj.
1 30 20 3
job 1 2
1 2 2 1
pj 1 2
1 3 2 3
wj 1 10
C1+C2=4* C1+C2=5
w1C1+w2C2=31 w1C1+w2C2=23*
Numero di tardy job
1//Uj
Struttura delle soluzioni ottime
ogni schedule ottimo composto da un insieme di job
che arrivano in tempo e da un secondo insieme di job in
ritardo (rispetto alle proprie due date)
Inizializzazione:
J = , Jd = , Jc = {1, , n}.
Repeat:
1. Sia j* il job in Jc con la minima due date:
J:=J {j*}; Jc:=Jc \{j*}
Due casi:
iter 1. 1
0 7
iter 2. 1 2
0 7 15
iter 3. 1 2 3
0 7 15 19
1 3
0 7 11
Esempio
job 1 2 3 4 5 iter 4.
pj 7 8 4 6 6
1 3 4
dj 9 17 18 19 21
0 7 11 17
iter 5. 1 3 4 5
0 7 11 17 23
3 4 5
0 4 10 16
Soluzione 3 4 5 1 2
1.4 Problemi min-sum con due date
(Tardiness totale Tj)
Problema dello zaino binario
Zaino di capacit C +
Insieme N = {1,,n} di oggetti. Per ogni oggetto:
ingombro aj + profitto pj +
Problema: scegliere un insieme di oggetti di profitto
massimo tale che lingombro totale non ecceda la capacit.
P(i1,ai)
+ pi
P(i1, ) P(i, )
i1 i
P(i1,ai)
+ pi
P(i1, ) P(i, )
- - - -
j1- - - j2 - - -
j1 j2 - - j2 j1 - -
Ereditariet della struttura ottima
Consideriamo un problema del tipo:
1//j=1,,n hj(Cj)
j1 j2 jK jn
Ereditariet della struttura ottima
S j1 j2 jK jn
h
k =1
jk (C jk ) = h
k =1
jk (C jk ) + h
k = K +1
jk (C jk ) = A + B
z (J ) = min z (J \ { j }),h j pk
j J
k J
Metodo di Held e Karp
z (J ) = min z (J \ { j }),h j pk
j J
k J
z({j1,j2}) =
= min(z({j1})+(pj1+pj2) dj2, z({j2})+(pj1+pj2) dj1)
last 1 2 1 3 1 4 2 3 2 4 3 4
Tj(C(J)) 0 5 4 2 1 0 7 0 4 0 1 1
z({J\{j}})
+Tj(C(J)) 0 5 4 2 1 0 7 0 4 0 1 1
min * * * * * *
z(J) 0 2 0 0 0 1
Esempio: insiemi di tre elementi
Soluzioni per i quattro insiemi di tre elementi. Esempio:
J={1, 2, 3}, C(J) = p1+p2+p3
z({j1,j2,j3})=min(z({j1,j2})+C(J)dj3,
z({j1,j3})+C(J)dj2,z({j2,j3})+C(J)dj1)
Last 1 2 3 1 2 4 1 3 4 2 3 4
Tj(C(J)) 10 15 8 7 12 5 11 9 9 14 7 7
z({J\{j}}+Tj(C(J))) 10 17 8 7 12 5 12 9 11 15 7 7
min * * * *
z(J) 8 5 9 7
Esempio: insieme di quattro elementi
J {1,2,3,4}
C(J) 31
Last 1 2 3 4
Tj(C(J)) 17 22 15 15
z({J\{j}}+Tj(C(j))) 24 31 20 23
Min *
z(J) 20
n n n n
+ + +K+
1 2 3 n
O(2n)
Spazio: 2n * da memorizzare.
DP vs. branch&bound
----
1- - -
3 ---
4 ---
12-- 14--
31--
34--
13-- 32--
1423 1432 41--
2--- 43--
42--
1324 1342
21-- 24--
23--
2134 2413
4312
2431
2143 2341 4321
ottima 2314
Applicabilit I
Il principio di ereditariet della struttura ottima si basa sul fatto
che un risequenziamento dei job (j1,,jK) non cambia il
termine B.
S j1 j2 jK jn
n K n
h
k =1
jk (C jk ) = h
k =1
jk (C jk ) + h
k = K +1
jk (C jk ) = A + B
0 1 0 0
1 2 3 4
Tj = 1
T1+T2=1
0 5 10 15 20
0 0 1 1
Tj = 2
2 1 3 4
T1+T2=0
1 6 11 16 21
Applicabilit II
Il metodo di Held e Karp si applica anche a problemi
min-max.
Ad esempio se consideriamo 1//Lmax la ricorsione
diventa:
z (J ) = min max z (J \ { j }), p j d j
j J
j J
1//Tj
Tardiness totale
algoritmo pseudo-polinomiale
Struttura della sequenza ottima
1,}
{1,2,,k {k}
dk = max(dk ,Ck' )
Lemma 1.11
Ogni sequenza ottima per I2 ottima per I1
Dimostrazione. Siano:
I1 I2
dk Ck '
dk
Ak = Ck'
Dimostrazione III: consideriamo S''
2. V'(S ) = V (S ) + Bk
Bk = Tk'Tk=max(0,Ckdk)max(0,CkCk')
2 casi:
Bk = max(0, Ck dk ) se Ck Ck'
Bk = CkdkCk +Ck'=Ck'dk se Ck > Ck'
quindi:
Bk = max(0, min(Ck, Ck) dk )
Dimostrazione IV
1. V'(S') = V (S') + Ak
2. V'(S) = V (S) + Bk
S ] Ak = Ck' dk
S''] Bk = max(0, min(Ck, Ck ) dk )
quindi: Ak Bk
1,}
{1,2,,k {k}
Ck max(Ck',dk)
Dimostrazione I
Affermazione 1. Si pu assumere che k non sia preceduto in
S'' da alcun job j con
dj max(Ck',dk) Ck"
Infatti, lo swap:
j k
Ck dj
k j
Ck dj
Affermazione 2.
il job k in I2 ha una due date pari a max(Ck',dk). Quindi,
per il Lemma 1.10, deve essere preceduto in S da tutti i
job j con
dj max(Ck',dk).
dk + max(Ck',dk)
tempo di completamento di k
tempo di completamento di k
Struttura del sottoproblema
Definiamo
J(j, l, k) { j, j + 1, , l 1, l}
condizioni al contorno:
V(, t) = 0,
V({j}, t) = max (0, t + pj dj)
Ricorsione
in cui:
pk = max (pr| r J(j, l, s))
valore ottimo:
V({1, , n}, 0)
Esempio
job 1' 2' 3 4 job 1 2 3 4
pj 8 6 10 7 pj 6 8 10 7
dj 14 9 16 16 dj 9 14 16 16
=0 1,2 3 4
24
14 31
21
=1 1,2,4 3
Esempio
job 1 2 3 4
pj 6 8 10 7
dj 9 14 16 16
= 0,1 1 2 4
6 14
=2 1,4 2
21
Esempio
job 1 2 3 4
pj 6 8 10 7
dj 9 14 16 16
= 0 23,
* = 1 20) = 20 {1, 2, 4} 3
1//wjTj
1// wjTj
Variabili decisionali:
xjk=1 se una unit del job j eseguita nellintervallo
[k 1,k] e 0 altrimenti
1/prmp/ wjTj
[0,1]
job j intervalli
xjk
[k1, k]
[Cmax1, Cmax]
C max
x jk = p j , j = 1,K,n
k =1
n
x jk = 1,k = 1,K,C max
j =1
1/prmp/ wjTj: formulazione PL0-1
C max
x
k =1
jk = pj, j = 1,K,n
x
j =1
jk = 1, k = 1,K,C max
x
i =1
ij = rj j {1,K, t }
x ij 0, int ere
Coefficienti cjk
n C max
w jT j c jk x jk
j =1 k =1
l
c jk w j max(l d j , 0)
k =l p j +1
Cmax Cj
c jk x jk = c jk w j max(C j d j , 0)
k =1 k =C j p j +1
Cjpj+1 dj Cj
0, per k d j
Possibile scelta: c jk =
w j , altrimenti