Capiremo come la variabilità come condiziona le performance di sistema, capendo le cause e come
affrontarla, se occorre migliorarla e le conseguenze nel flusso produttivo.
Per i tempi ercheremo di riferirci al coefficiente di variazione, ossia un nuovo parametro che crea
un legame tra media e varianza.
•Una definizione formale di variabilità è la caratteristica di non uniformità di una classe di entità.
• La variabilità è strettamente associata (ma non identica) alla aleatorietà. Voglio quantificare
l’aleatorietà: quanto il nostro processo è soggetto a variabilità?
Contro la variabilità casuale non si può fare niente: l’unica cosa che posso fare è mettermi in
sicurezza.
1
La media è una media aritmetica (“-“ è un cappellino e vuol dire che sto parlando di valore
campionato, poiché calcolata sul campione).
La varianza non ha la stessa unità di misura della media. Pertanto se il mio processo ha una
media di 10 minuti, la varianza avrà un’unità di misura del tipo min 2 (ad es. se la varianza è 2 e
la media è 10, è sbagliato dire che i valori del processo variano tra 10-2 e 10+2, poiché la
varianza ha un’altra unità di misura).
Questo perché la varianza è solo una variabile statistica. Essa non ci dice quanto è grande
l’intervallo di variazione, ma solo di quanto varia un certo numero nell’intervallo di variazione.
La varianza è utile per valutare la deviazione standard (come radice quadrata della varianza).
Essa ci consente di stimare in modo approssimativo in che “zona” dell’intervallo di variazione
ricadranno gran parte dei valori analizzati: il 66% di questi (ad es.) ricadranno nell’intervallo
compreso tra [media-deviazione standard; media+deviazione standard].
Per questi motivi, i produzionisti non amano parlare di varianza, ma di tempo minimo e
massimo.
Il coefficiente di variazione ci dice quanta variabilità ho nel processo ed è un numero che può
venire >1, ma 1 fa da spartiacque: (ad essere precisi, gli spartiacque sono 0.75 e 1.33)
2
Variabilità dei tempi di processamento
Quando c≤0.75 siamo nell’ambito di variabilità naturale: non posso migliorarla perché esisterà
sempre (ad es. perché gli operatori sono tutti diversi).
Una variabilità da moderata ad alta diminuisce le prestazioni del sistema, anche se il valore medio è
relativamente piccolo. Ciò è dovuto alla generazione di fenomeni di coda.
3
Il grafico di destra indica anch’esso la PDF, ma confronta due distribuzioni aventi stessa media e
differente coefficiente di variazione. Vediamo che la curva con coefficiente di variazione moderato
(a differenza di quello low) è meno stretta e più bassa: quindi, la probabilità di pescare valori
differenti al valor medio è maggiore.
I tempi di processo ad alta variabilità sono generati da fenomeni che avvengono a bassa frequenza
ma ad alta intensità (interruzioni). • In questo caso, la coda della distribuzione è significativa.
Il grafico di sinistra confronta le PDF di due distribuzioni con differente coefficiente di variazione
(basso e alto). Vediamo che per quella con coefficiente di variazione basso ho maggiore probabilità
di pescare valori differenti a quello medio.
Il grafico di destra, invece, zooma quello di sinistra ed evidenzia che per alcuni intervalli di
osservazione le distribuzioni ad elevato coefficiente di variazione hanno valori che possono essere
circa equiprobabili.
4
Cause di variabilità
• Per identificare le strategie di gestione dei sistemi di produzione a fronte della variabilità,
è importante innanzitutto comprendere le cause della variabilità.
Variabilità Naturale
La variabilità naturale è insita nel tempo naturale del processo. Nella variabilità naturale metto tutte
le variabilità di cui non conosco le cause (tipo la natura di Hegel, filosofia). Essa esclude:
La variabilità naturale tiene conto di fonti di variabilità che non sono state esplicitamente
richiamate. Queste fonti sono tipicamente legate all'operatore, quindi c'è una variabilità più naturale
nei processi manuali che in quelli automatizzati. Pertanto l’azienda cerca di automatizzare i processi
per abbassare la variabilità naturale.
Nella maggior parte dei sistemi, i tempi naturali di processo hanno LV e pertanto c0 < 0.75.
5
Se in un processo produttivo la variabilità che calcolo ci viene maggiore di 0.75 c’è un
problema: (1) potrei aver sbagliato i conti; (2) potrei avere inserito (nel calcolo della
variabilità naturale) dei tempi che appartengono ad altre variabilità e non a quella naturale.
Come si calcola co? Ad esempio, utilizzando un cronometro e misurando il tempo che intercorre
tra quando arriva il pezzo alla macchina e quando esce. Dopo aver effettuato un buon numero di
misurazioni, calcolo il valor medio e la deviazione standard dei tempi di processamento. Fatto ciò,
ne faccio il rapporto e trovo co.
I tempi di processo naturali sono solo il punto di partenza per valutare i tempi di processo effettivi.
In qualsiasi sistema di produzione reale, le postazioni di lavoro sono soggette a vari detrattori,
Per vedere come le interruzioni della macchina causino la variabilità, consideriamo due macchine
parallele ognuna con la propria linea:
6
Supponiamo che entrambe le macchine abbiano la stessa variabilità naturale, rappresentata da una
deviazione standard σ0 = 3.35 min.
• Inoltre, entrambe le macchine sono soggette a guasti e hanno la stessa disponibilità a lungo
termine del 75%.
• Tuttavia, l'M1 ha interruzioni lunghe ma poco frequenti, mentre l'M2 ha interruzioni brevi e
frequenti.
Dal principio le due macchine hanno la stessa capacità nominale, devono soddisfare la stessa
domanda giornaliera, devono garantire lo stesso TH (2.875) e la stessa variabilità naturale σ0
.Inoltre, dai conti fatti, hanno anche la stessa disponibilità A.
7
Facciamo una prima ipotesi: teniamo conto della variabilità considerando i detrattori temporali.
Osserviamo che le macchine erano state vendute con una capacità nominale di 4job/ora, ma
considerando i detrattori (insiti nella disponibilità) siamo già arrivati a 3 job/ora.
• Considerando solo gli effetti medi dei guasti, entrambe le macchine sembrano essere equivalenti.
Tuttavia, se includiamo gli effetti di variabilità, le postazioni di lavoro sono molto diverse. Ad
esempio, se volessimo coprire un guasto generico medio delle macchine con uno stock messo
immediatamente a valle, il WIP delle due macchine sarebbe diverso.
Il problema è insito nel MTTRM1 poiché un tempo di riparazione così lungo mi ferma i processi a
valle della macchina M1. In questo modo la linea, associata alla macchina M1, funzionerebbe a
singhiozzo. Per risolvere questo problema devo mettere più WIP in modo da accumulare del
materiale a valle della macchina M1 per far si che i processi a valle possano funzionare.
Quindi decido di accettare il guasto nella linea, ma per farlo devo garantire un WIP M1=12. In questo
modo la macchina successiva ad M1 lavorerà lo stesso e nel frattempo posso riparare M1.
Tipicamente si è soliti lavorare con un certo margine di sicurezza e bufferizzare con valori più alti
(anziché 12, preferisco approssimare a 20 per lavorare in sicurezza). Ovviamente aumentando il
WIP diminuisce il CT e sono meno competitivo sul mercato.
8
Poiché i guasti sono casuali, M1 ha bisogno di un elevato WIP per compensare gli effetti di
variabilità rispetto a M2. Il risultato è che una linea con M1 sarà meno efficiente (cioè avrà un
tempo di ciclo e WIP più elevato per ottenere la stessa produttività) rispetto alla stessa linea con
M2. Quindi, considerando gli effetti della variabilità, M2 è migliore di M1 anche se mediamente
sono equivalenti.
Facciamo un’altra ipotesi: maggiore variabilità (ci mettiamo in una situazione di memoryless, cr=1)
Supponendo che le TTF siano distribuite in modo esponenziale, possiamo ottenere alcune equazioni
per stimare la variabilità dei guasti.
MTTF
La prima equazione è banale, al denominatore abbiamo A=
MTTF+ MTTR
La seconda equazione è difficile da determinare, ma ciò che ci interessa sapere è che la varianza
effettiva può essere scritta come somma di 2 aliquote: una legata alla variabilità naturale ( σ0) ed una
alla varianza dei TTR (σr).
Il coefficiente di variazione quadratico è somma di 3 aliquote: una legata a c0 , una legata al MTTR
(mr) ed una legata a cr.
Possiamo vedere che anche un tempo di riparazione deterministico causa variabilità. Ciò è
dovuto al fatto che una riparazione produce un arresto del flusso anche se il tempo di riparazione è
deterministico. Infatti ponendo cr2 = 0 (che equivale a considerare una situazione deterministica) ho
9
ancora una certa variazione poiché il coefficiente di variazione vale . Questa
variabilità è insista nella disponibilità A che include le riparazioni ed i guasti.
Ce12 più grande equivale a dire che la variabilità complessiva dei tempi di processamento della
macchina 1 è maggiore. Inoltre, qui vediamo il motivo per cui la macchina 1 ha più WIP: essendo
più variabile nei tempi, un modo per mascherare le inefficienze è riempirla di WIP.
Questa analisi porta alla conclusione che una macchina con interruzioni frequenti ma brevi è
preferibile ad una macchina con interruzioni poco frequenti ma lunghe, a condizione che le
disponibilità siano le stesse.
Tipicamente operiamo a cr=0, proprio perché è difficile da determinare: valutare cr vorrebbe dire
considerare anche tutti gli eventuali guasti ed ipoteticamente avrei una stima affidabile solo quanto
devo buttare la macchina.
• Alcuni esempi sono i setup, i piccoli arresti dovuti alle ispezioni e alle normative delle macchine,
e così via.
• Quindi, in una interruzione non-preemptive, il job termina il processo prima che l’interruzione si
verifichi.
Come nel caso delle interruzioni preemptive, il calcolo della capacità media non analizza
completamente gli impatti di setup non-preemptive.
10
L'analisi della capacità media ci dice solo che le configurazioni brevi sono migliori di quelle
lunghe. Non può valutare le differenze tra una macchina lenta con setup corti e una veloce con setup
lunghi che hanno la stessa capacità effettiva.
• Supponiamo di confrontare due macchine, M1 e M2, che elaborano sequenze di job. Quando il
tipo di job cambia, è necessario un setup sulla macchina.
La macchina 2 è la più lenta, ma ha una flessibilità così alta che non c'è bisogno di effettuare i setup
(cioè, il tempo di setup è 0).
Dire che il tempo di setup=0 equivale a considerare l’uomo: l’essere umano è la “macchina” più
flessibile e può passare da una parte all’altra del processo senza sostenere tempi di setup.
I parametri medi che caratterizzano le nostre macchine possono essere calcolati come segue:
11
ts
teM 1=t 0+
Ns
Come fatto nel caso preemptive, analizziamo ora le due macchine dal punto di vista della
variabilità.
Se ipotizziamo che il numero medio di job processati (Ns) tra un setup e l'altro derivi da un
processo senza memoria mi libero della variabilità di Ns e possiamo ottenere:
La prima equazione è diversa da quella del caso precedente, ma anche qui ho la somma di 3
aliquote. All’aumentare di ts (tempo di setup) aumenta la varianza.
Dire che Ns deriva da un processo memoryless è un’ipotesi forte, ma non è campata in aria perché
questa quantità può essere controllata (seppur minimamente).
L'ipotesi fatta è realistica quando la media e la deviazione standard del numero di job processati tra
i setup sono uguali, quindi
𝑐𝑁𝑠 = 1
Applichiamo la formula sopra riportata al nostro caso, supponendo che M1 sia una macchina
automatica sui tempi di processamento:
12
Sia la variabilità del processo (la prima) che quella dei tempi di setup (la seconda) hanno valori
molto bassi, questo vuol dire che il processo è automatizzato.
Questo valore rientra ancora nell’ambito della variabilità nautrale, inoltre non ho cs M2 perché il
tempo di setup della seconda macchina è nullo.
Calcoliamo ora i coefficienti di variazione al quadrato delle due macchine, ricordando che
Questi sono ottimi risultati, ma ci inducono a riflettere: un processo manuale non è detto che sia
peggio di quello automatizzato; in termini medi conviene quello automatico (c 0=0.25), ma in
termini variabili dipende dai dati del mio problema.
Così, la macchina M2, la macchina più variabile senza setup, ha meno variabilità complessiva
rispetto alla macchina M1, la macchina meno variabile con setup.
Naturalmente, questa conclusione è stata una conseguenza dei numeri specifici dell'esempio. Per
esempio, se M1 avesse un setup più breve (ts = 1 ore) dopo una media di Ns = 5, la capacità
effettiva rimarrebbe invariata, ma la variabilità effettiva diminuirebbe a c𝑒2 = 0.16, quindi meno di
quello di M2.
13
Solitamente quando analizziamo un processo (ad es. una macchina) prima facciamo una valutazione
sui guasti (considerando le diverse alternative d’intervento) e poi ragioniamo sui setup. Infine
decidiamo quale aspetto penalizzare in base ai costi. Impara questa tabella, sarà chiesta all’esame.
Sinora abbiamo parlato della variabilità della macchina. Ora consideriamo una linea in cui ho più
macchine le cui variabilità condizionano il rateo di arrivo finale.
Chiaramente, se una stazione di lavoro a monte ha tempi di processo altamente variabili, il flusso
che alimenta le stazioni di lavoro a valle sarà anch'esso altamente variabile (le variabilità si
cumulano)
• Pertanto, per analizzare l'effetto della variabilità sulla linea, dobbiamo caratterizzare la variabilità
dei flussi.
• Il punto di partenza per lo studio dei flussi è l'arrivo dei lavori ad una singola postazione di lavoro.
La partenza da questa postazione di lavoro sarà a sua volta l'arrivo ad altre postazioni di lavoro.
• Quindi, per caratterizzare la variabilità del flusso, dobbiamo descrivere la variabilità degli arrivi
ad una postazione di lavoro e determinare come questo influisca sulla variabilità delle partenze da
quella postazione.
Il primo indicatore degli arrivi ad una postazione di lavoro è il tasso di arrivo, ra , misurato in job
per unità di tempo. Il tasso di arrivo è il reciproco del tempo medio tra gli arrivi ta
14
Affinché la postazione di lavoro sia in grado di tenere il passo con gli arrivi, è essenziale che la
capacità superi il tasso di arrivo, quindi
𝑟𝑒 > 𝑟𝑎
Nei casi realistici, cioè in presenza di variabilità, la capacità deve essere strettamente superiore al
tasso di arrivo per evitare che la stazione si sovraccarichi.
Come per il tempo di processamento, possiamo definire la variabilità dei tempi di interarrivo
attraverso il coefficiente di variazione (CV).
Queste linee indicano le linee di produzione, i pallini rappresentano i jobs. Sopra ho un flusso più o
meno ordinato; sotto ho la situazione peggiore, poiché ci sono dei momenti in cui ho produttività
nulle ed altri in cui sono elevatissime.
Per caratterizzare le partenze dalla postazione di lavoro, possiamo utilizzare misure analoghe a
quelle utilizzate per descrivere gli arrivi (tempo medio tra le partenze td , tasso di partenza rd ).
15
In una linea di produzione in serie (o produzione a flusso), dove tutta l'uscita dalla stazione di
lavoro i diventa ingresso alla stazione di lavoro i + 1, il tasso di partenza da i deve essere uguale al
tasso di arrivo a i + 1.
• Infatti, in una linea di produzione in serie senza perdita di rendimento o rilavorazione, il tasso di
arrivo ad ogni postazione di lavoro è pari al TH della linea.
• Inoltre, in una linea seriale dove le partenze da i diventano arrivi a i + 1, il CV di partenza della
stazione di lavoro i è lo stesso del CV di arrivo della stazione di lavoro i + 1.
• L'unico problema che resta da risolvere riguardo alla variabilità dei flussi è come caratterizzare la
variabilità delle partenze da una stazione in termini di informazioni sulla variabilità degli arrivi e
dei tempi di processamento.
• La variabilità delle partenze da una stazione è il risultato sia della variabilità degli arrivi alla
stazione che della variabilità dei tempi di processamento.
• Il contributo relativo di questi due fattori dipende dall'utilizzo della postazione di lavoro
L'utilizzo di una postazione di lavoro, u, è la frazione di tempo che è occupata nel lungo periodo,
quindi, per una postazione di lavoro formata da m macchine identiche:
Poiché il limite superiore per u è 1, il tempo effettivo del processo deve soddisfare:
16
aspetteremmo anche 𝑐𝑑 = 𝑐𝑒 . Una macchina ad u=1 quando si guasta rallenterà di molto le
prestazioni delle altre macchine.
• All'altro estremo, quando u è vicino a 0, la stazione è molto scarica. Praticamente ogni volta che
un job è finito, la stazione deve aspettare a lungo prima che un altro lavoro arrivi. Quindi, in queste
condizioni ci si aspetterebbe 𝑐𝑑 = 𝑐a
Un buon e semplice metodo per l'interpolazione tra questi due estremi è quello di utilizzare il
quadrato dell'utilizzo come segue:
Quando c'è più di una macchina in una stazione (𝑚 > 1) , il seguente è un modo ragionevole per
stimare 𝑐𝑑 2 :
La due relazioni di sopra sono approssimate: la prima è legata ad una sola macchina, la seconda si
estende a più macchine.
17
Lezione 16 – 01/12/2020
Con la teoria delle code tireremo fuori i coefficienti (CT,TH,WIP) della linea produttiva.
• La variabilità produce tempi di attesa, che vengono spesi dai job in coda quando arrivano ad una
postazione di lavoro.
• Un sistema di code combina i componenti che sono stati considerati finora: un processo di arrivo,
un processo di servizio (cioè di produzione) e una coda. • Il compito della teoria delle code è quello
di caratterizzare le misure di performance in termini di parametri descrittivi.
Dove CTq=cycle time che impiego nella coda come WIP, mentre te= tempo effettivo di processamento
Se esistono due CT posso definire due WIP, sfruttando la legge di little applicata alla stazione e alla
coda:
19
WIP=wip che comprende tutto
WIPq=wip di coda; se tutto torna (e sono a regime) WIPq=WIP-m , perché potrei avere una stazione che ha
3 macchine (m=3) e di conseguenza il wip di lavorazione sarà 3.
Dove 𝑇𝐻 = 𝑟𝑎 se la coda non è limitata nelle dimensioni (𝑟𝑒 > 𝑟𝑎), altrimenti il throughput deve
essere calcolato in modo specifico.
Questa considerazione (coda non limitata) è mediamente vera, se la cosa fosse limitata il TH sarebbe
condizionato da altri parametri di performance e quello valutato in precedenza rappresenterebbe sono un
throughput potenziale.
Questo è il modello di coda più semplice, dato che le ipotesi sono tempi di interarrivo e di processo
esponenziali, macchina singola, protocollo "first-come first-served" e spazio illimitato per i lavori
in attesa in coda.
I job mi arrivano con una distanza dei tempi esponenziale: se dico che mi arrivano con una media di 10min,
significa che ogni 10 minuti mediamente arriva un job. Quindi posso dire che in un’ora me ne arrivano 6, ma
l’inghippo è che sono solo valori medi (potrebbe capitare che mi arrivano 2 jobs a distanza ravvicinata, poi il
resto molto lontani).
- In una coda MM1 non dobbiamo porci il problema della variabilità: questo poiché quando si accetta
l’ipotesi di distribuzione esponenziale (memoryless) si può ragionare con i termini medi ed ottenere
risultati esatti (mediamente) nel lungo termine. Conoscere le performance di lungo termine è
fondamentale per dimensionare il processo, quindi questa ipotesi non è campata in aria.
- Dire che la macchina è singola, ci dice che la stazione ha una sola macchina.
- Protocollo first-come first-served: il primo che arriva è quello che viene servito (first-in, first-out). Questa
ipotesi è tipicamente quella che performa peggio, poiché mediamente questa logica va a sottostimare (il
che ci consente di metterci in sicurezza).
20
Dovemmo dire M/M/1/0 e rispettivamente equivale a dire: tempi di arrivo esponenziale/tempi di process.
esponenziali/macchina singola/coda illimitata(manca la b, ma dovremmo 0).
Guardando l’immagine di sopra impariamo a leggere un processo Markoviano: i pallini sono gli stati nella
nostra stazione. Lo stato 0 significa che la stazione non ha WIP (quindi la stazione è ferma). Lo stato 1
indica che la stazione ha 1 WIP (e quindi sta processando il job); adesso potrebbe interessarci sapere da
quanto tempo il job è allo stato 1, ma ricordiamo che la distribuzione dei tempi è di tipo memoryless, quindi
non ci interessa (poiché non ci direbbe nulla sul futuro). Nello stato 2 ha 1 job in coda ed 1 job in
processamento. Nello stato 3 ho 2 job in coda ed 1 in processamento. Nello stato n ho (n-1) job in coda e 1
job in processamento. Ho sempre un solo job in processamento poiché sto considerando una stazione a
singola macchina.
Supponiamo che ogni stato (0,1 ecc) abbia una certa probabilità di accadimento. Esiste una legge che mi
consente di passare da uno stato all’altro. Questa legge è detta di Birth and Death (nascita o arrivo, morte
o uscita). Per noi la nascita è dettata dal rateo di arrivo (ra), quando il job muore torna indietro secondo il
rateo di uscite (re).
A regime (steady-state), è possibile dire che il sistema si muove dallo stato n-1 allo stato n con
probabilità pari a:
Analogamente, il sistema ritorna dallo stato n allo stato n-1 con probabilità pari a:
Visto che il sistema è stabile (poiché è a regime), queste due probabilità non possono che essere
uguali
Le uguagliamo poiché il processo è stabile: probabilità di spostarsi tra i processi sono le stesse
Osservando che 𝑢 = 𝑟𝑎/𝑟𝑒 , possiamo dire che la probabilità di trovarmi ad un generico stato n vale:
Dalla definizione di utilizzazione, segue che la probabilità a lungo termine che la stazione non sia
utilizzata sarà pari a 𝑝𝑜 = 1 − 𝑢, pari proprio alla probabilità di trovarsi allo stato 0.
21
Vera la precedente equazione, possiamo quindi ricavare le diverse probabilità degli stati futuri,
come:
La somma di queste probabilità, essendo riferite allo stesso sistema, deve essere pari a 1:
∞
1 1
Da dividendo tutto per p0, ottengo (1 + u + u2 + ..) = =
p 0 1−u
=¿ ∑ un
n =1
d n
Ricordiamo che x =n x n−1
dx
22
Sostituendo, avremo che:
Per valutare il WIP mi basta l’utilizzazione u. Ricordando, però, che nell’utilizzazione sono
compresi i tempi di processamento (u=ra/re).
Studiando la funzione WIPM/M/1 (con u sulle ascisse) ci rendiamo conto che tende asintoticamente ad
1. Quindi quando l’utilizzazione tende al valore unitario, il WIP M/M/1 tende a valori elevatissimi
(diverge). Questo è un problema.
• Inoltre, fissato u, CT e CTq aumentano al crescere di te . Quindi, per un dato livello di utilizzo, le
macchine più lente causano più tempo di attesa.
• Per esempio, consideriamo una macchina che deve soddisfare una domanda media
23
Supponiamo che sia i tempi di arrivo che quelli di processamento siano distribuiti in modo
esponenziale.
Quindi, possiamo modellare il sistema come una coda M/M/1.
• Poiché il processo non è più privo di memoria, le misure di performance ottenute sono influenzate
da un'approssimazione.
24
Il tempo medio del ciclo è dato da (vedi Medhi, J., 1991. Stochastic Models in Queueing Theory.
Boston, MA: Academic Press)
Adesso ritornando i coefficienti di variazione a differenza del caso CT M/M/1; inoltre questa formula è
approssimata, in quanto riferita a tempi di processamento ed interarrivo generali (G).
Questa formulazione è chiamata equazione di Kingman, e separa chiaramente i contributi dei CV,
l'utilizzazione e il tempo effettivo di processamento.
Questa formulazione può essere ridotta all'esatta soluzione della coda M/M/1 sostituendo
Consideriamo una linea con due macchine che formano una serie.
Le due macchine hanno le stesse caratteristiche di quelle considerate nell'esempio delle interruzioni
preemptive: uguali in termini medi, ma con diverse variabilità.
25
•Supponiamo che gli arrivi alla prima macchina siano esponenziali con un tasso medio di arrivo pari
a 2.875 job/h, quindi
Poiché M1 ha un elevato utilizzo e un'elevata variabilità del tempo di processo, ci aspettiamo che
anche la variabilità delle partenze sia elevata.
Quindi, abbiamo
c2d1 indica la variabilità della partenza, ed è il coefficiente di variazione quadratico della partenza.
26
• Ora possiamo ottenere i parametri del flusso che entra nella macchina M2. Quindi abbiamo
Anche se M2 ha un tempo di processo caratterizzato da una bassa variabilità, l'alta variabilità degli
arrivi prodotti da M1 ha generato l'alto tempo di ciclo in coda a M2.
Da questo risultato si conclude che soltanto riducendo la variabilità di arrivo (𝑐𝑎) il CT viene scalato di 1/3 circa.
Infine, è interessante dare un'occhiata a ciò che accade nel flusso in partenza da M2
Come si può vedere, M2 mitiga la propagazione della variabilità grazie al suo tempo di processo
stabile insieme all'elevato utilizzo.
27
M2 ci consente di mitigare, infatti non è detto che la variabilità si accumuli. In questo caso si
pongono WIP elevati a monte della macchina instabile ed una macchina molto stabile (ce 2=1) a
valle della macchina instabile. Pertanto la variabilità non è sempre un male, ma bisogna conoscerla.
Il senso delle nostre analisi: nonostante i tempi di processamento siano mediamente bilanciati, il
problema è che sono più variabili su una macchina (M1) piuttosto che su un’altra (M2). Quindi non
bisogna fermarsi alle sole valutazioni medie.
Sinora abbiamo analizzato stazioni a macchina singola (M/M/1), adesso andiamo oltre.
• Questo è il modello di coda più semplice per macchine parallele, quindi consideriamo più
macchine.
• In questo modello, tutti i lavori aspettano in un'unica coda per la prossima macchina disponibile.
• Non si tratta quindi di un parallelo di sistemi M/M/1, in cui ogni sistema avrebbe una coda
dedicata.
Parlare di sistema M/M/3 non è la stessa cosa di parlare di 3 sistemi M/M/1: per i primi si ha
un’unica coda che alimenta 3 macchine parallele; per i secondi si hanno 3 code in parallelo che
alimentano 3 macchine parallele.
Si noti che quando 𝑚 = 1, questa equazione si reduce alla formula esatta della coda M/M/1.
Sakasegawa, H. 1977. An approximation formula Lq ≃α·ρβ/(1-ρ). Annals of the Institute of Statistical Mathematics, 29 (1), 67-75.
28
Esempio: coda M/M/m
𝑟𝑎 = 8.625 job/h
𝑟𝑒 = 3 job/h
Vogliamo sapere qual è il numero minimo di macchine necessarie nella stazione e qual è la strategia
migliore per gestire i job in entrata (coda singola o separata). Il numero minimo di machine vale:
Per quanto riguarda la gestione delle code, se progettiamo il sistema con 3 code separate, adottando
un approccio «round-robin» per distribuire i lavori in entrata, in ogni coda arriveranno job con
tempi di arrivo esponenziali e con un tasso medio di 1/3 di quello principale
Quindi, abbiamo tre code identiche che funzionano come se fossero sistemi di coda M/M/1
Un generico job che arriva alla stazione passerà, in media, 7,66 ore in coda.
• Consideriamo ora il caso in cui i job attendono in un'unica coda che serve tutte e tre le macchine.
Prima di tutto, calcoliamo l’utilizzazione della stazione:
Come ci aspettavamo, è lo stesso di quello calcolato nel caso precedente, poiché, dal punto di vista
della media, il sistema funziona allo stesso modo.
29
D’altra parte, invece, il funzionamento della coda è differente. Infatti:
Come si può vedere, il tempo medio di ciclo con un’unica coda è inferiore a quello delle tre code
separate.
Il motivo è che, quando abbiamo una sola coda, un job che richiede un lungo tempo di
processamento può essere superato dagli altri in coda, che possono così andare alle altre macchine.
Al contrario, se le code sono separate a priori, un job che possiede un tempo di processamento
molto lungo blocca tutti gli altri job in coda
Conclusione: se ho più macchine in una stazione, è sempre meglio usare una coda singola per
minimizzare il CTq.
• Un'approssimazione accettabile per il tempo di ciclo in coda in una coda G/G/m può essere
ottenuta partendo dal caso M/M/1:
È stato dimostrato che questa approssimazione funziona bene nella maggior parte dei casi (vedi Whitt,
W. 1983. The Queueing Network Analyzer. Bell System Technology Journal, 62(9), 2779-2815).
30
Fenomeni di Bloccaggio
• Finora abbiamo considerato sistemi in cui non c'è limite a quanto grande possa crescere la coda.
• In ogni sistema che abbiamo esaminato, la coda media (e il tempo di ciclo) cresce all'infinito man
mano che l'utilizzo si avvicina al 100%. Se limito la coda ho fenomeni di bloccaggio.
• Ma nel mondo reale le code sono limitate da limiti di spazio, tempo o politica operativa. Quindi, i
valori calcolati sinora sono soltanto delle misure potenziali.
• Risulta importante avere un modello per i sistemi in cui le code sono limitate.
b è il limite superiore del numero di jobs; ad esempio, b=4 vuol dire che il mio sistema ammette 3
jobs in coda ed 1 è in processamento (poiché 1/b).
• In questo modello di coda i tempi di interarrivo sono esponenziali, ma c'è spazio sufficiente solo
per le unità b nel sistema (in coda e in processo).
• Questo sistema si comporta più o meno nello stesso modo della coda M/M/1, tranne che ora, ogni
volta che il sistema diventa pieno, il processo di arrivo viene fermato (ad esempio un buffer).
In questo caso, il tasso di arrivo 𝑟𝑎 assume un significato diverso rispetto ai modelli coda senza
limiti. Qui rappresenta il tasso di arrivo potenziale, supponendo che il sistema non sia pieno.
Quindi, 𝑢 = 𝑟𝑎 ⋅ 𝑡𝑒 non è più la probabilità a lungo termine che la macchina sia occupata, ma
rappresenta invece l’utilizzazione potenziale, se non vi fossero blocchi.
Di conseguenza, u può essere ≥ 1 poiché con il bloccaggio sto ammettendo ra > re.
dove 𝑝𝑏 rappresenta la probabilità di avere b jobs all’interno della coda e, quindi una coda piena
bloccata a monte dagli arrivi. Quindi THcoda_limitata < THcoda_illimitata.
Tale probabilità può essere calcolata in termini esatti per il modello coda M/M/1/b.
31
Quindi, anche le altre misure di performance possono essere calcolate in termini esatti.
• Quando 𝑢 ≠ 1 noi abbiamo:
• Quando 𝑢 = 1 invece:
Per entrambi i casi, 𝑢 mantiene la stessa definizione dei modelli a coda non limitata
Possiamo usare la legge del Little per calcolare il tempo di ciclo, il tempo di coda e la lunghezza della coda
Nota: un sistema con una coda limitata ha un throughput sempre inferiore a quello di un
sistema con coda non delimitata
Tanto più è grande la coda (ossia b) e tanto minore è la riduzione di performance rispetto al
THcoda_illimitata
È chiaro che, limitando le code tra i processi (ad es. kanban) in sistemi caratterizzati da variabilità,
si ottiene una riduzione della produttività del sistema. Quindi, in un sistema JIT, lo spazio di coda e
32
il numero di kanban rilasciati devono essere dimensionati in modo da garantire la giusta copertura
dei fenomeni casuali che producono variazioni nei flussi di produzione.
Esempio
Dal punto di vista della M2 il sistema è del tipo M/M/1/4, b=4 poiché considero i jobs di M1 ed M2
ed il buffer B=2.
Come si può vedere, abbiamo ipotizzato tempi di processo esponenziali. • Prima di tutto,
analizziamo il sistema a coda infinita.
33
Analizziamo ora il caso con modello a capacità finita, adottando il modello coda M/M/1/b: prima di
tutto, dobbiamo calcolare il valore di b. Poiché nel sistema possiamo avere 1 job in ogni macchina
più due job nel buffer, la capacità massima del sistema è:
𝑏 = 1 + 2 + 1 = 4 job
𝑊𝐼𝑃𝑃 rappresenta un WIP parziale poiché si riferisce al caso in cui M1 ha terminato l'elaborazione e
rimane bloccato poiché il buffer è pieno.
Questa è la situazione in cui M2 ha 3 job in coda, i 2 nel buffer e 1 nella macchina M1 bloccati.
Quindi, 𝑊𝐼𝑃𝑃 non include il WIP che viene elaborato alla prima macchina. In particolare, non
considera la situazione in cui ci sono 2 lavori nel buffer, e 1 nella macchina M1 in lavorazione.
Quindi, possiamo considerare che il tempo medio trascorso da un job nel sistema è il tempo
trascorso come WIP parziale alla macchina M2 più il tempo medio in processo alla macchina M1,
quindi
Un confronto tra il modello a coda infinita e i casi a coda limitata mostra che il WIP e il CT sono
costantemente ridotti, a spese di una perdita nel troughput di circa il 18%. Questo evidenzia il
motivo per cui il kanban non può essere implementato semplicemente riducendo le dimensioni del
buffer. La perdita nel throughput è tipicamente troppo grande.
Tanto più kanban metto e tanto più diminuiscono le performance, anche se il sistema è più
prevedibile: devo fare un trade-off tra le due cose. Questo sarà il compito del lean manager.
34
L'unico modo per ridurre il WIP e il CT senza sacrificare troppo il throughput è anche ridurre la
variabilità. Per farlo devo standardizzare il processo, ad esempio automatizzando (a parità di tempi
di lavorazione) posso ridurre la variabilità.
Una seconda osservazione che possiamo fare è che una coda limitata forza la stabilità,
indipendentemente dai valori di 𝑟𝑎 e 𝑟𝑒 . Il motivo è che il WIP, e di conseguenza la CT, non può
«esplodere» in un sistema con un buffer finito.
Per esempio, supponiamo che le due macchine siano state invertite nella linea, con quella più veloce
che alimenta quella più lenta. Se il buffer fosse infinito, il WIP andrebbe all'infinito (a lungo
termine), così come il CT.
Come si può vedere, il throughput non è influenzato dall'ordine delle macchine. Quest'ultimo
risultato è noto come reversibilità e vale anche per linee con più di due macchine e tempi di
processo generali.
Come si può vedere, avendo messo al primo posto la macchina più veloce, il WIP è aumentato,
quindi, come linea guida generale, in sistemi con buffer finiti, la capacità dovrebbe aumentare da
monte a valle.
35
Lezione 17 - 03/12/20
La programmazione operativa
Siamo partiti da un piano aggregato di lungo periodo (cosa fare nel prossimo anno/anno e mezzo).
Una volta che ci siamo resi conto che tale panificazione era sostenibile, ci siamo occupati di
pianificare nel medio periodo con l’MPS in cui ci siamo interessati dei singoli prodotti. Verificata la
fattibilità devo realizzarlo e mi servono distinta base, lead time di produzione e stato dei magazzini.
Se ho questi elementi si procede con l’MRP. A valle della sua verifica di capacità procediamo.
L’MRP ci dava come output gli ordini di acquisto e produzione. Dopo ordini di produzione si hanno
quelli di schedualzione ed infine si ha un controllo dell’avanzamento della produzione. Negli ordini
di produzione daremo esecuzione alle ipotesi fatte dal principio.
36
I sistemi di esecuzione della produzione (MES) sono noti anche come sistemi di controllo in
officina (SFC). I MES, dunque, sono il punto di congiunzione tra officina ed azienda.
ERP – Enterprise Resource Planning – MES : Il sistema ERP può trasmettere i numeri d’ordine,
i numeri dei pezzi e le quantità fino al MES per la verifica ed il tracciamento, oppure può essere
un’interfaccio più semplice con l’ERP che riceve solo i conteggi di produzione dall’officina: così
tanti di un certo pezzo fatto in un certo centro di lavoro dall’ultimo aggiornamento.
37
LA PROGRAMMAZIONE OPERATIVA
Nonostante l’MRP abbia detto cosa bisogna fare, si necessita di un’organizzazione sempre più
dettagliata, nello specifico nell’officina ovvero:
38
Lo scheduling è pertanto un processo di decisone che si pone in svariati contesti applicativi come ad
esempio
39
Sistemi manufatturieri;
Sistemi di elaborazione;
Sistemi di distribuzione;
Trasporti;
Altri sistemi di servizio;
Le risorse, le attività (operazioni di un processo produttivo) e gli obiettivi (a cui far fronte nel
processo, ad ed. i costi o i tempi) di un processo di scheduling possono avere diversa natura.
Cos’è lo Schedule? Come l’MPS o l’MRP, anche lo nello schedule ho una “tabella” nella quale
vengono scanditi i tempi per le diverse attività tendendo conto delle risorse da utilizzare.
Dati:
Studiamo lo scheduling per assicurarci sistematicamente che la maggior parte di questi obiettivi
siano soddisfatti
40
41
42
43
44
45
46
47
Criteri di pianificazione
48
Job Sequencing
Il sequencing stabilisce quale lavorazione avviare per prima su una data macchina o in un dato
centro di lavorazione.
Le materie prime (sulla sinistra) devono seguire un certo percorso. Le stazioni avranno a monte una
coda e bisogna scegliere quale job devo far lavorare per primo per ottimizzare i tempi di consegna.
49
Per il job sequencing si utilizzano delle regole, dette regole di priorità, ne esaminiamo 8.
50
SPT (shortest processing time)
Spesso è usata in combinazione con una regola sul ritardo, per scongiurare eccessivi ritardi delle
lavorazioni con tempi più lunghi (rischierei di non fare mai quelli con tempi più lunghi).
51
Può succedere che per poter rispondere alle date, potrei non avere una riduzione dei costi. Può
succedere che mi arrivano nuovi lavori al centro che avranno la priorità e gli altri andranno indietro.
Sicuramente i costi non saranno quelli ottimi, pertanto devo cercare di trovare un compromesso per
soddisfare la data di consegna ed i costi.
Questo metodo dice che gli ordini a “slack” minore (STR) vengono evasi per primi. Si calcola:
Al loro arrivo, i materiali di lavorazione vengono messi in cima e di solito l’operatore preleva i
materiali a cominciare dall’alto.
Non è realmente una strategia, ma consiste nel dare priorità al cliente che si lamenta di più.
Il cliente che chiama e si lamenta riceve la priorità; il capo che chiama e fa un giro di urla porterà a
una nuova sequenza nel programma.
53
Questa “strategia” non è utile per le prestazioni complessive del sistema, ma a seconda
dell’ambiente di lavoro, potrebbe essere necessario per salvare la carriera.
54
Confrontiamo qualcuna delle otto regole in una situazione di programmazione statica con quattro
lavorazioni su un’unica macchina ovvero “m lavorazioni su macchina singola”, semplicemente
“1/m”
Esempio
LOGICA FIFO
Per la lavorazione A faccio 0+3, poiché prima del processo A è come se avessi un tempo di
processo nullo.
55
Da questa tabella vedo chi è puntuale e chi è in ritardo: banalmente A è puntuale, poiché devo
consegnare il giorno 5 (data di consegna) ed arriva proprio il giorno 3 (tempo di flusso); invece B,
C,D ed E sono in ritardo, poiché ho un tempo di flusso sempre superiore alla data di consegna.
Da questa tabella posso anche estrapolare il ritardo medio: sommo i ritardi di ciascuna lavorazione e
divido questo tempo per il numero di lavorazioni (ritardo = tempo di flusso – data di consegna).
Ritardo medio: 4,86 giorni; FlussoMedio: 10 giorni; Solo un lotto sarà puntuale (A).
LOGICA SPT
Ordino in base ai tempi di processo in ordine crescente. Anche qui valgono gli stessi discorsi di
prima.
LOGICA EDD
Questa regola è in funzione della data di consegna più prossima. La logica è sempre la stessa.
56
Ritardo medio: 2.4 giorni; FlussoMedio: 7.8giorni
LOGICA LIFO
LOGICA RANDOM
LOGICA STR
57
Qui viene aggiunta un’ulteriore colonna di Tempo Residuo.
E’ sempre così? Questo dipende dall’azienda considerata. In questo caso (m/1) SI, per di più, è
matematicamente dimostrabile che la SPT genera una soluzione ottimale quando ho m jobs che
devono andare tutti in una macchina. (1/m)
58
Dalla definizione di rapporto critico andiamo a scrivere
Sinora abbiamo parlato di 1/m, ossia m jobs su di una macchina. Potrebbe capitare che in officina
ho due o più lavorazioni (jobs) che devono essere eseguite su due macchine in sequenza. Una
tecnica che individua una soluzione ottimale secondo determinati criteri è la regola di Johnson.
Obiettivo: minimizzare il tempo di flusso dall’inizio della prima lavorazione alla conclusione
dell’ultima.
59
Esempio: programmiamo quattro jobs su due macchine
60
- Fase 2 e 3: selezionare il tempo operativo più breve e assegnare la lavorazione;
Il tempo più breve (dopo A già schedulato) è D. Quindi la lavorazione D sarà eseguita per
penultima. Adesso le assegnazioni di A e B sono definite.
Adesso mi restano B e C, il tempo più breve fra i due è quello di C ed avviene sulla prima
macchina; infine faccio B il cui processo avviene sulla prima macchina.
61
Quindi mentre ho la lavorazione C sulla macchina 1, la macchina 2 è ferma. Poi la lavorazione
C passa alla macchina 2 e la 1 in parallelo effettua la lavorazione B ecc..
Queste fasi fanno sì che le lavorazioni più brevi siano collocate all’inizio e alla fine del
programma. Ne deriva che il tempo operativo simultaneo delle due macchine è
massimizzato, minimizzando dunque il tempo operativo complessivo detto anche
makespan, necesario a completare le lavorazioni.
Metodo dell’assegnazione
Nel caso in cui il numero di macchine aumentino (n=3) il sistema si complica molto. Tuttavia, vi è
il metodo dell’assegnazione che ci consente di programmare m jobs su m macchine m/m.
L’ipotesi da fare: avere un sistema job-shop, i quali dispongono di macchine in numero sufficiente
ad avviare tutte le lavorazioni contemporaneamente.
62
Problema: come assegnare la singola lavorazione alla singola macchina, per elaborare il miglior
programma complessivo?
Esempio
Fase 1. Riduzione di riga: il numero minore di ogni riga viene sottratto da se stesso e da tutti gli
altri numeri della riga
63
Fase 2. Riduzione di colonna: il numero minore di ogni colonna viene sottratto da se stesso e da
tutti gli altri numeri della colonna
Fase 3. Test di linea: il numero di linee necessario a ricoprire tutti gli zero è 4.
64
Se avessi avuto 5 linee, così come il numero richiesto, mi sarei fermato. Poiché non succede si
passa alla fase 4.
Fase 4.1 Tracciate il minor numero possibile di linee passanti per tutti gli zeri e cervcare il minore
dei numero non ricoperti dalle linee.
Fase 4.2 Sottrarre il minore dei numeri non ricoperti (con le linee della Fase 3, il minor numero
non ricoperto è 1) da se stesso e da tutti gli altri numeri non coperti e sommarlo al numero presente
in ogni intersezione di linee.
65
Ora cosa bisogna fare? Bisogna continuare e ripetere la fase 3, cancellando le righe e le colonne
dove ci sono gli 0.
66
E vado a vedere l’assegnazione ottimale tenendo conto dei costi
Non ho finito l’assegnazione, poiché ho due lotti che vengono fatti nella lavorazione I, uno solo
nella II ecc, ed intanto le lavorazioni possono ripetersi su macchine diverse (ad es. C può essere
fatto sulla macchina 1 o sulla 3). Quindi devo fare un’ulteriore ottimizzazione:
Vado a dare la priorità a quei lavori che sono stati assegnati da soli alla linea: quindi B e C devono
restare rispettivamente sulla linea II e III, ma devono essere tolti dalla I e dalla IV.
Ora mi resta E da solo nella lavorazione I, quindi resta lì. Anche D è da solo in IV, quindi
otteniamo:
67
Ecco la soluzione finale:
I job-shop complessi sono contraddistinti dalla presenza di più centri macchina adibiti a diverse
lavorazioni, le quali giungono agli stessi centri, intervallate durante la giornata.
La maggior parte delle aziende manufatturiere può soddisfare le proprie esigenze con uno schema
di priorità abbastanza semplice, fondato sui seguenti principi:
Prevedono l’elaborazione del programma mediante un ricorso combinato della capacità decisionale
del programmatore e della simulazione.
68
Controllo di Officina
Programmare le priorità di lavorazione è solo uno degli aspetti del controllo di officina (oggi spesso
denominato controllo di produzione o shop floor control)
Anche qui andremo ad utilizzare i Diagrammi di carico di Gantt. Nell’ambito della schedulazione
essi sono usati per pianificare i progetti e coordinare le attività. Tuttavia, questo diagramma ha
una limitazione importante: non tiene conto della variabilità della produzione, come guasti
imprevisti o errori umani che richiedono la rielaborazione di un lavoro.
Di conseguenza, il grafico deve essere aggiornato regolarmente per tener conto di nuovi lavori e di
stime temporali rivendute.
69
70
Strumenti di controllo di produzione
71
La dispatch list quotidiana, che comunica al caporeparto quali lavorazioni debbano
essere eseguite, con quali priorità e quanto tempo occorre per ognuna.
72
Controllo di input/output (I/O control)
Si fonda sulla regola che l’attività input pianificata per un centro di lavorazione non superi mai
l’attività output pianificata.
E’ una tecnica che consente al personale operativo di gestire i flussi di lavoro dell’impianto.
Quando l’input supera l’output, nel centro di lavorazione si accumulano lavorazioni inevase, le
quali fanno lievitare i lead time attesi nelle operazioni a monte. Il flusso di attività verso valle
diventa discontinuo.
Ricapitolando:
73
Identifica le condizioni di sovraccarico e sottocarico;
Richiede un’azione manageriale per risolvere i problemi di programmazione;
Può essere mantenuto utilizzando le schede con WIP che controllano la programmazione dei
lotti.
74