Pre-requisiti:
Classi di complessità
Programmazione Lineare (Intera)
Sistemi Organizzativi
docente: Stefano Smriglio stefano.smriglio@univaq.it
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
1. Introduzione: esempi, elementi di un problema di scheduling, notazione. Formulazioni PLM, PLB 2. Problemi a macchina singola
• 1//ΣΣΣΣwjCj algoritmo WSPT
• 1/chain/ΣΣΣΣw C algoritmo polinomiale
Indice
• 1/chain/ΣΣΣΣwjCj algoritmo polinomiale
• 1/prec/hmax algoritmo di Lawler
• 1/rj,prmp/Lmax regola preemptive EDD
• 1/rj/Lmax complessità, branch-and-bound
• 1//ΣΣΣΣUj algoritmo di Moore
• 1//ΣΣΣΣhj Programmazione dinamica
• 1//ΣΣΣΣTj algoritmo pseudo-polinomiale
• 1//ΣΣΣΣwjTj branch-and-bound
Introduzione
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?
Analisi. Supponiamo che l’esecuzione di una fotocopia richieda 3 secondi. Due casi:
S
Attesa totale = 300 + 303 = 603 F
precede
0 300
303 S
Attesa totale = 3 + 303 = 306 F precede
0 3
303
Esempio
E se Francesca F arrivasse all’istante rf?
Attesa totale = 300 + 303 – rf =
= 603 – r
0 300
S F 303
r = 603 – rf
0 300
0 303
rf
Di nuovo, il galateo imporrebbe a Silvia di interrompere le proprie copie in favore di Francesca:
rf
Attesa totale = 3 + 303 = 306 rf + 3
Ricapitolando
• Attività: 2 blocchi di fotocopie (di durata nota)
• Risorse: una macchina fotocopiatrice
• Vincoli:
Capacità: al più una fotocopia alla volta
(caso 2) F non può iniziare prima dell’istante rf
(caso 2) F non può iniziare prima dell’istante rf
• Misura: attesa complessiva presso la macchina fotocopiatrice
• Rappresentazione di una soluzione: diagramma di Gantt
S
0 300
303F
CPU scheduling
• Il sistema operativo disciplina l’accesso alla CPU dei diversi programmi di calcolo.
• tecnica time-sharing (Linux): il tempo di CPU è suddiviso in intervalli (definiti dal timer interrupt) e, in ogni intervallo, è possibile eseguire al più un processo.
possibile eseguire al più un processo.
• diversi obiettivi: rispondere prontamente a ciascun processo, evitare interruzioni prolungate, evitare ritardi nei processi più urgenti.
• Linux attribuisce dinamicamente una priorità ai processi.
Ad es., la priorità è proporzionale all’attesa del processo
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 massimo di attesa di un programma
• tempo di completamento di tutti i programmi
• ritardi nei processi “urgenti”
Scheduling dei velivoli in atterraggio
• La torre di controllo (ATC) ha il compito di assegnare una pista ed un istante di atterraggio a ciascun velivolo nel proprio campo radar (area terminale)
• Ogni velivolo ha una finestra temporale [r,s] definita da due istanti di atterraggio estremi, a seconda che il due istanti di atterraggio estremi, a seconda che il velivolo viaggi:
- alla sua massima velocità (istante r)
- in modalità di minimo consumo (istante s)
• Un velivolo in atterraggio impegna la pista per un tempo noto ma genera turbolenza: quello successivo deve attendere un tempo di “separazione” (funzione delle dimensioni dei velivoli)
Scheduling dei velivoli in atterraggio
• Ad ogni velivolo è associato un orario di atterraggio predeterminato (e pubblicato nelle tabelle)
• “L’importanza” di un velivolo dipende da fattori quali la dimensione, la compagnia, la distanza percorsa…
• Attività: atterraggi
• Risorse: k piste
• 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 all’importanza) dei ritardi rispetto all’orario 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 gusti…inizia la lettura ad una certa ora, legge i giornali nella sua sequenza preferita e ora, legge i giornali nella sua sequenza preferita e (ciascuno) per un tempo prefissato:
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) lettore inizio Sequenza giornali (min.)
inoltre, ciascun lettore:
rilascia un giornale solo dopo averlo letto completamente.
termina la lettura di tutti i giornali prima di uscire.
Ancora nella vita quotidiana…
infine, i quattro lettori attendono che tutti abbiano terminato di leggere prima di uscire di casa
Problema:
A che ora A, B, C, D riescono (finalmente!) ad uscire?
Interpretazione
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) lettore inizio Sequenza giornali (min.)
A G B
S
Duilio 9.30 S(90) FT(1) G(1) DE(1)
DE FT
D C
determinare in quale sequenza ciascun giornale “accetta” i lettori in modo da minimizzare il tempo di lettura totale.
Soluzioni
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) lettore inizio Sequenza giornali (min.)
una possibile soluzione:
FT A D C B
G B C A D
DE C B A D
S D A C B
giornale Sequenza lettori
Duilio 9.30 S(90) FT(1) G(1) DE(1)
ESERCIZIO:
valutare l’ora in cui A,B,C e D escono di casa
C
FT A B
ESERCIZIO:
data la soluzione in tabella valutare l’ora in cui A,B,C e D escono di casa
FT A D C B
G B C A D
DE C B A D
S D A C B
giornale Sequenza lettori
D C
FT A
G
DE
S
8.30 9.09.00 10.00 11.00
11.51
B
B C A
D D C
B A
A
C B D
Enumerazione totale
• Il numero di soluzioni è (4!)4 = 331.776
• per un problema con n lettori e m giornali diventa (n!)m.
• esaminando 10.000 soluzioni al secondo (4 giornali e n
• esaminando 10.000 soluzioni al secondo (4 giornali e n lettori):
5 354 min
10 2 · 1017 giorni
n tempo
Elementi di un problema di scheduling:
job: attività da svolgere – insieme J = {1,…,n}
In generale
Con il termine scheduling si indica l’allocazione temporale di risorse scarse ad attività
job: attività da svolgere – insieme J = {1,…,n}
Fotocopia, esecuzione di un programma di calcolo Un job può rappresentare una singola attività o un insieme di attività (task) tecnologicamente legate
macchine: risorse che eseguono le attività – insieme M={1,…,m}
Fotocopiatrice, CPU, giornali
• tempo di processamento pij durata del processamento del job j sulla macchina i
• release date rj tempo in cui j arriva nel sistema, rendendosi disponibile al processamento
Attributi dei job
rendendosi disponibile al processamento
• due date dj tempo entro il quale si desidera che il job j sia completato (data di consegna)
• peso wj indica l’importanza del job j
Classificazione
Il processamento di un job su una macchina è detto operazione.
I problemi di scheduling si classificano in base alle caratteristiche dei task e all’architettura delle macchine
Notazione a tre campi: αααα/βββ/γγγγ:β α
α α
α descrive il sistema di macchine
β β β
β rappresenta vincoli e modalità di processamento (0, 1 o più componenti)
γγγγ indica l’obiettivo macchine
Campo α
Macchina singola (1) : ciascun job richiede una singola operazione da eseguirsi sull’unica macchina disponibile
Macchine identiche parallele (Pm) : ciascun job richiede una singola operazione da eseguirsi su una qualunque delle m macchine identiche.
1 2
m
Campo α
Flow shop (Fm) : Ciascun job è composto di m task, ciscuno da eseguirsi su una macchina secondo una sequenza fissata, uguale per tutti i job.
1 2 m
Job shop (Jm) : Ciascun job j è composto di m(j) task, ciscuno da eseguirsi su una macchina secondo una sequenza fissata, dipendente da j
Campo β
• Release dates (rj): il job j non può iniziare il processamento prima dell’istante rj
• Preemption (prmp): è ammesso interrompere un’operazione per iniziarne una nuova. Il processamento eseguito prima dell’interruzione non va perso: quando eseguito prima dell’interruzione non va perso: quando l’operazione viene ripresa, essa richiede solo il tempo rimanente di processamento
1 2 1
schedule ammissibile
job 1 2
pj 3 4 1 5 7
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
3 1
2 4
5
2
1 4 3 5
schedule non ammissibile
chain: caso speciale in cui ogni componente connessa del grafo è un cammino orientato (catena)
Campo β
•Tempi di set-up (sjk): tempo richiesto per il riattrezzaggio delle macchine fra i job j e k. Se dipende dalla macchina i, si esprime con sijk
• breakdown (brkdwn): le macchine non sono sempre
• breakdown (brkdwn): le macchine non sono sempre disponibili, ma hanno periodi fissati di interruzione del servizio
Definizioni
Cj tempo di completamento del job j Lj = Cj–dj lateness del job j
Tj = max(Lj,0) tardiness del job j Uj = 1 se Cj>dj e 0 altrimenti
job 1 2
pj 7 8 dj 9 11
2 1
0 7 15
C1= 7 L1= −2
T1 = 0 U1= 0
C2= 15 L2= 4 T2 = 4
U2= 1
Campo γ: funzioni obiettivo
• Makespan (Cmax) : max (C1, …, Cn) tempo di completamento dell’ultimo job
• Massima Lateness (Lmax) : Lmax =max (L1, …, Ln)
• Tempo totale pesato di completamento (ΣΣΣΣwjCj)
• Tempo totale pesato di completamento (ΣΣΣΣwjCj) o (weighted flow-time)
• Tardiness totale pesata (ΣΣΣΣwjTj)
• Numero di tardy job (ΣΣΣΣUj)
tutte funzioni obiettivo regolari cioè non-decrescenti in C1, …, Cn
Esempio
job 1 2
wj 2 3 pj 7 8 dj 9 11
2 1
0 7 15
Lmax= 4
ΣwjCj = 59
ΣwjTj = 12
ΣUj = 1
dj 9 11
Sequenze e schedule
• Si definisce sequenza una permutazione dei job che definisce l’ordine con cui i job sono processati su una certa macchina
• Si definisce schedule un assegnamento di un istante di inizio a ciascuno dei task di ogni job (se prmp, istanti di inizio di ciascuna delle parti in cui viene suddiviso un task)
Schedule nondelay
uno schedule ammissibile è detto nondelay se nessuna macchina è ferma quando esiste un’operazione disponibile al processamento
In molti casi (sempre se prmp) le soluzioni ottime sono nondelay. Ciò non è vero in generale
E
SERCIZIO: schedule nondelay
dato il seguente problema P2/prec/Cmax
1
2
10
job 1 2 3 4 5 6 7 8 9 10
3
4
5 8
6 7 9
job 1 2 3 4 5 6 7 8 9 10
pj 7 6 6 1 2 1 1 7 7 14
costruire uno schedule nondelay e verificarne l’ottimalità
1 2 9 5
46 7 8 3 10
32 M1
M2
Soluzione nondelay:
E
SERCIZIO: schedule nondelay
0 10 20 30
0 10 20 30
1 2 9
5 4 6 7
8
3 10
27
M1 M2
fermo macchina “forzato”
Soluzione ottima:
1.1 Scheduling a macchina singola
Formulazioni di Programmazione Lineare Booleana e Mista (PL(0-1)-PLM)
Booleana e Mista (PL(0-1)-PLM)
Formulazione disgiuntiva
Variabili decisionali “naturali”:
t j ∈Rn istante di inizio del job j, j = 1, …, n
i precede j ⇒ t ≥ t + p Macchina a capacità unitaria:
= 0 1 yij
se i precede j se j precede i i precede j ⇒
j precede i ⇒ ti ≥ t j + pj t j ≥ ti + pi
Variabili aggiuntive (binarie):
valgono in alternativa !!
Formulazione disgiuntiva (PLM)
i precede j ⇒ yij = 1 ⇒
j precede i ⇒ yij = 0 ⇒ ti ≥ t j + pj t j ≥ ti + pi
Formulazione disgiuntiva
J j
i p
t t
M
yij + j − i ≥ i ∀ ∈
− ) ,
1 (
J j
i p
t t
M
yij + i − j ≥ j ∀ , ∈
t j ≥ 0 ∀ ∈j J
J j
i
yij ∈ {0,1} ∀ , ∈
M costante grande (quanto?)
Problemi minsum: 1// ∑ ∑ ∑ ∑
jw
jC
jmin
∑ ∑ ∑
∈
∈
∈
+
= +
J j
j j J
j
j j J
j
i i
j t p w t w p
w ( )
J j
i p
t t
M
yij + j − i ≥ i ∀ ∈
− ) ,
1 (
J j
i p
t t
M
yij + i − j ≥ j ∀ , ∈
t j ≥ 0 ∀ ∈j J
J j
i
yij ∈ {0,1} ∀ , ∈
n2+n variabili 2n2 vincoli
Esercizio
Formulare come problema di PLM la seguente istanza del problema 1/rj/∑j wjCj
job 1 2 3
pj 3 1 2
pj 3 1 2
rj 0 2 0
wj 3 2 4
Problemi minsum: 1// ∑
jw
jT
j} 0 , max{
min j
J j
j j
j t p d
w + −
∑
∈
J j
i p
t t
M
yij + j − i ≥ i ∀ ∈
− ) ,
1
(1− yij)M + tj − ti ≥ pi ∀i, j ∈ J (
J j
i p
t t
M
yij + i − j ≥ j ∀ , ∈
t j ≥ 0 ∀ ∈j J
J j
i
yij ∈ {0,1} ∀ , ∈
RICHIAMO: Funzioni convesse lineari a tratti
è il più piccolo valore z per cui
1
1x d
c +
Tx d
c
z ≥ + i = 1,...,m
2
2x d
c +
3
3x d
c +
) (
max1,..., i
T m i
i c x + d
=
x
b Ax ≥
) (
max
min 1,..., i
T m i
i c x + d
=
b Ax ≥
z min
m i = 1,..., z
d x
ciT + i ≤
i T
i x d
c
z ≥ + i = 1,...,m
Formulazione PLM
} 0 , max{tj + pj − dj
j
j p
0 d −
tj
j jf
∑
w minj
j p
0 d −
} 0 , max{
min j
J j
j j
j t p d
w + −
∑
∈ fj ≥ tj + pj −dj, j ∈J
≥ 0 fj
Formulazione PLM
j jf
∑
w minJ j
d p
t
fj − j ≥ j − j, ∈
≥ 0 fj
J j
i p
t t
M
yij + j − i ≥ i ∀ ∈
− ) ,
1 (
J j
i p
t t
M
yij + i − j ≥ j ∀ , ∈
t j ≥ 0 ∀ ∈j J
J j
i
yij ∈ {0,1} ∀ , ∈
Problemi min-max: L
maxf min
J j
d p
t
f − j ≥ j − j, ∈
≥ 0 f
J j
i p
t t
M
yij + j − i ≥ i ∀ ∈
− ) ,
1 (
J j
i p
t t
M
yij + i − j ≥ j ∀, ∈
t j ≥ 0 ∀ ∈j J
J j
i
yij ∈ {0,1} ∀ , ∈
Formulazioni Time-indexed
Variabili binarie: xjt =1 se j inizia nel periodo t; 0 altrimenti Orizzonte temporale [0,T] discretizzato in periodi di durata unitaria. Il periodo t concide con l’intervallo di [t − 1, t]
vincolo 1 (Completezza): ogni job inizia in un qualche t
1 2 3 4 5 T≥Σpj
j
j
j
n j
x
pj
T
t jt 1, 1,...,
1 1
=
∑ =
+
−
=
j
Formulazioni Time-indexed
vincolo 2 (Capacità): al più un job processato nel periodo t un job occupa il periodo t se inizia nell’intervallo [t − pj+1, t]
T t
x
j
j
p T t
p t s
js n
j
,..., 1
, 1
) 1 ,
min(
) 1 ,
1 max(
1
=
∑
≤∑
− ++
−
=
=
t
j
j j
quindi:
Formulazione PL(0-1)
∑ ∑
=
+
−
= n
j
p T
t
jt jt
j
x c
1
1
1
min
n j
x
pj
T
jt
1 , 1 ,...,
1
=
∑
+=
−
cjt costo di assegnazione del job j all’istante t
1 ,...,
1
; ,..., 1
}, 1 , 0
{ = = − +
∈ j
jt j n t T p
x
nT variabili; n + T vincoli
n j
x
t jt
1 , 1 ,...,
1
=
∑ =
=
T t
x
j
j
p T t
p t s
js n
j
,..., 1
, 1
) 1 ,
min(
) 1 ,
1 max(
1
=
∑
≤∑
− ++
−
=
=
Funzioni obiettivo (min-sum)
j
se j inizia nel periodo t si ha Cj = t+pj−1
t t+pj−1
tempo totale di completamento:
∑
∑ ∑
=
=
+
−
=
=
− +
n
j
j j n
j
p T
t
jt j
j t p x w C
w
j
1 1
1
1
) 1
cjt = wj(t+pj−1)⇒ (
− ⇒
− +
= j max{0, j j 1}
jt w t p d
c
∑
∑ ∑
=
=
+
−
=
=
−
− +
n
j
j j n
j
p T
t
jt j
j
j t p d x w T
w
j
1 1
1
1
) 1 ,
0 max(
tempo totale di completamento:
tardiness totale:
Esercizio
Formulare come problema di PL(0-1) la seguente istanza del problema 1/rj/∑j wjCj
job 1 2 3
pj 3 1 2
pj 3 1 2
rj 0 2 0
wj 3 2 4
Vincoli di precedenza
vincolo 3 (Precedenza i→j): se il job i non è iniziato nei periodi 1,2,…,t allora il job j non può iniziare nei periodi 1, 2,…, t + pi
t
j i
1 ,...,
1 ,
1 1
+
−
−
=
≤
∑
∑
= +
=
j i
t
r
ir p
t
s
js x t T p p
x
i
quindi:
1.2 Tempo totale pesato di completamento Σ
Σ Σ
Σ w
jC
jnondelay schedule
Proprietà 0.1 Dato un problema del tipo 1//γ con γ funzione obiettivo regolare, esiste uno schedule ottimo in cui la macchina processa ininterrottamente dall’istante 0 all’istante Cmax= Σpj
Tempo totale pesato di completamento 1// Σ Σ Σ Σ w
jC
jDefiniamo Weighted Shortest Processing Time (WSPT) una regola che ordina i job per valori non crescenti del rapporto wj/pj
Sussiste il seguente
Teorema 1.1 La regola WSPT calcola una soluzione ottima del problema 1//ΣwjCj
Sussiste il seguente
Dimostrazione. (Per contraddizione)
Assumiamo che S sia uno schedule ottimo e che non rispetti WSPT
Dimostrazione
Allora devono esserci in S due job adiacenti, diciamo j seguito da k tali che
wj/pj < wk/pk
Assumiamo che il job j inizi all’istante t.
Eseguiamo uno scambio dei job j e k ottenendo un Eseguiamo uno scambio dei job j e k ottenendo un nuovo schedule S'
S
S′
k
j t
k j
t+pj
t+pk
t+pj+pk
Dimostrazione
S
S ′
k
j t
k j
t+pj+pk
Il tempo totale (pesato) di completamento dei job che precedono e seguono la coppia (j,k) non è modificato dallo scambio. Il contributo dei job j e k in S è:
(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'] (t+pk)wk + (t+pk+pj)wj
Eliminando i termini uguali:
in S] pjwk in S'] pkwj
Quindi, se wj/pj < wk/pk, risulta pk wj < pj wk, cioè il tempo totale pesato in S' è strettamente inferiore a quello in S, contraddizione
Vincoli di precedenza 1/prec/ Σ w
jC
jNel caso generale il problema è NP-Hard.
Consideriamo invece il caso in cui le precedenze sono rappresentate da un insieme di catene in parallelo:
1/chain/ΣΣΣΣwjCj
Per questo caso esiste un algoritmo di soluzione polinomiale.
Catene non interrompibili
Date due catene:
1 → 2 → … → k
k+1 → k+2 → … → n
Minimizziamo ΣwjCj con il vincolo che i job di ciascuna catena debbano essere processati consecutivamente.
catena debbano essere processati consecutivamente.
Lemma 1.2 Se
allora la catena 1, …,k precede la catena k+1, …, n
∑
∑
>
∑
∑
+
= +
=
=
=
n k
j j
n k
j j
k
j j
k
j j
p w p
w
1 1
1 1
Dimostrazione
• Per la sequenza 1,2,…,k,k+1,k+2,…,n (S1) il tempo totale di completamento è
∑ + + + ∑
∑ + +
+
= + =
= +
k j
n
j j
n k
j k
j j k
k p w p p w p
w p
w
1 1 1
1 1
1
1 K ( ) K
• Per la sequenza k+1,k+2,…,n,1,2,…,k (S2) il tempo totale di completamento è
∑ + + + ∑
∑ + +
+
+
= =
+ + =
+
n k j
n
j j
k j
n k
j j
n k
k p w p w p p w p
w
1 1 1
1 1
1
1 K ( ) K
Semplificando
• S1
) )(
(
1 1
1 1
1
∑ ∑ ∑ ∑
= +
=
= =
+ + + =
k j
j n
k j
j k
j
k j
j n
j
k p w p w p
w K
• S2
∑ = ∑ ∑
∑ + +
+
= = = +
+
=
n k j
n k
j j
k
j j
j n
k
j
p
jw
kp w p
w
1 1 1
1 1
K ( )( )
+
= = = +
+
=k j k j j k
j 1 1 1 1
• Quindi, ricordando l’ipotesi:
> ⇒
∑
∑
∑
∑
+
= +
=
=
=
n
k j
j n
k j
j k
j
j k
j
j
p w p
w
1 1
1
1 ( )( ) ( )( )
1 1
1 1
∑
∑
∑
∑
+
=
=
= +
=
<
n
k j
j k
j
j k
j
j n
k j
j p w p
w
cioè, S1migliore di S2
Coefficiente ρ di una catena
L’idea chiave dell’algoritmo è ricondurre 1/chain/ΣwjCj al problema di sequenziare catene non-interrompibili, in modo da utilizzare il Lemma 1.2.
Definizione 1.3 Data una catena 1→ 2 → … →k Definizione 1.3 Data una catena 1→ 2 → … →k definiamo coefficiente ρ della catena il seguente rapporto:
∑
∑
≤
= ≤
∑
∑
= ρ
=
=
=
=
l
j j
l
j j
l
j j
l
j j
p w k
p l w k
1 1
* 1
* 1
1 ) max
, ,
1
( K
Esempio
1 2 3 4
job 1 2 3 4
pj 3 4 2 6
wj 10 4 17 8
1 2 3 4
l* = 3
=
≤
= ≤ ρ
∑
∑
=
=
15 ,39 9
,31 7
,14 3
10 4
1 ) max 4
, ,
1 (
1 1 l
j j
l
j j
p w l
K
Proprietà del coefficiente ρ
Proprietà 1.4 Se un job l* determina il coefficiente ρ(1,...,k) allora per qualunque 1<u<l* risulta:
∑
∑
l*w
uw
∑
∑
>
∑
∑
=
=
+
= +
=
u
j j
j j
l u
j j
u
j j
p w p
w
1 1
* 1 1