I(t)

Transcript

I(t)
Gestione della produzione
Carla Seatzu, A.A. 2007/2008
Introduzione
Gestire la produzione significa generare e sfruttare
informazioni in modo da coordinare al meglio i flussi dei
materiali e l’assegnazione nel tempo delle risorse produttive,
interagendo da una parte con i clienti e dall’altra con i fornitori.
Informazioni: portafoglio ordini, previsioni di vendita, livello delle
scorte, cicli di lavorazione, etc.
Risorse produttive: macchine, manodopera, stampi, etc.
1
Esempio classico: il problema della gestione delle scorte.
Obiettivo: determinare QUANDO effettuare l’ordine e QUANTA
merce ordinare allo scopo di soddisfare la domanda con il
minimo costo.
Soddisfare la domanda al minimo costo richiede la
determinazione del giusto compromesso tra due esigenze
contrastanti:
(1) Ridurre il numero degli ordini lanciati
(2) Mantenere il livello delle scorte basso
2
Esistono diversi approcci per lo studio di tale problema.
Es.: Fixed Order Quantity System
La dimensione del lotto da
ordinare e’ costante.
I(t)
Q*
D
ROL=LT ·D
t
LT
T
Ipotesi fondamentale: domanda continua e costante.
3
Altro esempio classico: Periodic Review System
La dimensione del lotto da ordinare non e’ in genere
costante ma l’ordine viene effettuato ad intervalli
di tempo regolari.
I(t)
TSL
t
T
T
T
4
Nel caso del FOQS se la domanda non fosse
costante nei diversi periodi l’andamento sarebbe
di questo tipo:
I(t)
Q*
t
5
Nel caso del FOQS per determinare la dimensione ottima del
lotto da ordinare (EOQ: economic order quantity) si deve
trovare il giusto compromesso tra il numero degli ordini da
effettuare e il livello delle scorte nel magazzino
minimizzare i costi nell’unita’ di tempo dovuti agli ordini effettuati e
al mantenimento
1
2
HC ⋅ Q ⋅ T + RC
T=
Q
D
1
RC ⋅ D
C(Q) = HC ⋅ Q +
2
Q
Costo nel ciclo
Lunghezza del ciclo
Costo per unita’ di tempo
6
Costo nell’unita’ di tempo dovuto agli ordini
effettuati e al mantenimento
C(Q)
1
HC ⋅ Q
2
RC ⋅ D
Q
Q
Q*
min C(Q)
Q ≥0
EOQ: economic order quantity
Q* =
⇒
dC(Q)
dQ
2 ⋅ D ⋅ RC
HC
= 0
7
Tale approccio e’ molto semplice sia come formulazione, sia
come risoluzione. Tuttavia e’ piuttosto limitativo in quanto
basato su ipotesi molto forti:
-
la domanda e’ supposta continua (i prodotti per loro natura
sono discreti)
-
la domanda e’ supposta costante
-
non vi sono incertezze nella domanda e nel lead time
-
ogni prodotto e’ considerato indipendente dagli altri
-
non vengono
transitorio…
-
la velocita’ di riempimento e’ supposta infinita
messe
in
conto
situazioni
legate
al
8
Esistono chiaramente trattazioni analitiche che permettono di
rilassare alcune o tutte le ipotesi precedenti.
Esistono poi approcci basati sulla simulazione (es. Reti di Petri)
che facilmente permettono di mettere in conto fenomeni di
varia natura ed in particolare stocastici.
Un esempio tipico di sistemi per cui tali ipotesi sono troppo
restrittive e’ costituito dai sistemi multistadio.
In particolare in questo caso i livelli dei magazzini
nei diversi stadi non possono essere trattati
indipendentemente gli uni dagli altri.
9
Sistemi produttivi multistadio: trattazione analitica
u1
r
x0
u1
1
x1
u2
u2
2
d
x2
r, u1, …, d: velocita’ di riempimento
x0: livello mag. materie prime
x1: livello mag. semilavorati (WIP: work in progress)
x2: livello mag. prodotti finiti
Anche in questo caso risolvere un problema di gestione delle
scorte significa determinare il livello ottimale dei magazzini
trovando il giusto compromesso tra esigenze contrastanti.
10
1) Il livello deve essere tale da far fronte alle richieste
evitando blocchi nella produzione.
2) Un livello troppo elevato comporterebbe costi eccessivi di
mantenimento.
Trovare un compromesso ottimale significa sincronizzare al
meglio le attivita’ produttive soddisfando la domanda dei
prodotti finiti.
In particolare, se vogliamo dare una rappresentazione
dinamica della domanda, dobbiamo scrivere le equazioni di
stato del sistema:
⎧ x& 0 (t) = r(t) − u1(t)
⎪&
⎨x1(t) = u1(t) − u2 (t)
⎪ x& (t) = u (t) − d(t)
2
⎩ 2
d(t): e’ data
11
Dobbiamo poi tenere conto dei vincoli fisici del sistema
(dimensione dei magazzini) e della velocita’ massima di
lavorazione delle macchine:
x 0 (t) ≤ x 0 , x1(t) ≤ x1, x 2 (t) ≤ x 2
u1(t) ≤ u1, u2 (t) ≤ u2
Una possibile funzione obiettivo:
T
J = min ∫ (h0 x 0 (t) + h1x1(t) + h2 x 2 (t))dt
0
12
Altro problema fondamentale nell’ambito della gestione della
produzione: Schedulazione di dettaglio
La teoria della schedulazione ha come obiettivo l’allocazione
ottima nel tempo di risorse scarse su ben definite attivita’.
L’attivita’ e’ denominata job: un job e’ formato da una lista
ordinata di operazioni, ciascuna delle quali richiede un
periodo definito di lavorazione su una risorsa, chiamata
macchina.
Ipotesi: ogni macchina puo’ lavorare solo un job per volta e
ogni job puo’ essere processato da una sola macchina alla
volta.
Un piano di schedulazione completo indica per ciascuna
operazione di ciascun job QUANDO e su QUALE macchina
questa operazione viene eseguita.
13
Obiettivo: determinare un piano di schedulazione che
ottimizzi un qualche criterio normalmente definito da una
funzione dei tempi di completamento di ciascun job.
Altra ipotesi: verranno considerati solo problemi di
schedulazione di tipo deterministico, ossia si assumera’ che
tutti i dati dei problemi siano noti e fissati.
Esempio precedente del sistema multistadio in cui devono
essere lavorati 4 diversi prodotti → 4 job e 2 macchine. Una
soluzione puo’ venire rappresentata dal diagramma di Gantt:
M1
M2
1
2
3
1
4
2
3
4
14
Caratteristiche di un problema di gestione della produzione
Affrontare e risolvere con successo un problema di gestione
della produzione significa trovare il miglior adattamento tra i
seguenti fattori:
• la tecnologia alla base del processo produttivo;
• il tipo di mercato;
• il layout dell’impianto (ossia la disposizione fisica delle
macchine e dei reparti);
• le tecniche di gestione della produzione.
Ci occuperemo di questo punto.
15
Tecnologia alla base del processo produttivo
Influenza la GdP in vari modi. Es: attraverso una maggiore o
minore affidabilita’ in termini di resa e di incertezza nei tempi
di processo.
Tipo di mercato
E’ caratterizzato dalla sua maggiore o minore volubilita’, dal
livello di concorrenza, dal grado di personalizzazione delle
vendite e da loro volume.
Layout dell’impianto
Influenza la GdP in termini di complessita’ dei flussi e
movimentazione dei materiali.
16
La scelta del layout e’ legata al tipo di flusso dei materiali e
alla strategia di produzione.
Layout orientato al prodotto
Macchine in movimento
Prodotti fissi
Si usa nel caso di bassa varieta’ e grandi volumi (es: ind.
aereonautica)
17
Layout orientato al processo
Prodotti in movimento
Macchine fisse (raggruppate
in base alla loro funzione)
Si usa nel caso di elevata varieta’ e bassi volumi (es: ind.
chimica)
18
Tecniche di gestione della produzione
flusso
informazioni
1
domanda
2
Sistema
Push
3
flusso
materiali
La produzione viene attivata da un piano di previsione
della domanda (es. MRP).
19
Sistema Pull
domanda
flusso
informazioni
1
2
3
flusso
materiali
La produzione viene attivata dal prelievo fisico dei
materiali (es. JIT).
20
Svantaggi sistema push:
• Se i LT sono sovrastimati, gli stadi a monte alimentano gli
stadi a valle con troppo anticipo → accumulo di WIP.
• Se uno stadio a valle e’ bloccato a seguito di un guasto, quelli
a monte continuano a produrre come stabilito dal piano di
produzione.
Svantaggi sistema pull:
• Non si presta a sistemi con lunghi LT.
• Non si presta a sistemi con domanda fortemente variabile nel
tempo.
Sistemi ibridi: parte del sistema e’ gestito con logica pull e
parte con logica push.
21
Gestione delle scorte
Sistemi di gestione
delle scorte
Sistemi a domanda
dipendente
MRP
Sistemi a domanda
indipendente
JIT
PRS
FOQS
22
Sistemi a domanda indipendente:
Si ipotizza che la domanda di ciascun prodotto sia indipendente da
quella degli altri prodotti.
La gestione delle scorte e’ in questo caso basata su modelli
quantitativi che legano domanda, costi, etc., per trovare le
dimensioni ottime degli ordini e il momento in cui effettuarli.
FOQS: Fixed Order Quantity System
Si effettua un ordine di dimensione fissa quando il livello delle scorte
scende al di sotto di una soglia prestabilita.
PRS: Periodic Review System
Si effettuano ordini di dimensioni variabili ad intervalli di tempo
regolari al fine di riportare il livello delle scorte al valore prestabilito.
23
Sistemi a domanda dipendente:
Assumono che la domanda di un dato prodotto sia direttamente
legata alla domanda degli altri prodotti. E’ essenziale nei sistemi di
produzione multistadio.
MRP: Material requirement planning
JIT: Just in time
24
Costi legati alla gestione delle scorte:
UC: unit cost (costo unitario)
E’ il costo di una unita’ di prodotto.
RC: reorder cost (costo di riordino)
E’ il costo per effettuare un ordine “ripetuto”. Include costi telefonici,
corrispondenza, etc.
Si noti che e’ diverso dal costo relativo all’effettuazione dell’ordine per la
prima volta. In pratica il modo piu’ opportuno per quantificarlo consiste nel
dividere il costo totale in un anno dovuto all’effettuazione degli ordini per il
numero di ordini effettuati.
N.B.: Se il bene viene prodotto internamente, allora tale costo coincide con il
costo di set-up.
25
HC: Holding cost (costo di mantenimento)
E’ il costo per mantenere una unita’ di prodotto per un intervallo di tempo
unitario.
SC: Shortage cost
Non sempre le scorte all’interno del magazzino sono sufficienti a far fronte
alla domanda. Nel caso non lo siano vi sono delle perdite di profitto che
vengono quantizzate mediante i costi di shortage. Questi tengono conto,
oltre che del mancato profitto, anche di altri fattori quali la perdita di
clientela, etc.
Sono questi i costi piu’ difficili da quantizzare.
26
Fixed Order Quantity Systems
Determinazione dell’Economic Order Quantity (EOQ)
Presentiamo ora i risultati fondamentali dell’ Analisi Classica basata su una
serie di ipotesi piuttosto restrittive.
L’importanza di tali risultati risiede nel fatto che sono robusti rispetto a
variazioni parametriche e costituiscono una valida base di partenza per
analisi piu’ dettagliate.
Obiettivo: determinare la dimensione (fissa) del lotto da ordinare al fine di
minimizzare i costi totali nell’unita’ di tempo.
N.B. Minimizzare I costi equivale a massimizzare i profitti perche’ siamo
nell’ipotesi che non vi siano shortages.
27
Andamento tipico del
livello delle scorte
I(t)
ROL
t
Si effettua
un ordine
LT
LT
Il lotto ordinato e’
disponibile
28
L’andamento di tale curva e’ in genere irregolare. Vi e’ poi
variabilita’ nei costi.
Ipotesi prelimiari:
• Si considera un solo prodotto
• Tutti i costi sono noti e costanti (in particolare il costo di
riordino non varia con la quantita’ ordinata)
• La domanda e’ supposta continua e costante nel tempo.
• Non sono ammesse shortages
• Il lead time e’ nullo
• Il riempimento e’ istantaneo
29
Sotto tali ipotesi l’andamento del livello del magazzino e’ del tipo:
I(t)
D
Q*
t
T
Deve essere Q=D·T in quanto non vi devono essere shortages.
La merce che entra in un ciclo = alla merce che esce in un ciclo.
30
UC ⋅ Q + HC ⋅
Costo totale in un ciclo
Q
2
⋅ T + RC
livello medio delle scorte in un periodo
Costo totale nell’unita’ di tempo
TC =
UC ⋅ Q
T
+ HC ⋅
Q = D⋅T
Q
2
⇒
TC = UC ⋅ D + HC ⋅
+
RC
T
T=
Q
2
+
Q
D
RC ⋅ D
Q
31
C(Q)
1
HC ⋅ Q
2
UC ⋅ D
RC ⋅ D
Q
Q*
dC(Q)
dQ
Q
= −
RC ⋅ D
Q2
HC
+
= 0
2
EOQ
Q* =
N.B. Il costo
unitario e’
ininfluente
2 ⋅ D ⋅ RC
HC
32
Problemi:
• L’EOQ potrebbe suggerire valori frazionari che vanno poi
convertiti in numeri interi
• I fornitori potrebbero voler realizzare lotti di dimensioni standard
(EOQ deve essere multiplo di un certo valore)
• La capacita’ del magazzino e’ limitata
La determinazione dell’EOQ richiede la risoluzione di un
problema di ottimizzazione vincolata.
La sua risoluzione e’ tuttavia semplice visto l’andamento di C(Q).
33
Primi due casi:
C(Q)
1
HC ⋅ Q
2
UC ⋅ D
RC ⋅ D
Q
Q
34
Terzo caso:
C(Q)
Vincolo
aggiuntivo
1
HC ⋅ Q
2
UC ⋅ D
RC ⋅ D
Q
Q
35
Lead time finito:
Nella realta’ gli ordini vanno effettuati con un certo anticipo.
Si fissa un livello di riordino (ROL).
La dimensione dell’EOQ non varia.
L’ROL deve essere tale per cui quando l’ordine viene effettuato,
la scorta disponibile e’ tale da fare fronte alla domanda da quel
momento fino all’arrivo dell’ordine successivo.
ROL = LT·D
Questa regola funziona purche’ sia LT < T (o equivalentemente
Q > ROL). In caso contrario il livello di ROL non verrebbe mai
raggiunto.
36
Es: Q=250, D=100
Allora T=Q/D= 2.5 u.t.
Se LT=3 u.t. → ROL = LT· D = 300 > 250 = Q
Pertanto quando LT > T, vi saranno sempre un certo numero di
ordini in corso.
I(t)
si effettua l’ordine B
arriva l’ordine B
LT
t
si effettua l’ordine A
arriva l’ordine A
37
I(t)
si effettua l’ordine B
arriva l’ordine B
LT
t
si effettua l’ordine A
arriva l’ordine A
L’ordine deve venire effettuato in modo che:
Livello delle scorte quando si effettua l’ordine (ROL)
+ quantita’ in ordine (n ·Q ) = LT·D
38
ROL = LT · D – n · Q
Il valore di n si determina come: n · T < LT < (n+1) ·T
Es: Q=250, D=100
Allora T=Q/D= 2.5 u.t.
Se LT=3 u.t. → ROL = LT· D = 300 > 250 = Q
In questo caso n=1 essendo 2.5 < 3 < 5.
Pertanto ROL=300-250=50.
39
Limitazioni relative all’approccio basato su ROL:
Nonostante la facilita’ con cui e’ possibile calcolare ROL, restano
tuttavia delle difficolta’ pratiche nell’applicazione delle regole
appena viste.
• Il lead time e’ stato ipotizzato costante. In pratica pero’ questo e’
soggetto a variazioni. In ogni caso la sua stima non e’ sempre
semplice.
• Puo’ essere difficile valutare quando il livello delle scorte
scende al di sotto di ROL.
• Non e’ detto che sia possibile effettuare gli ordini non appena il
livello delle scorte raggiunge il valore ROL.
40
Determinazione dell’EOQ in casi piu’ generali:
Vedremo come generalizzare ai seguenti casi la precedente
analisi:
1. I costi unitari variano in funzione della quantita’ ordinata
2. I costi di riordino variano in funzione della quantita’ ordinata
3. La velocita’ di riempimento del magazzino e’ finita
4. Le shortages sono pianificate (con o senza back-orders)
5. Vi sono alcune informazioni su eventuali variazioni (aumenti)
dei costi unitari prima che un nuovo ordine venga effettuato.
6. Vi sono vincoli sullo spazio di magazzino che deve contenere
diversi tipi di prodotti.
41
I costi unitari variano in funzione della quantita’ ordinata
Supponiamo che il costo unitario vari come mostrato in figura:
UC
UC1
UC2
UC3
UC4
UC5
Qa
Qb
Qc
Qd
Q
42
C(Q)
Qi * =
2 ⋅ D ⋅ RC
2 ⋅ D ⋅ RC
=
HCi
I ⋅ UCi
UC1
UC2
UC3
UC4
UC5
Minimo:
valido o
non valido
Qa
Qb
Qc
Qd
Q
43
Minimo valido: Il punto di minimo sulla relativa curva dei costi e’
interno al range
1. Ogni set di curve avra’ sempre un certo numero di minimi non
validi ma almeno un minimo valido.
2. Il minimo globale sara’ sempre o un punto di minimo valido e
un punto di frontiera alla destra del minimo valido.
Per determinare l’ottimo e’ necessario valutare il costo nel primo
punto di minimo valido trovato partendo dalla curva piu’ bassa
piu’ i costi nei punti di frontiera alla destra dei precedenti minimi
non validi trovati.
44
Inizio
Prendi il successivo costo
unitario piu’ basso
Calcola il punto di minimo
Calcola il costo a
sinistra del range
NO
E’ valido
SI
Calcola il costo relativo al minimo valido
Fine
Paraga i costi dei diversi punti
selezionati e scegli il piu’ basso
45
I costi di riordino variano in funzione della quantita’ ordinata
Supponiamo che il costo di riordino vari come mostrato in figura:
RC
RC5
RC4
Si procede in modo
analogo a quanto visto
nel caso precedente
(vedi esercitazione).
RC3
RC2
RC1
Qa
Qb
Qc
Qd
Q
46
Velocita’ di riempimento finita
Nella realta’ la velocita’ di riempimento
e’ finita (P).
I(t)
Q
Il livello raggiunto al
riempimento e’ A < Q.
termine
del
A
P-D
D
t
PT
DT
T
47
I(t)
Q
A = (P − D) ⋅ PT
A
Q = P ⋅ PT
A
(P − D)
=
Q
P
P-D
D
t
PT
DT
T
A
UC ⋅ Q + RC + HC ⋅ ⋅ T =
2
Costo totale in un ciclo:
P −D
Q
UC ⋅ Q + RC + HC ⋅ ⋅ T ⋅
P
2
48
Costo totale nell’unita’ di tempo:
UC ⋅ Q
RC
Q P −D
⋅Q +
+ HC ⋅ ⋅
TC =
T
T
2
P
Q
T =
D
Q P −D
RC ⋅ D
TC = UC ⋅ D +
+ HC ⋅ ⋅
2
P
Q
Le curve sono ancora ad U, asimmetriche e con minimo
ben distinto.
d(TC)
=0
dQ
⇒
Q* =
2 ⋅ RC ⋅ D
⋅
HC
P
P −D
49
Shortages pianificate:
I modelli descritti fino ad ora si basano sull’ipotesi che tutta la
domanda venga soddisfatta.
Vi sono tuttavia delle situazioni in cui le shortages pianificate
sono utili, in particolare quando i costi di mantenimento sono
molto elevati.
Quando la domanda del cliente non viene soddisfatta si possono
presentare due diversi casi.
• Back orders: Il cliente aspetta che il prodotto arrivi in
magazzino
• Lost sales: il cliente rinuncia alla richiesta e si rivolge ad un
altro fornitore.
50
Shortages pianificate con back orders
Il back ordering e’ comune quando:
• Il costo unitario e’ molto elevato
• Ci sono prodotti molto simili tra loro per cui sarebbe troppo
costoso mantenere in magazzino una gamma completa di
prodotti (es. automobili)
• La concorrenza e’ limitata
Definiamo un nuovo costo unitario: SC (costo per unita’ di tempo
e unita’ di prodotto), detto shortage cost.
Nell’ipotesi di velocita’ di riempimento infinita, domanda continua
e costante, etc… l’andamento delle scorte e’ del seguente tipo
51
I(t)
Q
t
Costo totale
in un ciclo:
S
T1
T2
Q -S
S
UC ⋅ Q + RC + HC ⋅
⋅ T + SC ⋅ ⋅ T
1
2
2
2
52
Q -S
T =
1
D
S
T =
2
D
LL
Costo totale nell’unita’ di tempo:
RC ⋅ D
(Q - S) 2
S2
TC = UC ⋅ D +
+ HC ⋅
+ SC ⋅
Q
2 ⋅Q
2 ⋅Q
2 variabili: Q ed S
⎧ ∂ (TC)
⎪ ∂Q = 0
⎨ ∂ (TC)
⎪
=0
⎩ ∂S
Q* =
2 ⋅ RC ⋅ D ⋅ (HC + SC)
HC ⋅ SC
S* =
2 ⋅ RC ⋅ HC ⋅ D
SC ⋅ (HC + SC)
Shortages pianificate con lost sales
I(t)
Q
t
T1
T2
Una fornitura pari a Q viene consumata dopo un tempo pari a
T1=Q/D mentre la domanda che segue fino all’arrivo di un nuovo
rifornimento (=D·T-Q) rimane non soddisfatta.
54
Osservazione: Se tutta la domanda viene soddisfatta, la
minimizzazione dei costi e’ equivalente alla massimizzazione
dei profitti.
Nel caso delle lost sales questo non e’ piu’ vero.
• SP (Selling Price): prezzo di vendita di una unita’ di prodotto
Ad ogni unita’ non venduta associamo 2 componenti di costo:
• SP-UC: perdita di profitto
• DC (Direct Cost): tiene conto della possibilita’ di perdere il
cliente, la necessita’ di rimediare, etc…
55
Costo totale in un ciclo:
Q
UC ⋅ Q + RC + HC ⋅ ⋅ T + DC ⋅ (D ⋅ T − Q)
1
2
Profitto netto in un ciclo:
Q
SP ⋅ Q - UC ⋅ Q − RC − HC ⋅ ⋅ T − DC ⋅ (D ⋅ T − Q)
1
2
Dividendo per T
→
Profitto per unita’ di tempo
⎤
1 ⎡
HC Q 2
R =
⋅ ⎢ Q ⋅ (DC + SP − UC) − RC −
⋅
− DC ⋅ D ⋅ T ⎥
T ⎢
2
2
⎥⎦
⎣
LC
56
LC = DC + SP - UC
Q
Z =
D ⋅T
Costo di ogni unita’ di vendita
persa incluso il profitto perso
Porzione di domanda soddisfatta
in un periodo
Trascurando il costo fisso DC·D →
RC ⋅ D HC ⋅ Q ⎤
⎡
R = Z ⋅ ⎢ D ⋅ LC −
−
Q
2 ⎥⎦
⎣
dR
=0
dQ
⇒
Q* =
2 ⋅ RC ⋅ D
HC
EOQ standard
57
Per trovare il valore ottimale di Z in [0,1] →
[
R* = Z ⋅ D ⋅ LC −
dove
2 ⋅ RC ⋅ HC ⋅ D
]
LC = DC + SP - UC
Rappresenta il costo di ogni unita’ di vendita persa incluso
il profitto perso
•
Se […] > 0 →
soddisfatta
•
Se […] < 0 → Z = 0 → nessuna domanda deve venire
soddisfatta (mantenere i prodotti in magazzino e’ troppo
costoso)
•
Z = 1 → tutta la domanda deve venire
Se […] = 0 → ogni Z porta allo stesso profitto
58
Vediamo come in pratica si puo’ imporre un dato valore di Z in (0,1).
Fissato
Z=
Q
D⋅T
T=
T2 = T − T1 =
Q
D⋅Z
Q
Q
−
D⋅Z D
Supponiamo per semplicita’ LT < T
Primo caso) LT > T2
ROL = (LT-T2) D
Il livello di riordino e’ tale da far fronte
alla sola domanda in LT-T2
59
Secondo caso) LT < T2
Si deve effettuare l’ordine quando il livello delle scorte e’ nullo e
la domanda accumulata e’ pari a (T2-LT) D
Questo equilvarrebbe a considerare un livello di riordino negativo e
pari a ROL = (LT- T2) D.
Terzo caso) LT = T2
Si deve effettuare l’ordine appena il livello delle scorte si
annulla.
60
Vi sono informazioni su aumenti dei costi unitari prima
di un nuovo ordine
Supponiamo che un’azienda sia in procinto di effettuare un nuovo
ordine quando da parte del fornitore arriva la notizia che il prezzo
del prodotto in questione sta per salire.
Vi e’ quindi l’opportunita’ di acquistare al prezzo corrente, mentre
tutti i successivi ordini avranno un prezzo piu’ alto.
Vogliamo determinare la taglia ottima di tale ordine.
Sia
• NUC > UC il nuovo prezzo unitario
• Q* il valore dell’EOQ in seguito all’aumento
• Q > Q* la dimensione dell’ultimo ordine a cui corrisponde UC
61
I(t)
Obiettivo: minimizzare i costi
totali lungo un periodo di tempo
sufficientemente grande (TH)
Q
Q*
t
T
TH
Numero di ordini in TH = D· (TH-T)/Q*
62
Componenti di costo totale durante il periodo di tempo TH:
D ⋅ T ⋅ UC
D ⋅ (TH − T) ⋅ NUC
Componenti di costo unitario nel
primo ciclo e nei cicli successivi
RC
D ⋅ (TH − T)
⋅ RC
Q*
Q
I ⋅ UC ⋅ ⋅ T
2
Q*
I ⋅ NUC ⋅
⋅ (TH − T)
2
Costi di riordino nel primo ciclo e
nei cicli successivi
Costi di mantenimento nel primo
ciclo e nei cicli successivi
( HC = I·UC )
63
Costo totale in TH = somma delle 6 componenti precedenti.
Derivando rispetto a Q ed eguagliando a 0, si ottiene:
(NUC - UC) ⋅ D
Q =
+Q*
I ⋅ NUC
NUC
UC
N.B.: Questo e’ vero nell’ipotesi che l’ordine Q sia fatto
quando non vi sono scorte residue. In caso contrario
bisognerebbe sottrarre al valore appena determinato la
quantita’ di scorte residue.
64
Vincoli sullo spazio di magazzino che deve contenere
diversi tipi di prodotti.
L’EOQ e’ stato determinato supponendo che la capacita’ del
magazzino sia illimitata. Questo in genere non e’ vero. Inoltre I
magazzini devono solitamente contenere diversi tipi di prodotti.
I risultati visti in precedenza possono ancora essere utili con la
seguente azione correttiva.
Si associa a ciascun prodotto un costo di mantenimento addizionale
che tiene conto dello spazio occupato:
• AC (costo per unita’ di tempo e unita’ di spazio)
Il nuovo costo di mantenimento dell’i-esimo prodotto e’:
• HCi + AC · Si
dove Si e’ lo spazio occupato da una unita’ dell’i-esimo prodotto.
65
Qi* =
2 ⋅ RC i ⋅ D i
HC i + AC ⋅ S i
Il valore di AC si determina prendendo il piu’ piccolo valore che
consenta il soddisfacimento dei vincoli di spazio.
Questa soluzione permette di avere dei lotti non troppo distanti
dall’ottimo penalizzando in maniera equa i diversi tipi di prodotti.
66
Incertezza nella domanda
Nella derivazione dell’EOQ abbiamo ipotizzato che la domanda
fosse costante e pari ad un valore determinato mediante previsione.
Utilizzando tali risultati possono pero’ presentarsi due diversi casi:
• la domanda attesa e’ > di quella effettiva → vi sono accumuli nei
magazzini
• la domanda attesa e’ < di quella effettiva
→ vi sono shortages
Supponiamo ora che i costi di mantenimento siano superiori a quelli
di shortages (ipotesi realistica).
Si introducono le scorte di sicurezza (SS: safety stocks) che
facciano fronte a una domanda superiore a quella “media”.
67
La domanda nell’unita’ di tempo non e’ piu’ una costante ma una
variabile aleatoria (continua).
In particolare, ipotizziamo una distribuzione normale con
• valore medio D
• deviazione standard σD (varianza σD2).
Tali valori risultano chiaramente ancora da una previsione.
Densita’ di
probabilita’
f(x) =
D
1
σD
2π
⋅e
(x − D) 2
−
2 σ D2
Domanda
nell’u.t.
68
Ricordiamo:
Valore atteso
Nel caso di una variabile aleatoria discreta
E[x] =
∑ x ⋅ π(x)
x∈ X
+∞
Nel caso di una variabile aleatoria continua
E[x] =
∫ x ⋅ f(x)dx
−∞
dove π(x) e’ una probabilita’, mentre f(x) e’ una densita’ di
probabilita’.
σ 2x = E[(x − E(x))
2
]
Varianza
La varianza e’ una misura della dispersione dei valori attorno al
valore medio.
Nel caso di distribuzione normale: piu’ e’ alta la varianza piu’ la
campana e’ piatta. Se la varianza e’ nulla non vi e’ aleatorieta’.
69
Supponiamo ora che la domanda nell’u.t. sia una v.a. mentre il lead
time sia costante e pari a LT.
La domanda durante il lead time e’ una v.a. con distribuzione
normale, valore medio D · LT e varianza σD2 · LT.
Densita’ di
probabilita’
D · LT
Domanda
in LT
70
Se ROL = LT · D (supponiamo LT<T per semplicita’) allora:
Densita’ di
probabilita’
Shortages
Eccedenze
in magazzino
D · LT
Domanda
in LT
Pertanto la probabilita’ di avere shortages sarebbe pari al 50%.
71
Si definisce allora un livello di servizio desiderato che indica la
percentuale di domanda che si vuole essere certi di soddisfare.
Si aggiungono al valore di ROL precedente delle scorte di sicurezza
(Safety Stocks):
SS = Z ⋅ σ D ⋅ LT
dove il valore di Z dipende dal livello di servizio desiderato.
ROL = ROL' + SS
I valori di Z si leggono da una opportuna tabella:
72
Z
Livello di
servizio
0
50
0.84
80
1
84.1
1.04
85
1.28
90
1.48
93
1.64
95
1.88
97
2
97.7
2.33
99
2.58
99.5
3
99.9
73
La tabella e’ calcolata tenendo conto che:
Livello di servizio = 100 ( 1- Area tratteggiata )
Densita’ di
probabilita’
Domanda
in LT
D · LT
SS
Prob. di avere
shortages quando
ROL= D · LT+ SS
74
Incertezza nella domanda e nel lead time
Supponiamo ora che anche il lead time sia una v.a. con distribuzione
normale, valore medio LT e di deviazione standard σLT.
2
SS = Z ⋅ σ D ⋅ LT + D 2 ⋅ σ LT
2
ROL = ROL' + SS
75
N.B. Nel caso in cui sia la domanda che il lead time fossero costanti
e pari al loro valore medio, l’andamento del livello delle scorte
sarebbe di questo tipo:
I(t)
Q*
ROL
SS
t
N.B. L’incertezza nella domanda e nel lead time non influenza l’EOQ
solo che in questo caso D rappresenta il valore medio della
domanda e non piu’ il suo valore costante.
76
Periodic Review Systems
Determinazione del Target Stock Level (TSL)
In questo caso gli ordini possono avere dimensioni variabili e
vengono fatti ad intervalli di tempo regolari con l’obiettivo di
raggiungere (nell’istante in cui il lotto ordinato arriva nel magazzino)
un livello di scorte pari ad un livello target prestabilito (TSL: target
stock level).
Si pongono due domande:
1. Qual’e’ il periodo ottimale?
T si determina in base a
considerazioni pratiche
2. Qual’e’ il TSL ottimale?
oppure:
si calcola l’EOQ e poi il valore di
T corrispondente (=Q/D)
77
Determinazione del TSL.
Supponiamo inizialmente che tutto sia deterministico.
I(t)
TSL0
Q*
t
LT
Prox. Ordine = TSL0 – livello attuale = D·T + D·LT - D·LT = Q*
78
Ovviamente, a causa del lead time, il livello che viene
effettivamente raggiunto e’ TSL=TSL0 - D·LT a causa del LT
Se poi la domanda e’ stocastica:
TSL
0
= TSL'
SS = Z ⋅ σ D ⋅
0
+ SS
T + LT
N.B. Cio’ vale nell’ipotesi che LT<T. In caso contrario si
procede analogamamente a quanto visto per i FOQS.
79
Modelli per domanda discreta stagionale
I modelli visti fino ad ora sono a lungo termine.
Vedremo ora un esempio di modello probabilistico a breve termine.
In particolare, esamineremo un caso limite di tali modelli che prende
in esame un solo periodo.
Questo tipo di analisi e’ particolarmente utile per prodotti che hanno
una forte domanda stagionale.
Affronteremo questo problema dapprima usando alcuni risultati
dell’analisi marginale che e’ basata sui concetti di profitto atteso e
perdita attesa.
Supponiamo che venga ordinato un lotto di dimensione Q.
80
Profitto atteso sulla Q-esima unita’ =
Probabilita’ di vendere la Q-esima unita’ * il profitto che ne deriva
Perdita attesa sulla Q-esima unita’ =
Probabilita’ di non vendere la Q-esima unita’ * perdita che ne deriva
(costo che si ha quando l’unita’ non e’ venduta)
• Se Q e’ piccolo, la probabilita’ di vendere la Q-esima unita’ e’ alta e il
profitto atteso e’ maggiore della perdita attesa.
• Se Q e’ grande, la probabilita’ di vendere la Q-esima unita’ e’ bassa e la
perdita attesa e’ maggiore del profitto atteso.
Intuitivamente: la dimensione ottima di Q e’ la piu’ grande quantita’ che
porta ad un profitto atteso sulla Q-esima unita’ > della perdita attesa
e
ad una perdita attesa sulla (Q+1)-esima unita’ maggiore del profitto atteso.
Ipotesi e dati del problema
• Q: numero di unita’ comprate
• la domanda e’ una v.a. discreta
• UC: costo unitario
• SP: prezzo di vendita unitario durante il periodo
• SV: prezzo di vendita ridotto relativo alle unita’ vendute oltre il
periodo
• SP-UC: profitto derivante dalla vendita di una unita’
• UC-SV: perdita derivante da ogni unita’ non venduta
(Ipotesi: SV<UC)
82
Profitto atteso sulla Q-esima unita’ = Prob(D≥Q) · (SP-UC)
Perdita attesa sulla Q-esima unita’ = Prob(D<Q) · (UC-SV)
Sceglieremo Q come il piu’ grande valore per cui il profitto atteso
sulla Q-esima unita’ e’ > della perdita attesa, ossia il piu’ alto valore
di Q per cui
Prob(D≥Q) · (SP-UC) ≥ Prob(D<Q) · (UC-SV) =
= (1 - Prob(D≥Q)) · (UC-SV)
UC − SV
Prob(D ≥ Q) ≥
SP − SV
83
Newsboy problem
Una formalizzazione rigorosa di quanto appena visto viene
tipicamente data in termini del “newsboy problem”.
Il ragazzo deve decidere quanti quotidiani comprare dal suo fornitore
basandosi su una domanda incerta.
Se compra troppi giornali, rischia di rimanere con molti giornali
invenduti. Se compra pochi giornali, perde parte del profitto.
Supponiamo per semplicita’ che i giornali non venduti entro una
certa ora non abbiano poi alcun valore (SV=0).
84
Domanda
Probabilita’
Profitto
0
Prob(0)
0·SP-Q·UC
1
Prob(1)
1·SP-Q·UC
:
:
:
:
:
:
Q-1
Prob(Q-1)
(Q-1)·SP-Q·UC
Q
Prob(Q)
Q·(SP-UC)
Q+1
Prob(Q+1)
Q·(SP-UC)
:
:
:
:
:
:
∞
Prob(∞)
Q·(SP-UC)
85
Profitto atteso complessivo relativo a Q
EP(Q) =
∑ Prof. att. quando
∑ Prof. att. quando
Q
∑ [D ⋅ SP
D ≤Q+
D >Q =
− Q ⋅ UC] ⋅ Prob(D) +
D =0
∞
∑ Q ⋅ [SP
− UC] ⋅ Prob(D)
=
D = Q +1
∞
⎧ Q
⎫
SP ⋅ ⎨ ∑ D ⋅ Prob(D) + Q ⋅ ∑ Prob(D) ⎬ − Q ⋅ UC
D = Q +1
⎩D =0
⎭
86
Profitto atteso complessivo relativo a Q-1
EP(Q - 1) =
∞
⎫
⎧ Q -1
SP ⋅ ⎨ ∑ D ⋅ Prob(D) + Q ⋅ ∑ Prob(D) ⎬ − ( Q - 1) ⋅ UC
D =Q
⎭
⎩D =0
⎧ ∞
UC ⎫
EP(Q) - EP(Q - 1) = SP ⋅ ⎨ ∑ Prob(D) −
⎬
SP
⎩D =Q
⎭
EP(Q + 1) - EP(Q) ≤ 0 < EP(Q) - EP(Q - 1)
Il profitto atteso
decresce da Q a Q+1
Il profitto atteso
aumenta da Q-1 a Q
87
Con semplici manipolazioni, si ottiene
UC
Prob(D ≥ Q + 1) ≤
< Prob(D ≥ Q)
SP
Generalizzando al caso in cui SV ≠ 0
Prob(D ≥ Q + 1) ≤
UC - SV
< Prob(D ≥ Q)
SP - SV
come volevasi dimostrare.
88
L’espressione del profitto atteso nel caso in cui SV≠0 e’:
EP(Q) =
Q -1
∑ [D ⋅ SP
+ (Q − D) ⋅ SV − Q ⋅ UC] ⋅ Prob(D) +
D =0
+
∞
∑ [Q ⋅ SP
− Q ⋅ UC] ⋅ Prob(D)
=
D =Q
Q -1
∑ [D ⋅ SP
+ (Q − D) ⋅ SV] ⋅ Prob(D) +
D =0
+
∞
∑ [Q ⋅ SP]
⋅ Prob(D) − Q ⋅ UC
D =Q
89
Metodi di previsione della domanda
I metodi di gestione delle scorte visti fino ad ora si basano su
informazioni affidabili relative alla domanda, in particolare su
previsioni della domanda.
Esistono svariati metodi di previsione della domanda, alcuni dei quali
molto sofisticati.
Nell’ambito della gestione delle scorte si puo’ dimostrare che alcuni
metodi semplici sono poi anche i piu’ efficienti ed idonei.
Si possono dare diverse classificazioni, ad esempio in base
all’orizzonte temporale:
• short-term forcasts
• medium-term forcasts
• long-term forcasts.
90
Altra classificazione:
• Causal methods (metodi causali)
Metodi quantitativi
• Projective methods (metodi proiettivi)
• Judgmental methods (metodi di valutazione)
Metodi causali: analizzano l’effetto di cause esterne e le usano
per produrre previsioni (es.: le vendite future sono influenzate dai
prezzi futuri).
Metodi proiettivi: estendono al futuro quanto avvenuto in
passato.
Metodi di valutazione: sono solitamente basati su opinioni di
esperti. Non sono generalmente molto affidabili ma sono flessibili.
Sono indispensabili in alcune circostanze, quali ad es. nel caso di
prodotti nuovi per i quali mancano dati storici.
91
Errori nella previsione della domanda: questo parametro e’
essenziale nello studio dei metodi quantitativi.
Errore = Domanda effettiva – Domanda prevista
E(t) = D(t) – F(t)
1 N
Errore medio =
⋅ ∑ E(t)
N t =1
N: numero di misure
In questo modo pero’ si possono avere piccoli errori medi anche
con stime scadenti per effetto di compensazioni tra errori positivi e
negativi.
1 N 2
⋅ ∑ E (t)
N t =1
Mean square error
1 N
⋅ ∑ E(t)
N t =1
Mean absolute
deviation
92
Causal forcasting:
Illustriamo tale approccio con riferimento alla regressione
lineare.
Assume che una variabile dipendente (es. la domanda) sia
linearmente legata ad un’altra variabile (es. il prezzo o il tempo).
Y
Y=a +bX
Trova l’equazione della
retta che meglio “fitta” i
dati (in genere non lo fa
perfettamente).
X
93
Y
Y=a +bX
1 N
1 N
a = ⋅ ∑ Y(i) − b ⋅ ⋅ ∑ X(i)
N i=1
N i=1
X
b=
N
N
N
i=1
i =1
i =1
2
N ⋅ ∑ X(i) ⋅ Y(i) −∑ X(i) ⋅ ∑ Y(i)
⎛ N
⎞
N ⋅ ∑ X (i) − ⎜ ∑ X(i)⎟
i= −1
⎠
⎝ i=1
N
2
94
Coefficiente di determinazione: consente di valutare la bonta’
della retta di fitting ottenuta.
Unexplained SSE
(sum square error)
Total SSE
Y
Mean(Y)
Ŷ
Explained SSE
(sum square error)
X
N
Tot. SSE = ∑ [Y(i) − Mean(Y)]
2
i=1
N
Ex. SSE = ∑
i=1
[
]
ˆ (i) − Mean(Y)
Y
2
N
Unex. SSE = ∑
i=1
[
]
2
ˆ
Y(i) − Y(i)
Tot. SSE = Ex. SSE + Unex. SSE
Explained SSE
Coeff. di determinazione =
in [0,1]
Total SSE
Maggiore e’ il coeff. di determinazione, migliore e’ la stima.
Estensioni:
• dipendenza lineare da piu’ variabili: Y=a + b1 X1 + b2 X2 + b3 X3
• regressione non lineare
Non li studieremo anche se esistono soluzioni efficienti.
96
Projective forcasting:
Mentre i metodi causali si basano sull’influenza che certe variabili
(tempo, prezzi, etc.) hanno avuto sulla domanda, i metodi proiettivi
si basano solo su dati storici relativi alla domanda stessa.
Vedremo i seguenti tre tipi di metodi proiettivi:
• simple averages
• moving averages
• exponential smoothing
97
Simple averages:
Guarda ai dati precedenti della domanda e fa la media di questi.
1 N
F(t + 1) = ⋅ ∑ D(t)
N t =1
• E’ efficiente quando la domanda e’ stabile
• Non tiene conto dei cambiamenti recenti (i dati hanno tutti la
stessa importanza).
98
Moving averages:
Si basa solo sugli N dati piu’ recenti.
F(t + 1) =
D(t) + D(t - 1) + K + D(t - N + 1)
⋅
N
• Se N e’ grande si tiene poco conto delle variazioni piu’ recenti
• Se N e’ piccolo si tiene conto delle variazioni recenti ma la
previsione e’ poco robusta rispetto a fluttuazioni casuali (rumore)
Alternativa: si pesano maggiormente i dati piu’ recenti. Esempio:
F(t + 1) = 0.1 ⋅ D(t - 3) + 0.2 ⋅ D(t - 2) + 0.3 ⋅ D(t − 1) + 0.4 ⋅ D(t)
99
Exponential smooting:
Si basa sull’idea che piu’ i dati sono vecchi, meno peso viene dato
loro. In particolare, il peso decresce esponenzialmente con l’eta’
del dato.
F(t + 1) = α ⋅ D(t) + (1− α) ⋅ F(t)
Dalla formula sopra non appare evidente che il peso decresca con
l’eta’ del dato.
Per dimostrarlo consideriamo un esempio.
Supponiamo α=0.2
100
F(t + 1) = 0.2 ⋅ D(t) + 0.8 ⋅ F(t)
F(t) = 0.2 ⋅ D(t - 1) + 0.8 ⋅ F(t - 1)
F(t + 1) = 0.2 ⋅ D(t) + 0.8 ⋅ [0.2 ⋅ D(t - 1) + 0.8 ⋅ F(t - 1)]
= 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.64 ⋅ F(t − 1)
F(t − 1) = 0.2 ⋅ D(t − 2) + 0.8 ⋅ F(t − 2)
F(t + 1) = 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.64 ⋅ [0.2 ⋅ D(t − 2) + 0.8 ⋅ F(t − 2)]
= 0.2 ⋅ D(t) + 0.16 ⋅ D(t − 1) + 0.128 ⋅ D(t − 2) + 0.512 ⋅ F(t − 2)
N.B. E’ importante trovare un buon valore di α.
Trial and error procedure
101
Material Requirements Planning (MRP)
Gli approcci di gestione delle scorte prima presentati (FOQS e PRS)
risultano talvolta inadeguati. In particolare, cio’ e’ vero nel caso di
domande dipendenti o fortemente variabili nel tempo.
Allo scopo di ovviare a tali difficolta’ e ridurre il livello delle scorte
furono sviluppati negli anni 60 strumenti di programmazione della
produzione noti come sistemi MRP.
Nel seguito questi, grazie anche all’informatizzazione delle aziende,
furono estesi aggiungendo funzionalita’ di vario tipo, fino ad ottenere
i cosiddetti sistemi Manufacturing Resource Plannining (MRPII).
Nel seguito presenteremo dapprima un’analisi critica dei precedenti
metodi di gestione delle scorte; poi presenteremo la logica
sottostante ai sistemi MRP.
102
Analisi critica dei metodi di gestione delle scorte a domanda
indipendente
Vantaggi:
• semplicita’,
• non richiedono mezzi informatici per la loro gestione,
• sono decentralizzati.
Limitazioni:
• si basano su un modello statico della domanda,
• trascurano le interazioni tra prodotti attraverso il legame tra
domanda indipendente e dipendente,
• trascurano le interazioni tra prodotti attraverso i vincoli di capacita’
produttiva.
103
Il problema della domanda variante nel tempo:
Consideriamo i seguenti tre casi di domanda variabile nel tempo:
Periodo
1
2
3
4
5
6
7
8
Caso A
20
0
20
0
20
0
20
0
Caso B
20
0
0
0
0
0
60
0
Caso C
0
60
0
0
0
0
20
0
In tutti i 3 casi il valore medio della domanda negli 8 periodi e’ pari a
10 unita’ per periodo.
Tuttavia se usassimo un sistema FOQ con D=10 avremmo a
seconda dei casi, shortages o accumulo di scorte.
Per ovviare a questo inconveniente e’ necessario
esplicitamente conto del carattere dinamico della domanda.
tenere
Lot sizing
104
Lot sizing
Se volessimo tenere conto della variabilita’ della domanda nel tempo
al fine di pianificare la produzione (o gli ordini da effettuare)
dovremmo procedere ad una operazione di lot sizing
(dimensionamento dei lotti).
Questo corrisponde alla risoluzione di un problema di ottimizzazione
vincolata.
105
Discretizziamo l’orizzonte temporale di pianificazione in periodi.
Supponiamo di avere a disposizione i dati relativi alla domanda nei
successivi N periodi (t=1, 2, …, N). Siano
• dt : domanda durante il periodo t
• It : livello di magazzino alla fine del periodo t
• xt : quantita’ prodotta durante il periodo t.
It = It −1 + x t − dt
La domanda e’ soddisfatta se il livello di magazzino non assume mai
valori negativi.
It = It −1 + x t − dt ≥ 0
106
Come nel caso FOQ determiniamo la quantita’ da produrre (o
acquistare) in modo da soddisfare la domanda minimizzando la
somma dei costi di mantenimento e di riordino (o di set-up):
N
min ∑ HC ⋅ T ⋅ It + RC ⋅ δ(x t )
t =1
It = It −1 + x t − dt
It , x t ≥ 0
t = 1,..., N
⎧1 se x > 0
δ(x) = ⎨
⎩0 se x = 0
t = 1,..., N
N.B. Se non ci sono limiti
superiori su xt significa che il
modello e’ ancora a capacita’
infinita.
107
Proprieta’ fondamentale della soluzione ottima: Se il
sistema e’ a capacita’ infinita, i lotti sono sempre del tipo:
t +τ
x t = ∑ dk
k =t
ossia la dimensione del lotto nasce dall’accorpamento di
fabbisogni di periodi consecutivi.
Esempio: considerando i fabbisogni per tre periodi d1, d2 e d3,
la politica di produzione sara’ da scegliere tra le seguenti:
a) x1=d1, x2=d2, x3=d3
b) x1=d1+d2, x2=0, x3=d3
c) x1=d1, x2=d2+d3, x3=0
d) x1=d1+d2+d3, x2=0, x3=0
a) minimizza i costi di magazzino;
d) minimizza i costi di riordino.
108
La formulazione di problemi di programmazione puo’ essere
facilmente estesa al caso in cui uno stesso sistema produce N
diversi prodotti (o famiglie di prodotti) ed esso non e’ a capacita’
infinita.
Per brevita’ non studieremo questi casi.
109
Il problema della domanda dipendente:
Consideriamo la seguente distinta base: P1 richiede un semilavorato
P2 che a sua volta richiede una materia prima P3.
Supponiamo che la domanda di P1 sia
piuttosto regolare.
Tuttavia, adottando una politica di gestione
delle scorte FOQ si vede facilmente come,
andando da P1 a P3, la domanda si faccia via
via piu’ irregolare, rendendo inadeguato il
modello statico della domanda utilizzato.
P1
P2
P3
110
I(P1)
t
I(P2)
t
I(P3)
t
111
Un’ulteriore difficolta’ introdotta dalla presenza di assemblaggi e’
legata ai livelli di servizio.
Supponiamo che per assemblare un prodotto vi sia bisogno di 5
componenti le cui scorte sono gestite con politica FOQ con livello di
servizio del 90%.
La probabilita’ di trovare TUTTI i componenti in magazzino quando
questi occorrono e’ pari a 0.95 = 0.59, ossia meno del 60% !
112
Il problema della interazione dei prodotti e della capacita’
produttiva:
I modelli FOQ e PR non tengono conto dei limiti di capacita’
produttiva.
L’unica cosa che viene fatta e’ introdurre un lead time che anticipi gli
effetti dell’accodamento degli ordini di produzione nei centri di
lavorazione.
Nella realta’ inoltre gli ordini entrano in competizione tra loro. Per
tenere conto di cio’ si incrementa ulteriormente il lead time con ovvio
incremento del livello delle scorte.
113
Logica MRP
Si tratta di una logica di pianificazione della produzione
• a capacita’ infinita,
• orientata alla riduzione delle scorte.
Anche in questo caso i limiti nella capacita’ produttiva sono
semplicemente messi in contro attraverso l’introduzione di lead time
fissati a priori.
Si calcolano i fabbisogni netti di ciscun prodotto “nettificando” i
fabbisogni lordi, ossia tenendo conto dei materiali eventualmente gia’
disponibili in magazzino, e di quelli per cui sono gia’ stati lanciati
degli ordini e che saranno in seguito disponibili nel magazzino.
114
I fabbisogni lordi di un codice sono ottenuti a partire dagli ordini di
produzione di tutti i “genitori”, cioe’ di tutti i semilavorati che usano
quel codice come materia prima.
Si parte quindi dalla richiesta di prodotti finiti che e’ stabilita in base
ad un piano principale di produzione detto Master Production
Schedule (MPS).
La struttura dati su cui opera la logica MRP e’ una tabella detta
Record MRP, in cui sono riportate per ogni periodo le seguenti
informazioni:
• Fabbisogni lordi
• Consegne attese
• Magazzino disponibile
• Fabbisogni netti
• Ordini pianificati
115
Fabbisogni lordi: coincidono con la domanda futura, o una sua
previsione, durante ciascun periodo.
Consegne attese: corrispondono agli ordini gia’ lanciati e attesi
all’inizio del periodo.
Magazzino disponibile: indica la quantita’ di prodotti disponibili alla
fine del periodo, escluse le parti difettose o gia’ destinate ad altre
attivita’ produttive.
Fabbisogni netti: sono ottenuti dai fabbisogni lordi mediante il
processo di nettificazione.
Ordini pianificati: sono quelli da lanciare all’inizio del periodo
corrispondente. Sono ottenuti a partire dai fabbisogni netti
effettuando il dimensionamento dei lotti (lot sizing) e tenendo conto
dei lead time (lead time offsetting).
116
Esempio: una unita’ di P1 ha bisogno di una unita’ di
P2, una unita’ di P2 ha bisogno di 2 unita’ di P3.
P1
Materiali inizialmente disponibili: 10 u. di P1 e 20 di P2.
Consegne attese: 20 u. di P2 all’inizio del terzo
periodo.
1
P2
Lead time: LT1=1, LT2=2, LT3=3.
2
Vincolo su P3: gli ordini devono essere multipli di 50.
Fabbisogni lordi di P1: 50 nel 5o periodo e 60 nel 70o.
P3
Possiamo completare i records relativi ai diversi
prodotti come segue, dove in rosso sono stati
evidenziati i dati iniziali.
117
Periodo
1
2
3
4
Fabbisogni lordi
5
6
50
7
8
60
P1
Consegne attese
Mag. disponibile
10
10
10
10
10
Fabbisogni netti
0
0
40
40
60
Fabbisogni lordi
40
60
Mag. disponibile
0
60
Ordini pianificati
Consegne attese
0
20
20
20
20
40
0
0
Fabbisogni netti
0
0
0
30
30
60
Ordini pianificati
60
Fabbisogni lordi
120
Consegne attese
Mag. disponibile
30
Fabbisogni netti
120
Ordini pianificati
P2
150
30
30
P3
Lot sizing: Nell’esempio appena discusso sono state usate due
diverse regole di dimensionamento dei lotti.
Per i codici P1 e P2 si e’ usata una regola nota come lot-for-lot che
fa si’ che alla fine dell’orizzonte di pianificazione non vi siano
giacenze.
Nel caso invece del codice P3 si e’ adottata una regola a quantita’
fissa, con la conseguenza che al termine dell’orizzonte di
pianificazione vi e’ una giacenza di 30 pezzi. Questa scelta nasce
dal vincolo che i lotti di P3 debbano essere multipli di 50.
Un vincolo di questo tipo e’ frequente in numerosi sistemi in cui e’
necessario che la dimensione del lotto sia fissa o quanto meno
multipla di un valore prefissato.
Vediamo un po’ piu’ nel dettaglio le regole piu’ comunemente usate
per il lot sizing nei sistemi MRP.
119
Lot sizing nei sistemi MRP
Regola a quantita fissa (fized order quantity):
Questa regola fissa a priori la quantita’ da ordinare.
La quantita’ fissa da ordinare puo’ essere ad esempio (ma non
necessariamente) calcolata usando la formula dell’EOQ dopo avere
determinato la domanda media sulla base dei fabbisogni.
Tale calcolo viene fatto automaticamente dal sistema e aggiornato
ad opportuni intervalli di tempo. Al variare dei fabbisogni varia anche
la dimensione del lotto, in quanto varia la domanda media del
prodotto stesso.
Tale regola puo’ essere naturalmente estesa al caso in cui il vincolo
e’ che la dimensione del lotto non sia fissa ma multipla di un certo
valore (come nel caso di P3 nell’esempio precedente).
120
Regole a quantita variabile:
La regola di lot sizing a quantita’ variabile piu’ semplice e’ la regola lotfor-lot (L4L) in cui gli ordini coincidono con i fabbisogni netti. In questo
modo si minimizzano i costi di magazzino a discapito dei costi fissi. Cio’
assicura naturalmente che non vi siano giacenze nel magazzino.
Tale regola e’ stata applicata per dimensionare gli ordini di P1 e P2
nell’esempio prima illustrato.
Esistono poi generalizzazioni di tale regola, come ad esempio la regola
L4L con lotto minimo: se dt e’ il fabbisogno durante il periodo t, la
quantita’ da ordinare e’
• xt = dt se dt ≥ m,
• xt = m se dt < m
dove m e’ appunto la quantita’ minima da ordinare.
121
Abbiamo inoltre visto come il problema del lot sizing nella sua
formulazione piu’ generale possa essere scritto come un problema di
ottimizzazione vincolata.
In particolare, sotto l’ipotesi di capacita’ infinita, la determinazione dei
lotti ottimali richiede essenzialmente di trovare il migliore accorpamento
di fabbisogni.
In pratica quindi le regole piu’ generali di lot sizing a quantita’ variabile
disponibili nei pacchetti MRP (che non studieremo tuttavia in questa
sede) non sono altro che l’implementazione di metodi per la
determinazione dei periodi di ricopertura τ
t +τ
x t = ∑ dk
k =t
Chiaramente la regola L4L e’ un caso particolare di tali regole in cui
viene fissato pari a 1 il periodo di ricopertura.
122
Precisazioni:
(1) Nella logica MRP gli ordini pianificati non sono poi
necessariamente operativi. Il sistema suggerisce di lanciare degli
ordini, ma sta poi al pianificatore decidere il lancio effettivo di questi.
(2)
I pacchetti MRP permettono di specificare un orizzonte
temporale di RELEASE: solo gli ordini che cadono all’interno di
questo orizzonte vanno rilanciati, in quanto gli altri sono soggetti a
troppe incertezze.
(3) Le variabilita’ tipiche dei sistemi di gestione della produzione
fanno si’ che i sistemi MRP possono essere considerati piu’ come
sistemi di RIPIANIFICAZIONE che di pianificazione della produzione.
La ripianificazione avviene secondo una logica ROLLING HORIZON:
si lancia l’MRP e si comincia a rendere operativa la prima parte del
piano ottenuto; dopo un certo periodo di tempo l’MRP viene lanciato
nuovamente, facendo avanzare l’orizzonte temporale e aggiornando
l’MPS, le giacenze di magazzino e le consegne attese.
123
Esistono 2 strategie base per la ripianificazione:
• la strategia rigenerativa
• la strategia net change.
Strategia rigenerativa: si ripete il calcolo dei fabbisogni per tutti i
codici partendo da zero.
Stategia net change: si aggiornano solo i record necessari a causa
di variazioni di stato avvenute rispetto all’ultima pianificazione.
Questo approccio permette di snellire i calcoli e di essere lanciato
con una frequenza maggiore.
124
Si osservi infine che e’ possibile tenere conto nel calcolo dei
fabbisogni, di eventuali scorte di sicurezza.
Cio’ puo’ essere fatto generando i fabbisogni netti non quando il
magazzino e’ vuoto ma quando il suo livello va al di sotto di un
valore prefissato.
Inoltre il numero esatto di parti di un certo prodotto puo’ venire
moltiplicato per un fattore correttivo >1 in modo da tenere conto di
eventuali parti difettose.
125
Just in Time (JIT)
Il JIT puo’ essere pensato come un insieme di principi e di tecniche il
cui scopo ultimo e’ la minimizzazione degli sprechi.
Sprechi: livelli eccessivi di scorte, presenza di operazioni che non
danno valore aggiunto (quali la movimentazione dei materiali),
produzione di parti difettose, numero eccessivo di attrezzature
diverse.
La maggiore differenza con l’MRP sta nel fatto che la sua
applicazione e’ immediata, mentre l’MRP si basa su una elevata
informatizzazione.
Il JIT ha avuto le sue origini e il suo maggiore successo in Giappone.
126
Il JIT si basa su una produzione a flussi che si contrappone a quella
a lotti. La riduzione dei lotti di produzione permette di ridurre anche il
WIP ed il lead time, con conseguenti vantaggi in termini competitivi
sul mercato.
Production smoothing
La riduzione del lead time permette inoltre di accorciare l’orizzonte di
pianificazione, e quindi di basarsi su previsioni piu’ attendibili.
Conseguenza immediata e’ la riduzione delle scorte di sicurezza:
queste sono impiegate semplicemente come tampone contro eventi
imprevedibili, quali le fluttuazioni della domanda e i guasti delle
macchine.
Per un corretto funzionamento della strategia JIT e’ inoltre
necessario poter contare su processi affidabili, fornitori possibilmente
vicini geograficamente e con uno stretto rapporto di collaborazione.
127
E’ inoltre utile standardizzare sia i prodotti che i processi: ridurre il
numero di componenti permette di ridurre le scorte; standardizzare i
processi permette di ridurre i tempi di setup.
Altro punto chiave del JIT e’ la forte interazione tra i lavoratori che
contribuiscono cosi’ al miglioramento del processo produttivo e
possono essere usati in modo flessibile.
Da questo punto di vista e’ importante inoltre non saturare la
capacita’ produttiva, lasciando un certo margine per adattarsi alle
circostanze impreviste nel mercato:
Sistema produttivo a banda larga
In sintesi: le scorte non solo sono viste come uno spreco, ma
addirittura come un modo per celare la presenza di altri problemi, a
loro volta causa di sprechi.
128
Il sistema di controllo Kanban
Kanban in giapponese significa “cartellino”.
Con questo sistema il flusso dei materiali e’ regolato da cartellini, sui
quali sono riportate informazioni relative a cosa e quanto bisogna
produrre o movimentare.
I pezzi sono immagazzinati e movimentati in contenitori standard;
non e’ possibile produrre una quantita’ diversa da quella associata al
contenitore (o multipla di questa se si usano piu’ contenitori).
La chiave del controllo Kanban e’ che non si puo’ produrre se non si
ha a disposizione un cartellino di autorizzazione; i cartellini circolano
nel sistema in quantita’ limitate, allo scopo di limitare il WIP.
129
Single card kanban
E’ il sistema piu’ semplice basato su un solo tipo di kanban che
autorizza la produzione.
Come esempio illustrativo consideriamo un sistema produttivo a due
stadi ed un solo tipo di semilavorato.
(a) I pezzi prodotti dallo stadio 1 sono immagazzinati in contenitori in
una stock area associata allo stadio 2. A ciascun contenitore e’
associato un kanban.
(b) I contenitori vengono svuotati dallo stadio 2.
(c) Quando un contenitore e’ vuoto, il suo cartellino viene staccato e
inviato allo stadio precedente; i kanban vengono raccolti in un
“quadro” che viene utilizzato per sequenziare le attivita’ produttive.
(d) Dopo un certo lead time un contenitore pieno viene restituito allo
stadio 2 insieme al suo kanban.
130
stock
area
quadro
kanban
KB
1
2
KB
(a)
stock
area
quadro
kanban
KB
1
2
KB
(b)
131
quadro
kanban
stock
area
KB
1
2
KB
(c)
stock
area
quadro
kanban
KB
1
2
KB
(d)
132
(c) I kanban vengono raccolti in un “quadro” che viene utilizzato per
sequenziare le attivita’ produttive.
Il sistema piu’ semplice e’ gestire la coda dei cartellini in ordine di
arrivo, cioe’ con una logica FIFO.
Esistono anche strategie alternative, utili ad esempio nel caso in cui i
tempi di setup siano piccoli ma non trascurabili, per cui e’ necessario
accorpare i kanban in modo da evitare un setup eccessivo.
La logica kanban puo’ essere estesa ad un numero arbitrario di stadi
e prodotti.
Il kanban non e’ necessariamente un cartellino fisico. Puo’ essere un
kanban elettronico o il contenitore stesso.
133
Per ogni tipo di componente occorre determinare il numero di
kanban:
giusto compromesso tra l’esigenza di ridurre il WIP e quella di non
bloccare uno stadio per mancanza di materiali.
K=
LT ⋅ D ⋅ (1+ α)
C
K: numero di kanban
C: capacita’ del contenitore (di regola la si assume non superiore al
10% del fabbisogno giornaliero)
D: tasso di domanda
LT: lead time per la produzione
α: (>1) tiene conto delle incertezze
134
Dual card kanban
Il sistema precedente puo’ essere esteso mediante l’introduzione di
diversi tipi di kanban.
Per esempio, e’ possibile introdurre dei kanban particolari per
segnalare l’urgenza di un certo componente.
Oppure puo’ essere utile utilizzare dei kanban per segnalare la
necessita’ di controllare la movimentazione di certi materiali (che
sono ad esempio particolarmente pesanti e quindi difficili da
trasportare).
135
Condizioni necessarie per una buona applicazione del JIT
• La produzione deve essere di tipo ripetitivo.
• I tempi di setup devono essere brevi.
• I prodotti e i processi devono essere il piu’ possibile standardizzati.
• La manodopera deve essere versatile.
• I fornitori devono essere affidabili dal punto di vista della qualita’.
• Deve essere anche economico ordinare quantitativi ridotti di
materie prime.
136
Schedulazione di dettaglio
Lo scheduling e’ un processo decisionale che gioca un ruolo
essenziale in quasi tutte le industrie manifatturiere e di servizio,
nell’ambito dei trasporti, delle comunicazioni, etc.
L’obiettivo e’ quello di ALLOCARE opportunamente le RISORSE
(che in ogni problema reale sono in numero finito) con la finalita’ di
eseguire determinate operazioni, ottimizzando al contempo un dato
indice di prestazione.
Le RISORSE possono essere:
• macchine in una industria manifatturiera,
• piste in un aeroporto, etc.
Le OPERAZIONI possono essere:
• processamento di una determinata parte,
• atterraggio di un aereo, etc.
137
Gli OBIETTIVI (indici di prestazione) possono assumere varie forme
quali:
• minimizzazione del tempo di completamento di tutte le operazioni,
• minimizzazione del numero di operazioni completate oltre il tempo
dovuto.
Notazione:
• Mi, i=1, …, m
Macchine (risorse disponibili)
• Jj, j=1, …, n
Job (operazioni da eseguire)
138
Il risultato della schedulazione viene rappresentato attraverso i
diagrammi di Gantt.
Questi possono essere di due tipi:
orientati alle macchine
M1
M2
M3
22
3
2
1
1
3
3
11
4
tempo
orientati al processo: in questo caso in ordinata abbiamo i job.
Si usano fondamentalmente quelli orientati alle macchine.
139
La soluzione di un problema di scheduling contiene quindi due
informazioni essenziali:
• la sequenza con cui le macchine devono processare i job;
• gli istanti di tempo in cui ciascuna operazione deve avere inizio.
Dati del problema e notazione:
• n: numero di job
• m: numero di macchine
• per ogni job e’ specificato l’ordine con cui questo devo essere
processato dalle macchine
• pij: tempo di processamento (processing time) del job j nella
macchina i (e’ il tempo che il job j impiega per essere processato
dalla macchina i)
140
• dj: data di consegna (due date) entro la quale il job j deve essere
completato. Il non soddisfacimento di tale vincolo e’ ammissibile ma
comporta una penalita’.
• Dj : deadline: e’ anche questa una data entro il quale il job j deve
essere completato. Tale limite e’ tuttavia inderogabile, ossia non e’
ammissibile una soluzione che non lo rispetti.
• rj: tempo di rilascio (release time) del job j (e’ l’istante di tempo a
partire dal quale il job j e’ disponibile per essere processato)
• wj: peso (weight) del job j: indica il peso assegnato al job j al fine di
stabilire un grado di priorita’ tra i diversi job. Entra in gioco in molte
funzioni obiettivo.
141
Distinzione fondamentale:
• Flow shop: Tutti i job visitano le macchine nello stesso ordine
Una generalizzazione del flow shop e’ il flexible flow shop
dove una singola macchina e’ sostituita da piu’ macchine in parallelo
che possono eseguire quindi in contemporanea la stessa operazione
su piu’ job. Questo naturalmente aumenta la complessita’ del
problema in quanto non si deve piu’ risolvere un semplice problema
di sequenziamento.
• Job shop: Ogni job visita le macchine secondo una sequenza
propria.
Nel caso piu’ semplice si ha che ciascun job visita ciascuna
macchina una sola volta. Puo’ pero’ capitare che non sia cosi’. In
questo caso si dice che il job e’ soggetto a ricircolo.
Una generalizzazione del job shop e’ il flexible job shop dove
alcune operazioni sono eseguibili in parallelo.
Il caso piu’ complicato e’ il flexible job shop con ricorcolo.
142
Ipotesi standard:
Vediamo ora le ipotesi che vengono tipicamente fatte nella
risoluzione di un problema di scheduling.
• I lotti sono trattati come entita’ indivisibili. Questo significa che
da un punto di vista formale non si distingue il caso di un job
costituito da un solo pezzo o da tanti pezzi. Cio’ puo’ essere troppo
restrittivo nel caso di lotti di grandi dimensioni.
• Non si ammette la preemption. Ammettere preemption significa
ammettere che le operazioni che le macchine eseguono sui job
possano essere interrotte una o piu’ volte. In generale questo non e’
vero a meno che non sia esplicitamente indicato.
Naturalmente ammettere la preemption complica molto la
risoluzione di un problema di scheduling.
• Non e’ possibile cancellare job. Si possono tuttavia assegnare
pesi diversi ai job, stabilendo pertanto una certa priorita’ tra questi.
143
• I tempi di processo non dipendono dalla schedulazione.
Naturalmente questo non e’ sempre vero nella pratica.
• E’ possibile avere WIP. Anche questo non e’ sempre vero e vi
sono alcuni processi reali in cui il pezzo deve passare attraverso
tutte le operazioni senza alcuna interruzione (e quindi il WIP e’
nullo). Vi sono poi casi intermedi in cui si hanno vincoli di capacita’
legati alla capienza dei buffer.
• Le macchine lavorano un pezzo per volta.
• Ogni job visita ogni macchina al piu’ una volta. Anche questo
non e’ sempre vero e si possono avere ricircoli.
• Le macchine sono sempre disponibili. Non si tiene quindi conto
di eventuali guasti e periodi di fermo (ad esempio per la
manutenzione).
• Il problema e’ deterministico e tutti i dati sono noti.
144
Misure di prestazione:
In generale le misure di prestazione sono funzione dei tempi di
completamento dei job sulle macchine.
Piu’ precisamente indichiamo con Cij il tempo di completamento del
job j sulla macchina i.
Il modo tipico per costruire un indice di prestazione consiste
nell’assegnare ad ogni job un termine di penalita’.
• Tempo di completamento (complessivo): Cj
• Flow time: Fj = Cj – rj
Lj
• Lateness: Lj = Cj - dj
dj
Cj
145
Lj
• Tardiness: Tj= max { Cj - dj, 0 }
dj
Cj
• Earliness: Ej= max {dj - Cj, 0 }
Lj
dj
Cj
146
• Indicatore di ritardo:
⎧1 C j > d j
Uj = ⎨
⎩0 C j ≤ d j
Combinando queste funzioni obiettivo si ottengono le funzioni
obiettivo piu’ comunemente usate.
• Flow time totale : ∑j Fj
• Flow time totale pesato : ∑j wj Fj
• Tardiness totale pesata : ∑j wj Tj
• Massima lateness : Lmax = maxj Lj
• Makespan : Cmax = maxj Cj
• Numero di job in ritardo : ∑j Uj
147
Si noti che alcune di queste funzioni obiettivo sono tra loro
equivalenti, ossia portano alla stessa soluzione ottima.
Esempio: lateness totale e flow time totale (si veda esercitazione 4).
Si osservi infine che tali misure di prestazione sono tutte dette
regolari in quanto sono funzioni non decrescenti del tempo di
completamento.
148
Classificazione di un problema di scheduling mediante la
CODIFICA DI GRAHAM:
Tale codifica prevede tre campi: α \ β \ γ
• α descrive il layout delle macchine
• β indica la presenza di eventuali vincoli aggiuntivi
• γ specifica la misura di prestazione
Si noti che β puo’ mancare (allora la notazione e’ del tipo α \ \ γ).
In questo caso significa che valgono le ipotesi standard prima
elencate e non vi sono vincoli aggiuntivi.
149
Layout delle macchine:
La stringa α e’ composta da due simboli: α1 e α2:
• α1 specifica le modalita’ di visita delle macchine da parte dei job
• α2 indica, se presente, il numero di macchine.
Occorre essenzialmente distinguere due casi:
• job ad operazione singola
• job ad operazioni multiple.
Il caso piu’ semplice di operazione singola e’ quello di macchina
singola:
• α1 vuoto, α2 = 1.
150
E’ un caso di operazione singola anche quello di macchine parallele,
anche se in questo caso il problema si complica.
In questo caso si distingue tra:
• macchine parallele identiche (α1 = P),
• macchine parallele scorrelate (α1 = R, i tempi di processamento
sono diversi nelle diverse macchine),
• macchine parallele uniformi (α1 = Q, ogni macchina ha una
velocita’ di processamento diversa si e pij = pj / si).
Nel caso di job ad operazioni multiple distinguiamo essenzialmente
tra job shop e flow shop (α1 = F, α1 = J, rispettivamente).
Anche in questo caso α2 indica il numero di macchine.
151
Vincoli aggiuntivi:
La stringa β puo’ assumere uno dei seguenti simboli:
• prec: Indica la presenza di vincoli di precedenza. Puo’ capitare che
un job possa essere processato correttamente solo dopo che e’
avvenuto il processamento di determinati altri job.
Tali vincoli sono generalmente espressi mediante un grafo.
Vi sono due strutture fondamentali, catena e albero:
152
• skj: indica la presenza di set-up times o costs. Le macchine
devono essere generalmente predisposte prima di effettuare una
certa operazione su un job. Tale operazione richiede un certo tempo
o costo che viene detto di set-up.
Nel caso piu’ generale tali tempi o costi dipendono dalla
sequenza con cui i job visitano le macchine. Si parla in questo caso
di sequence-dependent set-up times or costs.
• rj: indica che i tempi di rilascio dei job sono non nulli.
• Dj: indica la presenza di deadline.
• no-wait: indica che i job non possono attendere in un buffer tra
due operazioni consecutive (ragioni tecnologiche impongono che le
operazioni vengano eseguite consecutivamente senza interruzione).
153
Esempi:
• 1/ / ∑j Cj: problema a macchina singola in cui si vuole
minimizzare la somma dei tempi di completamento, in assenza di
vincoli aggiuntivi.
• 1 / rj / Lmax: problema a macchina singola in cui si vuole
minimizzare la massima lateness, in presenza di tempi di rilancio
non nulli.
• F2/ / Cmax: problema di flow shop a due macchine in cui
l’obiettivo e’ quello di minimizzare il makespan.
154
Metodi di risoluzione:
Benche’ i problemi di scheduling siano concettualmente molto semplici
(almeno nella formulazione standard), la loro risoluzione e’ molto
complessa nei casi di interesse pratico.
La risoluzione di un problema di scheduling richiede infatti (almeno in
linea di principio) l’enumerazione di tutte le soluzioni ammissibili, per
poi scegliere tra queste quella ottima. Cio’ e’ tuttavia possibile solo per
casi di dimensioni ridottissime.
Esempio: macchina singola, misura di prestazione regolare e n = 20.
Il numero di soluzioni ammissibili e’ 20!, cioe’ circa 2.43 ·1018.
Se il calcolatore a disposizione e’ in grado di valutare 106
soluzioni/secondo, il tempo per valutare tutte le soluzioni possibili e’
pari a 2.43 ·1012 secondi, ossia 77146 anni!
Inoltre, aggiungere un job significa moltiplicare il tempo per 21!
155
Classificazione:
Metodi di risoluzione
Metodi esatti
Metodi
costruttivi
Metodi euristici
Metodi
enumerativi
One-shot
Metodi
iterativi
156
Metodi esatti: Assicurano l’ottimalita’ della soluzione rispetto alla
misura di prestazione scelta.
Metodi euristici: Non assicurano l’ottimalita’ della soluzione. I tempi di
calcolo pero’ sono sensibilmente ridotti. Nei casi di interesse pratico, I
problemi di scheduling vengono sempre risolti con metodi euristici.
Metodi costruttivi: Permettono di ricavare direttamente la soluzione
ottimale.
Metodi enumerativi: Si basano su un processo di enumerazione delle
soluzioni che viene limitato in modo da ridurre i tempi di calcolo senza
pero’ perdere la soluzione ottima.
One-shot: Forniscono direttamente UNA soluzione.
Metodi iterativi : Si basano su una soluzione del problema per cercare
di costruirne una migliore.
I metodi one-shot sono piu’ veloci ma forniscono in genere soluzioni di
qualita’ inferiore.
157
Metodi costruttivi:
Vedremo ora alcuni problemi per cui sono noti algoritmi costruttivi in
grado di fornire la soluzione ottima con tempi di calcolo ridotti.
In realta’ il panorama e’, da questo punto di vista, piuttosto
desolante. I principali problemi che possono essere risolti in modo
esatto con metodi costruttivi sono:
• 1 / / ∑j Cj e 1 / / ∑j wj Cj che vengono risolti con le regole SPT e
WSPT, rispettivamente.
• 1 / / Lmax che viene risolto con la regola EDD.
• F2 / / Cmax e J2 / / Cmax, risolti con algoritmi dovuti a Johnson.
• Problemi della forma 1 / prec / maxj γj(Cj) (dove γj(Cj) e’ una
funzione di prestazione regolare del tempo di completamento). Tali
problemi si possono risolvere con un algoritmo dovuto a Lawler.
158
Regola WSPT
Una soluzione ottima del problema 1 / / ∑j wj Cj si ottiene
schedulando i job per valori non decrescenti del rapportp pj/wj
(regola WSPT: weighted shortest processing time).
Un caso particolare si ha quando tutti pesi wj sono unitari
(regola SPT: shortest processing time).
Regola EDD
Una soluzione ottima del problema 1 / / Lmax si ottiene schedulando i
job secondo valori non decrescenti della due date
(regola EDD: earliest due date).
159
Algoritmo di Johnson per F2 / / Cmax
Si puo’ dimostrare che esiste una soluzione ottima caratterizzata da
un’unica sequenza sulle due macchine.
L’algoritmo si basa sulle seguenti considerazioni: minimizzare il
makespan significa massimizzare l’utilizzo delle macchine. E’ allora
ragionevole iniziare la sequenza con un job che abbia un tempo di
processamento breve sulla prima macchina in modo da ridurre
l’inutilizzo della seconda macchina.
Analogamente e’ ragionevole terminare la sequenza sulla seconda
macchina con il job avente il tempo di processamento piu’ breve in
modo da ridurre la coda della schedulazione in cui la prima
macchina e’ ferma dopo avere esaurito il suo carico di lavoro.
160
Passo 1: Costruisci due insieme di Job:
J1 = { Jj : p1j ≥ p2j }
J2 = { Jj : p1j < p2j }
Passo 2: Ordina i job dell’insieme J1 in ordine non decrescente dei
tempi di processamento p1j Æ J1or
Passo 3: Ordina i job dell’insieme J2 in ordine non crescente dei
tempi di processamento p2j Æ J2or
Passo 4: Concatena le due sequenze partendo da quella dei job in
J1.
161
Esempio:
Sequenza sulle due macchine: M1 M2
J1
J2
J3
J4
J5
p1i
6
2
8
7
3
p2j
5
9
6
1
10
J1 = { J2, J5 } ,
J1or = { J2, J5 },
J2 = { J1, J3, J4 }
J2or = { J3, J1, J4 }
Sequenza ottima sulle macchine = { J2, J5, J3, J1, J4 }
162
Algoritmo di Johnson per J2 / / Cmax
Partiziona l’insieme dei job come segue:
• J1 = { insieme dei job che visitano solo M1 }
• J2 = { insieme dei job che visitano solo M2 }
• J12 = { insieme dei job che visitano prima M1, poi M2 }
• J21 = { insieme dei job che visitano prima M2, poi M1 }
Passo 1: ordina i job in J12 usando l’algoritmo di Johnson F2 / / Cmax
nel caso in cui l’ordine sulle macchine sia M1 M2 Æ J12or
Passo 2: ordina i job in J21 usando l’algoritmo di Johnson F2 / / Cmax
nel caso in cui l’ordine sulle macchine sia M2 M1 Æ J21or
Passo 3: ordina i job su M1 secondo la sequenza J12or J1 J21or,
dove i job in J1 sono ordinati arbitrariamente
Passo 4: ordina i job su M2 secondo la sequenza J21or J2 J12or,
dove i job in J2 sono ordinati arbitrariamente
163
Algoritmo di Lawler per 1/prec/Lmax
Una soluzione ottima del problema 1/prec/Lmax si ottiene
schedulando iterativamente un job alla volta in ultima posizione in
modo tale che ad ogni iterazione il job fissato per ultimo sia quello
che causa il minimo valore della funzione obiettivo tra tutti i job
senza successori.
J1
J2
J3
J4
J5
J6
pj
2
3
4
3
2
1
dj
3
6
9
7
11
7
Esempio:
J5
J1
J2
J3
J4
J6
164
N = insieme dei job non ancora schedulati
P (N) = somma dei tempi di processamento dei job in N
L = insieme dei job senza successori non ancora schedulati
• Ricerca del job da processare in sesta posizione:
N = { J1, J2, J3, J4, J5, J6 }
P(N) = 15
L = { J3, J5, J6 }
L3 = P(N) – d3 = 6
L5 = P(N) – d5 = 4 <-- in sesta posizione
L6 = P(N) – d6 = 8
• Ricerca del job da processare in quinta posizione:
N = { J1, J2, J3, J4, J6 }
P(N) = 13
L = { J3, J6 }
L3 = P(N) – d3 = 4 <-- in quinta posizione
L6 = P(N) – d6 = 6
165
• Ricerca del job da processare in quarta posizione:
N = { J1, J2, J4, J6 }
P(N) = 9
L = { J2, J6 }
L2 = P(N) – d2 = 3
L6 = P(N) – d6 = 2 <-- in quarta posizione
• Ricerca del job da processare in terza posizione:
N = { J1, J2, J4 }
P(N) = 8
L = { J2, J4 }
L2 = P(N) – d2 = 2
L4 = P(N) – d4 = 1 <-- in terza posizione
• Dai vincoli: J2 e’ in seconda posizione, J1 in prima posizione.
166
Schedulazione con regole di priorita’
L’idea alla base delle semplici regole EDD, SPT, WSPT puo’ essere
facilmente estesa a qualunque problema di scheduling, anche se
naturalmente si perde in generale l’ottimalita’ della soluzione
ottenuta.
Il vantaggio pero’ continua ad essere quello di una facile
applicazione che richiede semplicemente di simulare un processo di
schedulazione come se avvenisse in tempo reale.
Le regole piu’ frequentemente usate sono (oltre a EDD, SPT,
WSPT):
• LWKR (least work remaining): da’ la max priorita’ al job con il min
carico di lavoro residuo (somma dei tempi di processamento delle
operazioni ancora da eseguire)
• MWKR (most work remaining): da’ la max priorita’ al job con il
max carico di lavoro residuo.
167
Tali regole sono tutte statiche in quanto la priorita’ di un job in coda
non tiene conto esplicitamente del tempo.
Le regole che invece tengono esplicitamente conto del tempo sono
dette dinamiche e sono generalmente usate per la risoluzione di
problemi in cui entrano in gioco le date di consegna.
L’algoritmo per la generazione di una schedulazione basata su
regole di priorita’ puo’ essere formalizzato come segue.
Indichiamo con:
• St : insieme delle operazioni schedulabili al passo t
• αj: tempo di inizio al piu’ presto dell’operazione j (in St)
168
Passo 1: t e’ inizializzato a 1. St e’ inizializzato con l’insieme delle
prime operazioni di ciascun job. αj e’ inizializzato al valore del tempo
di rilascio del job corrispondente.
Passo 2:
αˆ = min α j
j∈S t
Sia M̂ la macchina che deve eseguire l’operazione corrispondente a
tale minimo (eventuali parita’ possono essere risolte a piacere)
Passo 3: Per ogni j in St che richiede M̂ e tale che α j = αˆ calcola
un indice di priorita’ e aggiungi l’operazione con la massima priorita’
alla schedulazione parziale, iniziandola al piu’ presto.
Passo 4: incrementa t, aggiorna St rimuovendo l’operazione appena
schedulata e aggiungendo il suo successore (se esiste).
Passo 5: Se St non e’ vuoto vai al Passo 2, altrimenti fermati.
169
Tale algoritmo puo’ essere facilmente esteso a casi molto generali
quali ad esempio, macchine alternative per la stessa operazione,
risorse ausiliare, etc.
Esempio:
Si consideri l’applicazione della regola SPT al seguente problema di
job-shop:
J1: (M1, 10), (M2, 5), (M3,6)
J2: (M2, 5), (M1, 8)
J3: (M1, 2), (M3, 10), (M2, 4)
Si assumano nulli i tempi di rilascio di tutti i job.
Vi sono otto operazioni da schedulare.
170
Macchina libera
Passo t
M1
M2
M3
oj in St
αj
M
Piorita’
1
0
0
0
(J1,1)
(J2,1)
(J3,1)
0
0
0
M1
M2
M1
10
5
2
(J1,1)
(J2,1)
(J3,2)
2
0
2
M1
M2
M3
10
5
10
2
2
0
0
3
2
5
0
(J1,1)
(J2,2)
(J3,2)
2
5
2
M1
M1
M3
10
8
10
4
12
5
0
(J1,2)
(J2,2)
(J3,2)
12
12
2
M2
M1
M3
5
8
10
Operaz.
Sched.
*
*
*
*
Passo t
M1
M2
M3
oj in St
αj
M
Piorita’
5
12
5
12
(J1,2)
(J2,2)
(J3,3)
12
12
12
M2
M1
M2
5
8
4
*
(J1,2)
(J2,2)
16
12
M2
M1
5
8
*
6
12
16
12
Operaz.
Sched.
7
20
16
12
(J1,2)
16
M2
5
*
8
20
16
12
(J1,3)
21
M3
6
*
172
Diagramma di Gantt risultante
M1
3
M2
2
2
1
1
3
M3
1
3
2
5
12
16
20 21
27
tempo
173
Vediamo ora due regole dinamiche che vengolo solitamente
applicate per la risoluzione di problemi
1 / / ∑wj Tj
e
1/ skj / ∑wj Tj,
rispettivamente.
Tali regole sono note rispettivamente come
ATC: appearent tardiness cost
e
ATCS: appearent tardiness cost with setup.
Come vedremo sono basate su euristiche e non garantiscono
pertanto l’ottimalita’ della soluzione.
174
Regola ATC
In ogni istante di tempo “significativo” si calcola un nuovo
insieme di ranking index e si sceglie il job a cui corrisponde il
valore piu’ alto di ranking index.
I j (t) =
⎛ max{d j − p j − t, 0} ⎞
⎟⎟
⋅ exp⎜⎜ −
pj
Kp
⎝
⎠
wj
K e’ un parametro da determinare empiricamente
p:media dei tempi di processamento dei job rimanenti
La bonta’ della soluzione dipende da come e’ scelto K. In genere
questo e’ stabilito in funzione di altri parametri, quali ad esempio:
d: media delle due date
τ = 1−
d
Cmax
R=
dmax − dmin
Cmax
175
Regola ATCS
E’ una estensione della regola precedente. In questo caso il
ranking index e’ definito come
⎛ max{d j − p j − t, 0} ⎞
⎛ slj ⎞
⎜
⎟
⎟⎟
⋅ exp⎜ −
⋅ exp⎜⎜ −
I j (t, l) =
⎟
K1 p
pj
⎝
⎠
⎝ K2 s ⎠
wj
s: media dei tempi di setup dei job che devono essere ancora
schedulati
K1 e K2 sono due parametri che vengono calcolati in funzione di:
dmax − dmin
s
τ = 1−
, R=
, η=
Cmax
Cmax
p
d
176
Si osservi tuttavia che in questo caso il calcolo del makespan non
puo’ essere fatto a priori a causa della presenza dei tempi di setup.
Si e’ soliti allora usare la seguente formula ricavata nell’ipotesi che
tutti i tempi di setup possano essere considerati costanti e pari
media dei tempi di setup:
n
Ĉmax = ∑ p j + n s
j =1
Un’euristica che spesso si utilizza per la determinazione di K1 e K2
e’ infine la seguente:
⎧4.5 + R se R ≤ 0.5
K1 = ⎨
⎩ 6 − 2R se R > 0.5
K2 =
τ
2 η
177
Esempio
J1
J2
J3
J4
J1
J2 J3 J4
s0j
1
1
3
4
pj
13
9
13 10
s1j
_
4
1
3
dj
12
37 21 22
s2j
0
_
1
0
wj
2
4
s3j
1
2
_
3
s4j
4
3
1
_
2
5
ˆ
p = 11, s = 2, C
max = 53
τ = 0.57 η = 0.18 R = 0.47
K 1 = 5 K 2 = 0.7
178
Il primo istante di tempo significativo e’ t=0:
I1 (0,0) = 0.075, I 2 (0,0) = 0.131, I 3 (0,0) = 0.016, I 4 (0,0) = 0.025
Il primo job da schedulare e’ J2 in quanto ad esso corrisponde il
piu’ alto valore del ranking index.
J2 inizia la sua lavorazione al tempo t=1 e la termina in t=10.
Il nuovo istante di tempo significativo e’ allora t=10. Si calcolano
I1 (10,2), I 3 (10,2), I 4 (10,2)
Cosi’ procedendo si trova che la sequenza ottima e’ J2, J4, J3, J1.
N.B.
Per semplificare la procedura i vari parametri medi vengono
mantenuti costanti e pari a quelli calcolati alla prima iterazione e
non aggiornati ogni volta al variare dell’insieme dei job ancora da
schedulare.
179
Metodi enumerativi e beam search
Un metodo per determinare con certezza la soluzione ottima
consiste nell’enumerare tutte le soluzioni ammissibili e scegliere poi
quella con indice di prestazione inferiore.
Il processo di enumerazione puo’ essere visto come un processo
decisionale a piu’ passi, in cui occorre decidere ad ogni passo quale
job mettere in sequenza.
XXXX
1XXX
Albero di
decisioni
2XXX
3XXX
4XXX
31XX
32XX
34XX
3214
3241
180
Vi e’ chiaramente una esplosione combinatoria nel numero di
possibili sequenze.
Il principio che sta alla base di una vasta classe di metodi di
enumerazione parziale noti come branch and bound consiste nel
limitare lo sforzo computazionale eliminando sequenze parziali che
non possono condurre ad una soluzione ottima.
Benche’ ridotta, la complessita’ computazionale e’ sempre tale da
permettere la risoluzione solo di alcuni problemi a macchina singola.
Si osservi che anche i metodi basati su regole di priorita’ possono
essere visti come esempi di algoritmi che visitano l’albero di ricerca
scegliendo ad ogni decisione un solo nodo tra i possibili successori.
Questo tipo di approccio e’ noto come greedy (avido): prende una
decisione apparentemente buona solo su base locale, ignorando le
conseguenze future.
181
Per ridurre la miopia degli algoritmi basati su regole di priorita’, una
possibilita’ e’ quella di considerare ad ogni decisione non solo quella
che sembra la migliore, ma le due o tre migliori, trascurando invece
tutte le altre.
Questo da’ luogo agli algoritmi noti come beam search, che significa
appunto “ricerca a fascio”: ad ogni generazione di nodi nel processo
decisionale si considera solo il fascio dei migliori.
Ad ogni nodo dell’albero di decisioni e’ associato un indicatore di
costo; se l’ampiezza del fascio e’ 2, per ogni livello dell’albero si
generano i successori per i soli 2 nodi migliori (ossia i 2 nodi con
costo inferiore).
Un algoritmo greedy e’ un algoritmo a fascio di ampiezza 1.
182
Esempio
28
25
35
29
32
34
27
30
33
Nodo eliminato
183
La difficolta’ nell’applicazione della beam search sta nel valutare la
bonta’ di un nodo dell’albero decisionale, il che naturalmente
dipende strettamente dal particolare problema.
Consideriamo ora a titolo di esempio il problema 1 \ \ ∑ Tj
Una possibile scelta puo’ essere quella di costruire un albero come
mostrato nella slide precedente. Ad ogni nodo, ossia a ogni
sequenza parziale, si associa la tardiness dei job gia’ sequenziati.
Se ad esempio in un nodo si sono gia’ messi in sequenza i primi k
job, allora il costo ad esso associato vale
k
∑T
h =1
σ(h)
La limitazione di tale scelta consiste nel fatto che in generale i primi
job in sequenza rispettano la data di consegna per tutte le possibili
sequenze, per cui tutti i nodi hanno un indicatore pari a 0 e non si
ha un criterio significativo di scelta.
Una soluzione valida in questo caso consiste nel rovesciare la
prospettiva, generando cioe’ la sequenza dal fondo (ossia partendo
dall’ultima posizione). L’indice da stimare in corrispondenza di ogni
nodo sarebbe quindi
n
∑T
h =k
σ(h)
Osservazione: questo approccio funziona in questo caso particolare
in cui i job sono processati senza interruzione per cui il tempo di
completamento totale e’ indipendente dalla sequenza ed e’
semplicemente pari alla somma dei tempi di processamento dei job.
In generale pero’ non e’ applicabile. Non lo e’ ad esempio nel caso
dei problemi: 1 / skj / ∑Tj, 1 / rj / ∑Tj, nel caso di problemi con piu’
macchine, etc.
185
Un approccio alternativo, e di validita’ piu’ generale, consiste
nell’operare su sequenze parziali che vengono completate con
un’euristica veloce, e progressivamente “congelate”.
La misura di prestazione associata al completamento della sequenza
puo’ essere usata come indicatore di qualita’ di un nodo dell’albero
decisionale.
Nel caso 1 / / ∑ Tj, un’euristica veloce per completare la sequenza
parziale e’ la regola EDD.
(Jˆ 1, Jˆ 2 ,K, Jˆ k −1, Jˆ k )
~ ~
~
ˆ
ˆ
ˆ
ˆ
(J1, J2 ,K, Jk −1, Jk , Jk +1, Jk + 2 ,K, Jk +n )
186
L’idea e’ che il completamento ottimale della sequenza non sara’
necessariamente quello ottenuto con la regola EDD, ma non sara’
neppure troppo diverso.
Supposto che il nodo considerato “sopravviva”, si possono generare
i suoi successori aggiungendo un job alla sequenza parziale, che
viene progressivamente congelata.
Naturalmente si possono usare anche regole di priorita’ diverse
dall’EDD.
187
Grafo disgiuntivo
Esistono anche una serie di metodi che si basano su una particolare
rappresentazione del problema di scheduling, nota come grafo
disgiuntivo.
Tale rappresentazione si applica efficacemente soprattutto nel caso
di problemi job-shop.
In particolare, consideriamo un problema di job shop con m
macchine e n job. Supponiamo che non vi sia ricircolo, ossia che
ogni job venga processato al piu’ una sola volta da ciascuna
macchina. Indichiamo con (i, j) l’operazione del job j sulla macchina i.
Possiamo dare una rappresentazione compatta del problema di job
shop attraverso un grafo G orientato e pesato che ha un insieme
di nodi N e due insiemi di archi, C e D.
188
Nodi: corrispondono a tutte le operazioni (i, j) che devono essere
eseguite sugli n job.
Archi congiuntivi C: rappresentano i percorsi dei job e vengono
indicati con linee continue. Es:
(i, j)
(k, j)
Il job j deve essere processato prima dalla
macchina i e immediatamente dopo dalla
macchina j.
189
Archi disgiuntivi: connettono nodi relativi ad operazioni che devono
essere effettuate sulla stessa macchina ma che appartengono a job
diversi.
Definiscono sempre un ciclo in quanto ad ogni arco disgiuntivo
corrisponde sempre un arco uguale ma di verso opposto.
Sono rappresentati mediante linee tratteggiate. Es:
(i, j)
(i, l)
La macchina i deve processare
sia il job j che il job l.
Tutti gli archi uscenti da un nodo (sia congiuntivo che disgiuntivo)
hanno peso pari al tempo di processamento della operazione
relativa al nodo stesso.
190
Vi sono poi un nodo sorgente U e un nodo pozzo V (nodi fittizzi).
Il nodo sorgente U ha n archi archi congiuntivi uscenti che sono
diretti alle prime operazioni degli n job. Tali archi hanno peso nullo.
Il nodo sorgente V ha n archi entranti che provengono dalle ultime
operazioni dei job.
Esempio: Problema di job shop con 3 job e 4 macchine in cui
l’ordine con cui i job devono essere processati dalle macchine e’ il
seguente:
J1 : M1, M2, M3
J2 : M2, M1, M4, M3
J3 : M1, M2, M4
191
Grafo
disgiuntivo
1,1
U
2,2
1,3
2,1
1,2
2,3
3,1
4,2
3,2
V
4,3
192
Risolvere un problema di scheduling significa scegliere un arco per
ciascuna coppia di archi disgiuntivi.
In questo modo si ottiene un grafo composto di soli archi congiuntivi.
Tale grafo e’ detto ORIENTAMENTO del grafo disgiuntivo.
Perche’ un orientamento rappresenti una soluzione di un problema di
scheduling, occorre che non vi siano cicli di precedenze. Ad esempio
non e’ possibile che l’operazione a preceda l’operazione b,
l’operazione b preceda l’operazione c e che quest’ultima preceda a.
Osservazione: L’orientamento degli archi disgiuntivi legati ad una
macchina riflette la sequenza dei job su quella macchina.
In un problema di job shop questo pero’ non assicura che il grafo
complessivo sia aciclico.
Cio’ complica lo sviluppo di algoritmi euristici basati su grafo
disgiuntivo.
193
Il tempo di completamento di un’operazione qualsiasi e’ calcolabile
come la lunghezza del cammino piu’ lungo che unisce il nodo
iniziale fittizio al nodo corrispondente all’operazione.
Un’operazione a ha infatti in generale due predecessori immediati, b e
c, che sono l’operazione dello stesso job secondo il ciclo di
lavorazione e l’operazione di un altro job che precede a in sequenza
sulla stessa macchina. Vi sono quindi 2 vincoli di precedenza che
possono essere espressi come:
Ca = pa + max { Cb, Cc }
Applicando ricorsivamente l’operatore “max” fino a raggiungere il nodo
fittizio iniziale, si intuisce che il tempo di completamento di a e’ proprio
la lunghezza del cammino piu’ lungo dal nodo iniziale al nodo
corrispondente ad a.
Tale cammino e’ detto CAMMINO CRITICO.
194
Il makespan e’ pertanto la lunghezza del cammino a lunghezza
massima che unisce i due nodi fittizi.
Vediamo ora come sia possibile, partendo dal grafo disgiuntivo,
formulare un problema di scheduling come un problema di
programmazione lineare intera.
Supponiamo per semplicita’ di notazione di rinumerare i nodi del
grafo in modo tale che ogni nodo sia contraddistinto da un solo
numero intero anziche’ da una coppia di numeri interi.
Chiaramente a questo punto anche il peso degli archi sara’
caratterizzato da un solo pedice.
Supponiamo ad esempio che il problema allo studio sia J / / Cmax.
195
Problema di programmazione lineare intera
⎧min CN = Cmax
⎪s.t.
⎪
⎪C j ≥ Ci + p j
⎪
⎨C j ≥ Ci + p j − M(1− x ij )
⎪C ≥ C + p − Mx
j
i
ij
⎪ i
⎪x ij ∈ {0,1}
⎪
⎩Ci ≥ pi
∀(i, j) ∈ C
∀(i, j) ∈ D
∀(i, j) ∈ D
∀(i, j) ∈ D
∀i ∈ N
Le variabili note sono i tempi di processamento.
Le incognite sono i tempi di completamento, il makespan e le
variabili binarie
⎧1 l' operazione i e' processata prima di j
x ij = ⎨
⎩0 altrimenti
196
N.B. La variabile binaria xij = 1 se l’operazione i e’ processata prima
dell’operazione j, ma non necessariamente “immediatamente” prima.
Esaminiamo i diversi vincoli
C j ≥ Ci + p j
∀(i, j) ∈ C
Tale vincolo e’ relativo ad operazioni che appartengono allo stesso
job e impone che le operazioni siano processate secondo l’ordine
prefissato.
197
⎧⎪C j ≥ Ci + p j − M(1− x ij )
⎨
⎪⎩Ci ≥ C j + pi − Mx ij
∀(i, j) ∈ D
∀(i, j) ∈ D
Tali vincoli impongono che se due operazioni richiedono la stessa
macchina, queste non possono essere esguite in contemporanea.
In pratica impongono un vincolo digiuntivo:
o Cj ≥ Ci + pj
o Ci ≥ Cj + pi
Cio’ viene fatto introducendo una costante M sufficientemente grande
(che sia maggiore del massimo makespan ottenibile).
198
Se xij = 1
⎧⎪C j ≥ Ci + p j
⎨
⎪⎩Ci ≥ C j + pi − M
Il primo vincolo impone che se l’operazione j e’ eseguita dopo
l’operazione i, il suo tempo di completamento e’ almeno pari
alla somma del tempo di completamento di i piu’ il tempo di
processamento di j.
Il secondo vincolo e’ invece ridondante.
199
⎧⎪C j ≥ Ci + p j − M
⎨
⎪⎩Ci ≥ C j + pi
Se xij = 0
Il secondo vincolo impone che se l’operazione i e’ eseguita
dopo l’operazione j, il suo tempo di completamento e’ almeno
pari alla somma del tempo di completamento di j piu’ il tempo
di processamento di i.
Il primo vincolo e’ invece ridondante.
Ci ≥ p i
∀i ∈ N
Il tempo di completamento di ciascuna operazione e’ almeno
pari al suo tempo di processamento.
200
Formulazioni simili possono essere date in diversi altri casi, quali
ad esempio il problema 1/sjk/∑j wjCj.
Si noti tuttavia che per problemi di notevoli dimensioni una
formulazione di questo tipo non implica affatto l’esistenza di un
algoritmo di risoluzione che garantisca l’ottimo.
Si ricorre allora anche in questo caso a metodi euristici.
201
Metodi di ricerca locale
Alcuni metodi (ad esempio i metodi beam search) anziche’ costruire
la soluzione passo-passo, usano una soluzione completa per
valutare la bonta’ di una data scelta.
Data una soluzione completa, e’ possibile cercare di migliorarla
mediante delle PERTURBAZIONI.
Il nome RICERCA LOCALE deriva dal carattere locale di tali
perturbazioni.
202
Per esempio e’ possibile scambiare coppie di job
(Jσ(1) ,K, Jσ(k) ,K, Jσ(l) ,K, Jσ(n) )
⇓
(Jσ(1) ,K, Jσ(l) ,K, Jσ(k) ,K, Jσ(n) )
oppure adottare mosse del tipo shift/insert
(K, Jσ(l) ,K, Jσ(k -1) , Jσ(k) , Jσ(k +1) ,K)
⇓
(K, Jσ(k) , Jσ(l) ,K, Jσ(k -1) , Jσ(k +1) ,K)
203
• Data una sequenza corrente, le perturbazioni locali generano un
vicinato N.
• Il vicinato viene analizzato e si sceglie la migliore soluzione.
• Se tale soluzione e’ preferibile, in termini di misura di prestazione,
alla soluzione corrente, questa viene sostituita.
• Si genera il vicinato della nuova soluzione corrente e si prosegue.
Il metodo si ferma in corrispondenza di una soluzione che non puo’
essere migliorata dalle perturbazioni prescelte.
Limitazione: il fatto che una soluzione non possa essere migliorata
dalle perturbazioni locali non implica affatto che essa sia la soluzione
ottima del problema. E’ semplicemente una soluzione localmente
ottima che puo’ essere, in termini di qualita’, molto lontana da quella
ottima.
204
Per ovviare a questo problema occorre pertanto modificare lo
schema base della ricerca locale, accettando dei peggioramenti in
termini di indice di prestazione.
Esistono tre diversi approcci che si basano su tale logica:
• Simulating annealing
• Algoritmi genetici
• Tabu search
205
Simulated annealing
E’ una procedura di ricerca che si ispira alla simulazione di un
processo termodinamico regolato da leggi di meccanica
statistica.
La funzione obiettivo e’ posta in analogia con l’energia del
processo che secondo le leggi della meccanica statistica, puo’
anche aumentare senza interventi esterni. Cio’ equivale a dire che e’
ammissibile accettare peggioramenti della funzione obiettivo.
Tale metodo si basa su un certo numero di iterazioni.
Il criterio di arresto puo’ essere legato o al numero di iterazioni
effettuate, o al fatto che non si ottengono miglioramenti per un dato
numero di iterazioni prefissato.
206
Supponiamo che all’iterazione k, la schdulazione corrente sia Sk.
Sia inoltre S0 la migliore schedulazione ottenuta fino a quel punto.
Siano C(Sk) e C(S0) i corrispondenti valori della funzione obiettivo.
Naturalmente: C(Sk) ≥ C(S0).
Al passo k l’algoritmo cerca nel vicinato di Sk una soluzione migliore
secondo certe regole (casuali o sistematiche). In questo modo viene
selezionata una nuova soluzione Sc.
Se C(Sc) < C(S0), si pone S0 = Sc.
Se C(Sc) < C(Sk), si pone Sk+1 = Sc.
Se C(Sc) ≥ C(Sk), si pone Sk+1 = Sc con probabilita’
P(Sk, Sc) = exp ( (C(Sk) – C(Sc))/βk )
mentre con probabilita’ (1- P(Sk, Sc)) si pone Sk+1 = Sk.
207
I parametri β1 ≥ β2 ≥ β3 ≥ … > 0 sono parametri di progetto noti come
cooling parameters.
Spesso si pone βk = ak per un dato a in (0,1).
E’ quindi chiaro che lo spostamento a soluzioni peggiori sia
ammesso, anche se la probabilita’ che questo accada diminuisce
con il crescere del numero delle iterazioni effettuate.
Si osservi anche che la probabilita’ di accettare un peggioramento
della soluzione e’ anche tanto minore quanto maggiore e’ l’entita’ del
peggioramento stesso.
L’efficienza del metodo dipende chiaramente dalla bonta’ del criterio
usato per generare il vicinato, che influenza la probabilita’ di uscire
da minimi locali.
208
Algoritmi genetici
Le schedulazioni sono viste come individui di una popolazione.
Ogni individuo (spesso detto anche cromosoma) e’ caratterizzato
dalla sua fitness (il valore corrispondende della funzione obiettivo).
La procedura lavora iterativamente e ogni iterazione corrisponde ad
una generazione.
La popolazione di una generazione consiste di individui che
sopravvivono dalla precedente generazione (solitamente quelli con
la fitness migliore) piu’ i children.
I children sono generati da riproduzioni e mutazioni degli individui
che facevano parte della precedente generazione (i parents).
Solitamente l’ampiezza della popolazione rimane costante da una
generazione all’altra.
209
I processi di nascita, morte e riproduzione che determinano la
composizione della nuova generazione possono essere molto
complessi e solitamente dipendono dai livelli di fitness degli
individui della generazione corrente.
Si puo’ subito osservare che vi e’ una fondamentale differenza tra il
simulated annealing e gli algoritmi genetici. Infatti nel s.a. ad ogni
iterazione una sola schedulazione viene portata avanti, mentre negli
a.g. vi e’ un insieme di soluzioni.
Pertanto il s.a. puo’ essere visto come un caso particolare di a.g. in
cui la dimensione della popolazione e’ pari a 1. Vedremo che questa
considerazione si estende anche alla tabu search.
La determinazione del vicinato e’ nel caso degli a.g. basato su
tecniche piu’ generali di quelle usate per il s.a.
210
Una nuova schedulazione puo’ essere costruita combinando parti di
schedulazioni diverse all’interno della popolazione.
Ad esempio, in un problema di job shop una nuova schedulazione
puo’ essere generata combinando la sequenza di operazioni su una
macchina in una schedulazione genitore con una sequenza di
operazioni su un’altra macchina in un’altra schedulazione genitore.
Questo processo e’ solitamente indicato come effetto di crossover.
211
Tabu search
Idea base: la migliore soluzione del vincinato va accettata
comunque, anche se essa rappresenta un peggioramento rispetto
alla soluzione corrente.
Problema: in questo modo e’ estremamente facile ciclare sulle
stesse soluzioni. Infatti, se siamo in un ottimo locale e accettiamo
una soluzione alternativa, e’ probabile che il vecchio ottimo locale sia
la migliore soluzione del vicinato della nuova soluzione corrente.
Per evitare di ciclare dobbiamo trovare il modo di non visitare
soluzioni gia’ incontrate in precedenza.
212
Soluzioni possibili:
1) Mantenere memoria esplicita di tutte le soluzioni incontrate (NON e’
computazionalmente fattibile).
2) Mantenere in memoria le sole soluzioni piu’ recenti.
3) Mantenere memoria non di tutta una soluzione, ma solo di alcuni
suoi ATTRIBUTI (detti TABU).
Esempio di attributi tabu:
•
Il valore della misura di prestazione.
•
Determinate mosse: si impediscono le mosse opposte a quelle
appena effettuate.
Si mantiene memoria delle restrizioni in una struttura detta TABU LIST.
213
La lunghezza della tabu list deve essere scelta con accortezza.
•
Valori troppo bassi non impediscono di ciclare.
•
Valori troppo alti possono vincolare eccessivamente il processo di
ricerca con un conseguente deterioramento dei risultati.
Applicazione al problema F / / Cmax
Come prima cosa dobbiamo definire una struttura di vicinato.
Consideriamo ad esempio le seguenti operazioni.
Scambio di job adiacenti nella sequenza:
(Jσ(1) ,K, Jσ(k) , Jσ(k +1) ,K, Jσ(n) )
⇓
(Jσ(1) ,K, Jσ(k +1) , Jσ(k) ,K, Jσ(n) )
214
Rotazione a sinistra della sequenza:
(Jσ(1) , Jσ(2) ,K, Jσ(n-1) , Jσ(n) )
⇓
(Jσ(2) ,K, Jσ(n-1) , Jσ(n) , Jσ(1) )
Rotazione a destra della sequenza:
(Jσ(1) , Jσ(2) ,K, Jσ(n-1) , Jσ(n) )
⇓
(Jσ(n) , Jσ(1) , Jσ(2) ,K, Jσ(n-1) )
215
Osservazione:
•
Gli operatori di rotazione sono giustificati dal fatto che se il primo e
l’ultimo job nella sequenza corrente devono essere scambiati per
ottenere una buona soluzione, e’ necessario un gran numero di
scambi tra job adiacenti per l’effetto desiderato.
E’ consigliabile quindi ricorrere ad un vicinato piu’ ricco, che
comprende scambi di job non necessariamente adiacenti, e mosse di
shift/insert.
¾ Definita una struttura di vicinato, ad ogni iterazione si sceglie come
nuova soluzione corrente la migliore sequenza non tabu.
¾ Per evitare di ciclare possiamo proibire una mossa opposta a quella
selezionata.
216
Gli attributi tabu sono in questo caso:
ƒ una coppia di job che non possono essere scambiati
ƒ un job iniziale (finale) che non puo’ essere spostato alla fine
(inizio) della sequenza mediante una rotazione a sinistra (destra).
Esempio:
Job
pi1
pi2
pi3
J1
1
8
4
J2
2
4
5
Tutti i job devono
visitare le macchine
nell’odine:
J3
6
2
8
M1, M2, M3, M4
J4
3
9
2
217
Passo 1)
Supponiamo di partire dalla sequenza iniziale:
(J4, J3, J2, J1) → Cmax = 31
Vicinato completo:
(J3, J4, J2, J1) →
34
(J4, J2, J3, J1) →
33
(J4, J3, J1, J2) →
31
(J3, J2, J1, J4) →
31
(J1, J4, J3, J2) →
33
Scegliamo (arbitrariamente)
(J4, J3, J1, J2) → Cmax = 31
Lista tabu
{(exch, J2, J1)}
218
Passo 2)
Vicinato della nuova sequenza:
(J3, J4, J1, J2) →
35
(J4, J1, J3, J2) →
37
(J4, J3, J2, J1) →
31 (tabu)
(J3, J1, J2, J4) →
31
(J2, J4, J3, J1) →
29
Scegliamo
(J2, J4, J3, J1) → Cmax = 31
Lista tabu
{(exch, J2, J1), (rotl, J2)}
219
Passo 3)
Vicinato della nuova sequenza:
(J4, J2, J3, J1) →
33
(J2, J3, J4, J1) →
32
(J2, J4, J1, J3) →
35
(J4, J3, J1, J2) →
31 (tabu)
(J1, J2, J4, J3) →
32
Poiche’ la tabu search prevede di prendere comunque la soluzione
migliore del vicinato anche se questa comporta un peggioramento
della funzione obiettivo,
Scegliamo
(J2, J3, J4, J1) → Cmax = 32
Lista tabu
{(exch, J2, J1), (rotl, J2), (exch, J3, J4)}
220
Passo 4)
Vicinato della nuova sequenza:
(J3, J2, J4, J1) →
33
(J2, J4, J3, J1) →
29 (tabu)
(J2, J3, J1, J4) →
29
(J3, J4, J1, J2) →
35
(J1, J2, J3, J4) →
28
Scegliamo
(J1, J2, J3, J4) → Cmax = 28
che e’ effettivamente la soluzione ottima.
Naturalmente in un caso pratico noi non sapremmo di avere trovato
la soluzione ottima e procederemmo per un certo numero di
iterazioni senza trovare di meglio.
221
Applicazione al problema J / / Cmax
L’applicazione della tabu search e’ in questo caso piu’ difficoltosa per
le seguenti due ragioni fondamentali.
1) La dimensione del vicinato
2) L’ammissibilita’ delle soluzioni. A differenza del caso flow shop,
ora non vi e’ alcuna garanzia di generare soluzioni ammissibili
quando si perturbano le sequenze
Puo’ essere utile basarsi sul grafo disgiuntivo per costruire il
vicinato. Ad esempio, si perturbano le sequenze incidendo sui soli
archi disgiuntivi che giacciono sul cammino critico.
222