Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Massimo Roma
roma@dis.uniroma1.it
http://www.dis.uniroma1.it/ e roma
Queste note sono redatte in via prelimiare ad uso degli studenti del corso di “Sis-
temi di Servizio e Simulazione” del Corso di Laurea in Ingegneria Gestionale e del
Corso di Laurea Magistrale in Ingegneria Gestionale della Facoltà di Ingegneria
della SAPIENZA, Università di Roma.
La trattazione è divisa in due parti: nella prima parte viene affrontato lo studio
analitico della Teoria delle code con particolare attenzione ai modelli basati su
processi di nascita e morte; la seconda parte fornisce le basi della Simulazione.
Le metodologie della simulazione saranno studiate in termini generali e con rife-
rimenti specifici ai sistemi di servizio.
Poiché il corso è destinato a studenti che per la prima volta nel loro curricu-
lum affrontano queste tematiche, la trattazione, pur mantenendo un adeguato
rigore formale, è (per quanto possibile) semplificata nell’esposizione degli argo-
menti e nella formulazione degli esempi. Un’integrazione con gli ulteriori esempi
ed esercizi svolti durante le lezioni è indispensabile, cosı́ come è auspicabile un
approfondimento con “casi di studio” reali.
Prerequisiti essenziali per una buona comprensione di queste note sono una
conoscenza di base del calcolo differenziale e degli aspetti modellistici di base
della Ricerca Operativa. Si assumeranno inoltre come noti i concetti base del
Calcolo delle Probabilità e della Statistica, con particolare riferimento alla teoria
generale della probabilità, alle variabili aleatorie, alle distribuzioni di probabilità
di uso frequente, alle leggi di convergenza e alle basi dell’inferenza statistica (ele-
menti di statistica inferenziale saranno comunque riportati in queste note).
Al termine di ciascuna delle due parti è riportata una bibliografia essenziale.
Molte utili informazioni sulla Teoria delle code sono disponibili sul sito
iii
iv PREFAZIONE
http://web2.uwindsor.ca/math/hlynka/queue.html
mentre il sito
http://www.informs-cs.org
Un sistema può essere definito come una collezione di entità (macchine, persone,
etc.) che agiscono e interagiscono per il raggiungimento di uno scopo. Per stu-
diare “scientificamente” un sistema, viene di solito costruito un modello che è
utilizzato per tentare di comprendere il comportamento del sistema stesso. L’uso
di modelli come strumento efficace per la soluzione di problemi di decisione è
oggi ampiamente diffuso. Un modello può rappresentare situazioni provenienti
dal mondo reale, anche molto complesse e anche influenzate da fenomeni di natura
aleatoria. Di fondamentale importanza e di uso ormai consolidato sono i modelli
matematici (analitici) che rappresentano la realtà attraverso variabili e relazioni
logico–matematiche e che descrivono in modo semplificato, ma sempre rigoroso,
i fenomeni del mondo reale che si vogliono considerare. È questo il caso dei
modelli di Programmazione Matematica caratterizzati dalla definizione esplicita
di una funzione obiettivo da massimizzare o minimizzare e da un insieme pre-
fissato al quale devono appartenere le variabili1 . I modelli matematici sono in
grado di rappresentare moltissime e diverse realtà del mondo reale, e permettono
di ottenere efficientemente una soluzione ottima del problema considerato, o co-
munque soluzioni molto buone. Tuttavia in alcuni casi le situazioni in esame sono
talmente complesse e le dimensioni talmente elevate da rendere difficile o troppo
costoso l’uso di modelli analitici. In questo caso, uno strumento valido ed efficace
per l’analisi dei problemi è rappresentato dalla simulazione, ovvero dall’utilizzo di
un calcolatore per costruire un modello (modello di simulazione) che permetta di
1 Lo studente ha acquisito una buona familiarità con modelli di questo tipo nei corsi di Ricerca Operativa
v
vi INTRODUZIONE
1.1 GENERALITÀ
Naturalmente ogni lista di casi reali non può essere esaustiva, ma gli esempi
riportati rappresentano situazioni caratteristiche e dovrebbero suggerire il fatto
che i sistemi di code pervadono la vita reale in molti e diversi settori della società.
• Popolazione
I potenziali clienti fanno parte della cosiddetta popolazione degli utenti (o
input source). I clienti di una popolazione sono indistinguibili e la carat- Popolazione
teristica principale di una popolazione è la dimensione, che rappresenta il degli utenti
numero totale dei distinti potenziali clienti che richiedono un servizio. Si
può assumere che la dimensione sia finita o infinita. Per semplicità di ana-
lisi, spesso si assumerà che la dimensione sia infinita anche quando essa è
finita purché sufficientemente grande. Il caso finito è più difficile da trattare
perché il numero dei clienti nel sistema influenza il numero dei clienti che
sono al di fuori del sistema. Tuttavia l’assunzione di popolazione finita è
necessaria in alcuni casi.
• Schema di arrivo
In un sistema di code deve essere specificato lo schema di arrivo che de-
scrive il modo secondo il quale i clienti si presentano a richiedere il servizio.
Esso è definito in termini di intervalli di tempo tra due arrivi successivi di
clienti nel sistema (tempo di interarrivo). Questo schema può essere deter-
ministico oppure può essere rappresentato da una variabile aleatoria che,
6 TEORIA DELLE CODE
in riferimento all’i-esimo cliente che entra nel sistema, indichiamo con tai ,
Tempo di ovvero tai rappresenta il tempo che intercorre tra l’arrivo del cliente (i − 1)-
interarrivo tai esimo e il cliente i-esimo. Degli intertempi di arrivo si suppone nota la
distribuzione di probabilità.
Altri due aspetti meno comuni possono anche presentarsi: la rinuncia di
un utente in arrivo in conseguenza del fatto che la coda è troppo lunga
(balking); l’arrivo degli utenti in gruppo.
• Schema di servizio
Lo schema di servizio descrive il modo secondo il quale ciascun servente
Tempo di eroga il servizio. Esso è specificato in termini del tempo di servizio, ovvero
servizio tsi del tempo necessario ad un servente per “servire” un utente. Il tempo di
servizio può essere deterministico, ma più spesso esso è una variabile aleato-
ria che, in riferimento al cliente i-esimo indichiamo con tsi . Dei tempi di
servizio si suppone nota la distribuzione di probabilità.
Un’assunzione comune è che, nel caso di più serventi, essi operano con il
medesimo schema di servizio, ovvero il tempo di servizio ha la stessa dis-
tribuzione di probabilità. Esiste anche la possibilità di avere i clienti serviti
da una sequenza di serventi, ovvero un cliente per essere completamento
servito richiede l’intervento di più serventi in successione.
P
o
p
o
l
a
z
i Coda
o
n
e Serventi
Fig. 1.1.1 Schema di un sistema di code con una sola coda e tre serventi in parallelo
P
o
p
o
l Coda
a
z
i
o
n
e Serventi
Coda
Fig. 1.1.2 Schema di un sistema di code con due code e quattro serventi in parallelo
8 TEORIA DELLE CODE
A/B/s/c/p/Z
dove
G indica una distribuzione generica che, per quanto riguarda gli intertempi
di arrivo, può essere sostituita dalla sigla GI ad indicare un distribuzione
generica di eventi indipendenti.
Molto frequente è l’uso di notazioni del tipo M/M/1 (ovvero con solamente tre
sigle) che, come abbiamo già detto, corrisponde ad avere la capacità del sistema
infinita, la popolazione infinita e la disciplina della coda basata sul criterio FIFO
(ovvero corrisponderebbe a scrivere M/M/1/∞/∞/FIFO); tale modello M/M/1
assume che sia gli intertempi di arrivo, sia i tempi di servizio hanno distribuzione
esponenziale e che è presente un solo servente. La notazione M/G/1 indica, ad
esempio, un modello con intertempi di arrivo distribuiti esponenzialmente e non
pone nessuna specificazione sulla distribuzione dei tempi di servizio.
10 TEORIA DELLE CODE
Frequenza Si definisce frequenza media degli arrivi dei clienti nel sistema il numero medio di
media degli arrivi di utenti nell’unità di tempo. Indicheremo con λ la frequenza media degli
arrivi arrivi.
Velocità di Si definisce velocità di servizio il numero medio di utenti per il quali è espletato
servizio il servizio nell’unità di tempo. Indicheremo con µ la velocità di servizio.
Fattore di Si definisce fattore di utilizzazione dei serventi ρ il rapporto tra la frequenza media
utilizzazione degli arrivi e la velocità del servizio moltiplicata per il numero dei serventi, ovvero
dei serventi
λ
ρ= ,
sµ
che rappresenta la frazione di tempo che i serventi sono occupati, in quanto tale
rapporto è la frazione della capacità di servizio che ha il sistema (sµ) che è
utilizzata in media dai clienti che arrivano (λ).
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 11
Per quanto riguarda la frequenza media degli arrivi λ e la velocità del servizio µ,
indicati con E(tai ) e E(tsi ) i valori attesi delle variabili aleatorie tai e tsi si ha
1 1
λ= e µ= .
E(tai ) E(tsi )
Naturalmente, sia λ sia µ potrebbero non essere costanti al variare del numero di
utenti presenti nel sistema. In questi casi, se k denota il numero di utenti presenti
nel sistema, verranno denotate con λk e µk .
Esempio 1.2.1 Supponiamo che in un sistema di servizio l’intervallo di tempo tra due arrivi
successivi di clienti (tempi di interarrivo) siano rispettivamente 30 , 70 , 40 , 100 e 60 come illustrato
nella Figura 1.2.1. Quindi nei 30 minuti presi in esame abbiamo un tempo medio di interarrivo
pari a 6 minuti. Perciò il numero medio di arrivi di utenti nell’unità di tempo è di 5 in 30 minuti,
ovvero 0.16666 al minuto, quindi λ = 0.1666 utenti al minuto. Analogamente se il numero medio
di utenti per il quali è espletato il servizio è pari a 4 al minuto, ovvero µ = 4, allora il tempo
medio di servizio è 1/4 di minuto.
30’
3’ 7’ 4’ 10’ 6’
1 2 3 4 5
Si definisce stato di un sistema a coda al tempo t il numero di clienti presenti nel Stato di un
sistema ed è quindi dato dalla somma del numero dei clienti che sono nella fila di sistema di
attesa e il numero dei serventi attivi. Indicheremo con n(t) lo stato del sistema code n(t)
a coda al tempo t.
Si definisce lunghezza della coda al tempo t il numero di clienti che sono in attesa Lunghezza
del servizio, ovvero nella fila d’attesa. Indicheremo con nq (t) la lunghezza della della coda
coda al tempo t. nq (t)
Per quanto riguarda la lunghezza della coda nq (t), essa naturalmente dipende da
s e da n(t) ed in particolare vale
½
0 se n(t) ≤ s
nq (t) =
n(t) − s se n(t) > s.
12 TEORIA DELLE CODE
∞
X
E(nq (t)) = (k − s)pk (t). (1.2.2)
k=s+1
Se inoltre indichiamo con ftwi (t) e ftq (t) rispettivamente le densità di probabilità
i
q
delle variabili aleatorie continue tw
i (tempo passato nel sistema) e ti (tempo pas-
sato nella coda), si ha
Z ∞
E(tw
i ) = t ftwi (t)dt (1.2.3)
Z 0∞
E(tqi ) = t ftq (t)dt. (1.2.4)
i
0
Siamo interessati ai casi in cui, per valori di t molto grandi, le probabilità pk (t)
rimangano intorno ad un valore. La maggior parte dei sistemi di code di interesse
raggiungono una situazione di equilibrio, indipendentemente dalla stato iniziale.
Assumeremo, quindi, che esista il seguente limite
lim pk (t) = pk , k = 0, 1, . . . ,
t→∞
dove pk si intende come la probabilità limite che il sistema contenga k utenti in
un istante arbitrariamente grande. Questo, ovviamente, non significa che avendo
assunto che pk non dipenda più dal tempo il sistema rimanga sempre in questa
situazione limite. Le probabilità pk devono essere interpretate come probabilità a
lungo termine, ovvero descrivono bene la probabilità che siano presenti k in un
sistema che ha raggiunto condizioni stazionarie.
A questo punto siamo in grado di definire N il numero medio di utenti presenti
nel sistema come
∞
X
N = lim E(n(t)) = kpk . (1.2.5)
t→∞
k=0
Considerazioni analoghe valgono per la definizione di N q il numero medio di
utenti in coda, ovvero
∞
X
N q = lim E(nq (t)) = (k − s)pk .
t→∞
k=s+1
Per quanto riguarda il tempo di permanenza nel sistema, tw i che definisce il tempo
che l’i-esimo utente passa nel sistema (tempo in coda e tempo del servizio),
tipicamente il valore atteso E(tw
i ), al tendere di i all’infinito, tende ad un valore
di equilibrio che denotiamo con T , ovvero definiamo
T = lim E(tw
i ).
i→∞
Un discorso analogo vale per il tempo tqi passato in coda da ciascun utente, ovvero
definiamo
T q = lim E(tqi ).
i→∞
14 TEORIA DELLE CODE
Forniamo, ora, una interpretazione grafica delle quantità appena definite. A tale
scopo, consideriamo, un intervallo prefissato [0, t] e siano a(t) e b(t) rispettiva-
mente il numero totale degli utenti arrivati nel sistema e il numero totale degli
utenti serviti e quindi usciti dal sistema in funzione del tempo t. Per semplicità,
ci riferiremo ad un sistema con un singolo servente e con disciplina della coda
FIFO, ma i risultati che otterremo sono validi (e facilmente ottenibili) per qualsi-
asi tipo di sistema di code. Consideriamo i diagrammi di a(t) e b(t) nell’intervallo
prefissato [0, t] riportati nella Figura 1.2.2, assumendo che n(0) = 0.
5
a(t)
4
3 n(t)
2
t 2w b(t)
1 w
t
1
t 1 t 2 t
Z t
1
Nt = n(τ )dτ (1.2.6)
t 0
a(t)
1 X w
Tt = t (1.2.7)
a(t) i=1 i
a(t)
λt = . (1.2.8)
t
La maggior parte dei sistemi a coda di interesse sono ergodici nel senso che vale
inoltre la seguente uguaglianza3
con probabilità 1.
Si osservi che le (1.2.9) e (1.2.10) rappresentano uguaglianze tra medie temporali
a lungo termine rappresentate da limt→∞ Nt e da limt→∞ Tt e medie stocastiche
date dai valori attesi.
Ripetendo questi ragionamenti relativamente ai soli utenti in coda, analogamente
ad N nella (1.2.9) si può ottenere N q come
3 Non viene fornita una rigorosa giustificazione matematica delle assunzioni che seguono in quanto sareb-
bero richiesti strumenti matematici tecnici che vanno oltre lo scopo di queste note
16 TEORIA DELLE CODE
o, equivalentemente da
b(t) a(t)
X X
tw
i + (t − ti ). (1.2.16)
i=1 i=b(t)+1
Si osservi ora che la Tt definita in (1.2.7) e la Tet differiscono per il solo fatto che
Tet include il tempo totale passato nel sistema da tutti gli utenti arrivati da 1
fino a b(t), ma non considera il tempo passato nel sistema dopo il tempo t per
quegli utenti che sono ancora nel sistema al tempo t; infatti questo tempo risulta
invece conteggiato nella Tt . Siamo ora interessati a passare al limite per t → ∞
nella (1.2.18). A questo scopo osserviamo che assumendo che Nt tenda ad un
valore N finito, la differenza tra Tt e Tet può essere trascurata in quanto molto
piccola rispetto alla somma dei tempi degli utenti arrivati da 1 fino a b(t). Quindi,
passando al limite per t → ∞ nella (1.2.18), utilizzando la (1.2.9), la (1.2.10) e
la (1.2.13) si ottiene N = λT che la formula di Little (1.2.14).
Osservazione 1.2.2 Si osservi che nella dimostrazione del Teorema di Little si
è fatto uso solamente delle quantità Nt , Tt e λt e del fatto che limt→∞ Nt = N ,
limt→∞ Tt = T e limt→∞ λt = λ. Questo significa che il teorema continua a valere
anche se le uguaglianza tra medie temporali e medie stocastiche date dalle (1.2.9)
e (1.2.10) non dovessero valere. In questo caso, però, le quantità N e T possono
solamente essere interpretate come medie temporali a lungo termine e non come
valori attesi delle corrispondenti variabili aleatorie.
Osservazione 1.2.3 È importante ribadire che la formula di Little ha una va-
lidità del tutto generale ed in particolare si osservi che:
• è indipendente dalle distribuzioni di probabilità dei tempi di interarrivo e
dei tempi di servizio (sistemi G/G/s).
• è indipendente dalla disciplina del servizio (la dimostrazione si riferisce al
solo caso di disciplina FIFO solo per semplicità);
• è valida per sistemi in condizioni stazionarie;
• la frequenza λ deve essere la frequenza effettiva, ovvero la frequenza degli
ingressi effettivi nel sistema. Come si vedrà in seguito, per alcune tipologie
di sistemi di code (come ad esempio i sistemi a capacità limitata) poiché è
prevista la possibilità di rinuncia la servizio, la frequenza media degli arrivi
potrebbe non coincidere con la frequenza degli ingressi effettivi.
N q = λT q (1.2.20)
18 TEORIA DELLE CODE
Una terza importante relazione lega il valore atteso del tempo passato da un
utente nel sistema e il valore atteso del tempo passato nella coda. Vale infatti
1
T = Tq + (1.2.21)
µ
Questa relazione può essere ricavata dal fatto che, per ogni singolo utente vale la
q
(1.1.1), ovvero tw s w
i = ti +ti , dove ricordiamo che ti è il tempo passato nel sistema,
q
ti è il tempo passato nella coda e tsi è il tempo di servizio. Passando ai valori
attesi nella (1.1.1) e poi effettuando il limite per i → ∞, si ottiene la (1.2.21).
nel caso di unico servente si può ottenere facilmente una relazione tra N , N q e la
probabilità p0 che nel sistema non vi siano utenti, ovvero che il sistema sia allo
stato zero; infatti per s = 1 la (1.2.22) diventa
N q = N − (1 − p0 ). (1.2.23)
Siamo ora in grado di ricavare, sempre nel caso di un unico servente, una relazione
tra il fattore di utilizzazione del servente ρ = λ/µ e p0 .
ρ = 1 − p0 . (1.2.24)
λT = λT q + λ/µ,
N = N q + ρ. (1.2.25)
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 19
Nell’ambito della teoria delle code, questa proprietà si può interpretare nel seguen-
te modo: la distribuzione di probabilità del tempo che rimane fino ad un evento
(arrivo o completamento del servizio) è sempre la stessa indipendentemente da
quanto tempo è trascorso, ovvero il processo “dimentica” il passato. Per quanto
riguarda gli intertempi di arrivo, questa proprietà descrive la situazione comune
in cui il tempo fino al prossimo arrivo non è assolutamente influenzato da quando
si è verificato l’ultimo arrivo. Per quanto riguarda i tempi di servizio questa pro-
prietà può essere interpretata nel senso che il tempo mancante al completamento
di un servizio può essere indipendente da quando il servizio è iniziato.
È importante notare che la distribuzione esponenziale è l’unica distribuzione con-
tinua che gode della Proprietà E2. Questo si dimostra facilmente nel seguente
modo: vogliamo far vedere che se T è una variabile aleatoria per la quale vale la
Proprietà E2, allora T è distribuita esponenzialmente. Innanzitutto osserviamo
che la relazione di assenza di memoria (1.3.2) per la (1.3.3) può essere riscritta
Poiché è noto che l’equazione (1.3.5) ammette come unica soluzione continua da
destra g(x) = e−αx , la dimostrazione è completata. Infatti risulta S(x) = e−αx
ovvero
FT (t) = 1 − e−αt
e quindi T è distribuita esponenzialmente.
Questa proprietà discende immediatamente dal fatto che per l’indipendenza vale
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 23
Si noti che se Ti rappresenta il tempo mancante fino a che accada un certo evento,
U rappresenta il tempo fino a che il primo degli eventi accada.
La Proprietà E3 ha una importante interpretazione per quanto riguarda i tempi
di servizio. Supponiamo infatti di avere s serventi in parallelo ciascuno dei quali
ha tempi di servizio distribuiti esponenzialmente con lo stesso parametro µ. In
questo caso, sia r ≤ s il numero dei serventi che stanno attualmente fornendo il
servizio, e Ti il tempo che rimane per il completamento del servizio da parte di
ciascun servente (i = 1, . . . , r). Si ha che Ti , per la Proprietà E2 è distribuita espo-
nenzialmente con parametro αi = µ e U che rappresenta il tempo fino al prossimo
completamento di un servizio ha distribuzione esponenziale con parametro rµ.
Ciò significa che un sistema di code con più serventi in parallelo che stanno at-
tualmente operando (continuously busy servers), ciascuno con tempo di servizio
distribuito esponenzialmente di parametro µ, si comporta come un sistema a sin-
golo servente con tempo di servizio distribuito esponenzialmente con parametro
rµ.
Questa proposizione si ottiene facilmente dal fatto che per ogni t ≥ 0 risulta
αk
fSk (t) = e−αt tk−1 .
(k − 1)!
La dimostrazione di questa proprietà può essere fatta per induzione. Infatti essa
è banalmente vera per k = 1. Supponiamo quindi che sia vera per k − 1, ovvero
che
αk−1 −αt k−2 (αt)k−2
fT1 +···+Tk−1 (t) = e t = αe−αt
(k − 2)! (k − 2)!
e dimostriamo che vale per k. Infatti si ha
Z ∞
fSk (t) = fT1 +···+Tk−1 +Tk (t) = fTk (t − s) fT1 +···+Tk−1 (s)ds
0
Z t
(αs)k−2
= αe−α(t−s) αe−αs ds
0 (k − 2)!
Z
e−αt t
= α (αs)k−2 αds
(k − 2)! 0
(αt)k−1
= αe−αt .
(k − 1)!
4. per s < t, X(t)−X(s) è il numero degli eventi che sono accaduti nell’intervallo
(s, t).
26 TEORIA DELLE CODE
i) X(0) = 0
i) X(0) = 0
La iii) afferma che per ogni t, la probabilità che un evento accada nell’intervallo
(t, t + ∆t) è proporzionale secondo il parametro λ all’ampiezza dell’intervallo a
meno di un infinitesimo di ordine superiore a ∆t, mentre la iv) afferma che la
probabilità che due o più eventi accadano nell’intervallo suddetto è pari a o(∆t).
Le due definizioni ora fornite (Definizione 1.3.4 e Definizione 1.3.5) di processo
di Poisson sono equivalenti. La dimostrazione di questa equivalenza è piuttosto
tecnica e viene omessa per brevità e si rimanda, ad esempio, a [Ross, 2003a] o a
[Billingsley, 1979].
Passiamo ora a considerare una importantissima relazione che esiste tra distri-
buzione esponenziale e processo di Poisson. A tale scopo consideriamo una suc-
cessione di eventi. Sia T1 il tempo di attesa affinché si verifichi il primo evento e
per k ≥ 1 sia Tk il tempo di attesa tra l’evento (k − 1)–esimo e l’evento k–esimo,
ovvero
{Tk , k ≥ 1} (1.3.7)
è la successione di variabili aleatorie degli intertempi tra due eventi successivi
(cioè degli intervalli di tempo tra due eventi successivi). Se definiamo
Sn = T1 + T2 + · · · + Tn ,
{X(t) ≥ n} = {Sn ≤ t}
28 TEORIA DELLE CODE
ed inoltre
P (Ti ≤ t) = 1 − e−λt , i = 1, 2, . . .
Anche in questo caso omettiamo per brevità la verifica di questo risultato per il
quale si fa riferimento, ad esempio, a [Ross, 2003a] e [Billingsley, 1979].
Il risultato del Teorema 1.3.1 si può intuitivamente dedurre dal fatto che l’assun-
zione degli incrementi stazionari e indipendenti di fondo equivale al fatto che il
processo, in ogni istante Si , effettua un “restart”, cioè il processo da ogni punto
è indipendente da tutto ciò che accade prima (incrementi indipendenti) ed ha la
stessa distribuzione del processo originale (incrementi stazionari); in altre parole,
il processo non ha memoria e quindi gli intertempi tra due eventi successivi devono
essere distribuiti esponenzialmente.
ci sia la possibilità che alcuni clienti rinuncino ad entrare nel sistema (ad esempio
se vedono la coda molto lunga). È quindi possibile caratterizzare gli utenti se-
condo due tipi: quelli che entrano nel sistema (con probabilità p) e quelli che non
entrano nel sistema (con probabilità 1 − p). Il risultato della Proposizione 1.3.6
permette di affermare che ciascun tipo di cliente arriva al sistema secondo un
processo di Poisson di tasso rispettivamente λp e λ(1 − p). Perciò il modello
poissoniano può continuare ad essere utilizzato per studiare il sistema a coda
relativamente ai soli clienti che effettivamente entrano nel sistema.
i) X(0) = 0
La funzione λ(t) prende nome di funzione intensità e sarà tanto più grande negli
intervalli nei quali il numero atteso degli arrivi è grande. Data la funzione λ(t),
Z t
si può definire la funzione Λ(t) = λ(y)dy.
0
Si riporta di seguito un risultato che mostra che la distribuzione del numero degli
arrivi nell’intervallo (s, s + t] per un processo di Poisson non stazionario dipende
da s e da t, mentre, come sappiamo, in un processo di Poisson esso dipende
solamente dall’ampiezza dell’intervallo.
Sulla base di questo risultato si ha che X(s + t) − X(s) è una variabile aleatoria
distribuita secondo Poisson con media b(s, t) = Λ(s+t)−Λ(s) e la Λ(t) è chiamata
funzione valore medio del processo di Poisson non omogeneo.
È utile confrontare questo teorema con la Definizione 1.3.5 di processo di Pois-
son osservando come in un processo di Poisson non stazionario sia esplicita la
dipendenza da s.
32 TEORIA DELLE CODE
Molti sistemi a coda possono essere ben rappresentati mediante i cosiddetti pro-
cessi di nascita e morte che sono importanti processi in teoria della probabilità
che hanno applicazioni in diverse aree. In particolare, l’evoluzione nel tempo
del numero degli utenti presenti in un sistema di servizio può essere descritta
attraverso un tale processo ed inoltre la determinazione delle probabilità che nel
sistema siano presenti n utenti (pn ), che come abbiamo sottolineato alla fine del
paragrafo 1.2.3 è di fondamentale importanza, risulta facile se l’evoluzione nel
tempo dello stato di un sistema è rappresentato attraverso un processo di nascita
e morte.
Informalmente, dato un insieme di persone o oggetti (aventi caratteristica co-
mune), si dice che si verifica una nascita ogni qualvolta un nuovo membro si
aggiunge all’insieme e una morte quando un membro lascia l’insieme. Si parla di
processo di sole nascite se si verificano solamente nascite e non morti e di processo
di sole morti se si verificano solamente morti e non nascite.
Nel contesto della teoria delle code una nascita si riferirà ad un arrivo di un
utente nel sistema e una morte si riferirà ad una uscita di utente dal sistema
(dopo che il servizio sia stato espletato).
In questo paragrafo, dopo aver definito formalmente un processo di nascita e
morte esamineremo le proprietà fondamentali di questi processi; successivamente
queste proprietà saranno applicate per la determinazione delle misure di presta-
zione nel caso dei sistemi a coda più significativi.
Supponiamo che N (t) sia un processo stocastico a tempo continuo e con spazio
degli stati discreto costituito dai numeri interi non negativi. N (t) può essere in-
terpretato come il numero dei membri di un certo insieme al tempo t. Indichiamo
con pn (t) la probabilità che al tempo t lo stato sia n ovvero che al tempo t ci
siano n elementi nell’insieme, cioè pn (t) = P (N (t) = n).
Definiamo con pn,m (∆t) la probabilità che il processo raggiunga lo stato m al Probabilità
tempo t + ∆t condizionata al fatto che al tempo t si trova nello stato n, di transizio-
³ ¯ ´ ne
¯
pn,m (∆t) = P N (t + ∆t) = m ¯ N (t) = n .
Tale probabilità pn,m (∆t) prende nome di probabilità di transizione e può essere
interpretata come la probabilità che l’insieme, costituito da n elementi al tempo
t, sia costituito da m elementi al tempo t + ∆t.
Introduciamo, ora, formalmente il concetto di processo di nascita e morte.
34 TEORIA DELLE CODE
Proprietà La dipendenza dal valore dello stato attuale e non da quelli passati è un concetto
di Markov che viene formalizzato come proprietà di Markov 4 .
Le condizioni (1.4.1) possono essere interpretate nel seguente modo: a meno
di infinitesimi di ordine superiore a ∆t, la probabilità che nell’intervallo [t, t +
∆t] si verifichi una nascita non dipende da t, ma è proporzionale all’ampiezza
dell’intervallo (ovvero alla durata ∆t) secondo un coefficiente che può dipendere
dallo stato attuale, ma non da quelli passati. Analogamente, la probabilità che
nell’intervallo [t, t + ∆t] si verifichi una morte è proporzionale alla durata ∆t
secondo un coefficiente che può dipendere dallo stato attuale, ma non da quelli
Coefficiente passati. Il coefficiente λn è chiamato coefficiente di natalità, il coefficiente µn è
di natalità chiamato coefficiente di mortalità.
e mortalità La Figura 1.4.1 riporta una rappresentazione schematica chiamata diagramma di
transizione di stato di un processo di nascita e morte.
∞
X
Dalle (1.4.1), poiché per ogni n = 0, 1, . . . , deve valere pn,k (∆t) = 1 , si otten-
k=0
gono le probabilità che nell’intervallo [t, t + ∆t] non avvengono transizioni ovvero
le probabilità pn,n (∆t) e p0,0 (∆t):
pn,n (∆t) = 1 − (λn + µn )∆t + o(∆t)
p0,0 (∆t) = 1 − λ0 ∆t + o(∆t).
4 Senza entrare nei dettagli, riportiamo solo il fatto che un processo X(t) gode della proprietà di Markov se
la probabilità condizionata del “futuro” X(s + t) dato il “presente” X(s) e il “passato” X(u), 0 ≤ u < s,
dipende solo dal presente ed è indipendente dal passato, ovvero P (X(s + t) = j | X(s) = i, X(u) =
x(u), 0 ≤ u < s) = P (X(s + t) = j | X(s) = i). Poiché un processo stocastico a tempo continuo
con spazio degli stati discreto che gode della proprietà di Markov si chiama catena di Markov a tempo
continuo, un processo di nascita e morte risulta un tipo particolare di catena di Markov a tempo continuo
nella quale sono possibili solamente transizioni verso stati adiacenti. Per ogni approfondimento si rimanda
alla letteratura specifica.
PROCESSI DI NASCITA E MORTE 35
λ 0 λ 1 λ 2 λ 3 λ k −2 λ k −1 λ k λ k +1
0 1 2 3 … k-1 k k+1
µ 1
µ 2
µ 3
µ 4
µ k −1
µ k
µ k +1
µ k +2
Esempio 1.4.2 Il numero di esemplari di una specie in via di estinzione evolve nel tempo in
accordo ad un processo di nascita e morte. È noto che, in media, due esemplari generano un
nuovo esemplare ogni cinque anni e che la vita media di un esemplare è di nove anni. Descrivere
come varia il numero di esemplari di questa specie.
Prendendo come unità di tempo l’anno, se il numero degli esemplari è n, la probabilità che si
verifichi una nascita in un intervallo di tempo di ampiezza ∆t è data dal prodotto del numero
delle coppie (n/2) per il valore atteso di nascite che si ha da una coppia in un anno (1/5) per
n
l’ampiezza dell’intervallo di tempo (∆t), ovvero è data da ∆t. Analogamente, la proprietà
10
n
che si verifichi una morte nell’intervallo di ampiezza ∆t è data da ∆t. Quindi la variazione
9
del numero di esemplari è descritto da un processo di nascita e morte con coefficiente di natalità
n n
λn = e coefficiente di mortalità µn = .
10 9
Ti > s + t condizionata al fatto che Ti > s è funzione del solo tempo aggiuntivo
t e non del tempo passato s, ovvero
che è la (1.3.4). Come abbiamo già visto nella discussione della proprietà di as-
senza di memoria della distribuzione esponenziale, questa implica che la variabile
Ti sia distribuita esponenzialmente. Questo dimostra che per un processo a tempo
continuo con spazio degli stati discreto che gode della proprietà di Markov (catena
di Markov) i tempi di permanenza negli stati sono distribuiti esponenzialmente.
Applicando quanto appena dimostrato ad un processo di sole nascite, si ha che
tale processo consiste in un processo di soli “arrivi” con tempi di interarrivo dis-
tribuiti esponenzialmente con tasso costante. Quindi, per il Teorema 1.3.1, è un
processo di Poisson.
Quindi per n ≥ 1 si ha
pn (t + ∆t) = pn−1,n (∆t)pn−1 (t) + pn,n (∆t)pn (t) + pn+1,n (∆t)pn+1 (t) + o(∆t) =
= λn−1 ∆t pn−1 (t) + (1 − λn ∆t − µn ∆t)pn (t)
+ µn+1 ∆t pn+1 (t) + o(∆t)
da cui
Analogamente per n = 0 si ha
da cui
p0 (t + ∆t) − p0 (t) o(∆t)
= µ1 p1 (t) − λ0 p0 (t) + . (1.4.4)
∆t ∆t
dp (t)
n
= λn−1 pn−1 (t) − (λn + µn ) pn (t) + µn+1 pn+1 (t), n≥1
dt (1.4.5)
dp0 (t)
= µ1 p1 (t) − λ0 p0 (t)
dt
38 TEORIA DELLE CODE
P
risultare ∞ n=0 pn (t) = 1. Si ottiene in questo modo un sistema di equazioni
algebriche.
Appare immediatamente chiaro che il secondo modo di procedere e assolutamente
più conveniente perché permette di ottenere la distribuzione stazionaria diretta-
mente senza dover prima determinare le probabilità pn (t) dipendenti dal tempo.
Si ha quindi il sistema di equazioni algebriche
per n = 0 : µ1 p1 = λ0 p0
per n = 1 : λ0 p0 + µ2 p2 = (λ1 + µ1 )p1
per n = 2 : λ1 p1 + µ3 p3 = (λ2 + µ2 )p2
per n = 3 : λ2 p2 + µ4 p4 = (λ3 + µ3 )p3
.. .. ..
. . .
per n = k : λk−1 pk−1 + µk+1 pk+1 = (λk + µk )pk
.. .. ..
. . .
n−1
Y
∞ ∞
λi
X X i=0
p0 = 1 − pn = 1 − n p0
Y
n=1 n=1 µj
i=j
da cui
1
p0 = n−1
.
Y
∞
λi
X i=0
1+ n
Y
n=1 µj
j=1
Abbiamo quindi ottenuto la soluzione cercata (in forma prodotto), ovvero pn per
ogni n ≥ 0:
1
p0 = n−1
(1.4.10)
Y
∞
λi
X i=0
1+ n
Y
n=1 µj
j=1
n−1
Y
λi
i=0
pn = n p0 n≥1 (1.4.11)
Y
µi
i=1
cresce indefinitivamente e non si raggiunge mai l’equilibrio, ovvero non esiste una
distribuzione stazionaria.
Possiamo riassumere quanto ora ottenuto nel seguente teorema:
Se S < ∞ allora
1/S per n=0
pn = n−1
Y .Y
n
λi µj p0 per n≥1
i=0 j=1
Il più semplice processo di nascita e morte è quello al quale abbiamo già fatto
Processi di riferimento nella Proposizione 1.4.3, ovvero un processo di sole nascite (µn = 0
sole nascite per ogni n) con λn = λ costante. Nella suddetta proposizione abbiamo dimostrato
che un tale processo è un processo di Poisson. A questo stesso risultato siamo ora
in grado di pervenire utilizzando le equazioni di Kolmogorov (1.4.5) particolariz-
zate al caso in cui il coefficiente di natalità è costante e pari a λ e il coefficiente
di mortalità nullo, ovvero
dp (t)
n
= λpn−1 (t) − λpn (t)
dt (1.4.13)
dp (t)
0 = −λp0 (t).
dt
Si verifica, infatti, direttamente che, assumendo che al tempo zero non vi siano
utenti nel sistema, ovvero p0 (0) = 1, e pn (0) = 0 per n ≥ 1, il sistema di equazioni
differenziali (1.4.13) ammette la seguente soluzione
(λt)n −λt
pn (t) = e , n = 0, 1, . . . (1.4.14)
n!
che è una distribuzione di Poisson di parametro λt. Quindi gli istanti di “nascita”
di un processo di sole nascite con coefficiente di natalità costante costituiscono
un processo di Poisson.
PROCESSI DI NASCITA E MORTE 43
(µt)k−n −µt
pn (t) = e 1≤n≤k
(k − n)!
k
X k
X (µt)k−n −µt
p0 (t) = 1 − pn (t) = 1 − e
n=1 n=1
(k − n)!
Esempio 1.4.4 Un negozio ha un’unica cassa servita da una cassiera che provvede anche
a confezionare i pacchi. I clienti arrivano alla cassa con frequenza media di 30 all’ora e il
tempo occorrente perché la cassiera faccia il conto della spesa, confezioni il pacco e riceva il
pagamento dal cliente è in media di 2 minuti. Inoltre, ogni volta che alla cassa (in coda e
il cliente che è servito) vi sono 3 o più clienti, il proprietario del negozio auita la cassiera a
confezionare i pacchi e in questo modo il tempo medio per servire un cliente diventa pari ad 1
minuto. Costruire un modello basato su processi di nascita e morte che rappresenti la situazione
descritta determinando la distribuzione stazionaria.
Assumiamo come unità di tempo l’ora. Il numero del clienti alla cassa evolve in accordo ad un
processo di mascita e morte, dove il coefficiente di natalità è indipendente dallo stato e risulta
λn = 30 per ogni n, mentre il coefficiente di mortalità, esso dipende dallo stato, infatti vengono
serviti in media 30 clienti l’ora se i clienti nel negozio sono meno di 2 mentre vengono serviti in
media 60 clienti l’ora se i clienti nel negozio sono 3 o più di 3; quindi si ha µn = 30 per n = 1, 2
e µn = 60 per n ≥ 3.
Per la determinazione della distribuzione stazionaria, innanzitutto verifichiamo che la condizione
di esistenza (1.4.12) sia soddisfatta. Infatti, in questo caso la serie della condizione (1.4.12)
converge ed ha per somma il valore 3. Dalla (1.4.10) si ricava immediatamente il valore di
44 TEORIA DELLE CODE
µn = µ, n≥1
con λ, µ ∈ IR fissati. Determinare sotto quali condizioni questo processo raggiunge lo stato
stazionario e calcolare l’espressione di p0 e di pn in funzione di λ e µ.
Si ha:
• Caso a): 1 ≤ n ≤ K + 1. In questo caso si ha
Y
n−1
λi µ ¶n
i=0 λ
=
Yn
µ
µj
j=1
Y
n−1
λi µ ¶n
i=0 1 3λ
=
Yn
3K+1 µ
µj
j=1
Quindi si ha
Y
n−1
λi
X
∞
i=0
X µ λ ¶n
K+1 X
∞
1
µ
3λ
¶n
= +
Yn
µ 3K+1 µ
n=1 n=1 n=K+2
µj
j=1
PROCESSI DI NASCITA E MORTE 45
3λ
Quindi la serie converge per < 1, e questa è la relazione tra λ e µ che garantisce l’esistenza
µ
dello stato stazionario. Risulta inoltre
µ ¶n
λ
µ p0 , per 1 ≤ n ≤ K + 1
pn = µ ¶n
1 3λ
K+1 p0 , per n > K + 1
3 µ
e µ ¶K+2 −1
λ
1 − µ ¶K+2
µ 1 3λ 1
p0 = +
λ 3K+1 µ 3λ
1− 1−
µ µ
In questo paragrafo verrano studiati sistemi di code che possono essere rappre-
sentati da processi di nascita e morte. In particolare, assumendo che il sistema
raggiunga l’equilibrio, utilizzando i risultati ottenuti nel paragrafo precedente si
possono facilmente ottenere le misure di prestazione (N , T , N q e T q ) di un sis-
tema di code rappresentato da un processo di nascita e morte. Infatti, una volta
ottenuti i valori pn delle probabilità in equilibrio, si possono calcolare il valore di
N dalla (1.2.1) e il valore di N q dalla (1.2.2), ovvero
∞
X
N = npn (1.5.1)
n=0
X∞
Nq = (n − s)pn . (1.5.2)
n=s+1
(Si osservi che con questa definizione di Πn la condizione di esistenza dello stato
P
stazionario si può riscrivere ∞ n=1 Πn < ∞).
Avendo a disposizione le pn si possono calcolare i valori di N ed N q rispettiva-
mente dalle (1.5.1) e (1.5.2). Il passo successivo consiste nell’applicare il teorema
di Little (1.2.14) e la (1.2.20) per ottenere il valori di T e T q . Nel fare ciò e neces-
sario prestare attenzione al fatto che la costante λ che compare nella formula di
Little (1.2.14) e nella (1.2.20) rappresenta, come è ben noto, la frequenza media
degli arrivi. Ora, se il sistema di code è rappresentato attraverso un processo di
nascita e morte in cui il coefficiente di natalità è costante (λn = λ) allora esso
coincide con tale frequenza media degli arrivi, altrimenti, se λn può variare con
lo stato n, il valore della frequenza media degli arrivi deve essere calcolato. Ciò
può essere fatto facilmente ricordando che λn rappresenta la frequenza media di
arrivo quando nel sistema ci sono n utenti e pn è la probabilità che n utenti siano
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 47
Frequenza presenti nel sistema, e quindi si ha la frequenza media effettiva degli arrivi che
media indichiamo con λ data da
∞
X
effettiva
λ= λ n pn . (1.5.5)
degli arrivi
n=0
N
T = (1.5.6)
λ
Nq
Tq = . (1.5.7)
λ
Si osservi che una difficoltà potrebbe essere rappresentata dal fatto che nelle
(1.5.1) (1.5.2) sono presenti delle serie e non delle somme finite; tuttavia, come
vedremo, in molti casi interessanti, queste serie convergono e può essere facilmente
calcolato il loro valore.
Prima di entrare nei dettagli dei vari modelli di code, analizziamo una proprietà
di cui godono tutti i sistemi di code con arrivi poissoniani.
ak (t) = P {un utente che arriva al tempo t trova il sistema nello stato k}.
e l’evento
sono eventi distinti. Infatti, nel caso del primo evento l’osservazione dello stato
del sistema avviene in specifici istanti di tempo che dipendono dal processo di
arrivo. Se invece gli arrivi sono poissoniani, allora si ha il seguente risultato.
48 TEORIA DELLE CODE
ak (t) = P {un utente che arriva al tempo t trova il sistema nello stato k}
= lim P (N (t) = k | X(t + ∆t) − X(t) = 1)
∆t→0
P (X(t + ∆t) − X(t) = 1 | N (t) = k) P (N (t) = k)
= lim
∆t→0 P (X(t + ∆t) − X(t) = 1)
P (X(t + ∆t) − X(t) = 1) P (N (t) = k)
= lim = P (N (t) = k) = pk (t).
∆t→0 P (X(t + ∆t) − X(t) = 1)
ak = lim ak (t)
t→∞
interpretandole come frazione di arrivi che trovano k utenti nel sistema. Poiché
dalla proprietà PASTA si ha ak (t) = pk (t), passando al limite per t → ∞ si
ottiene anche l’uguaglianza
ak = pk . (1.5.8)
dk (t) = P {un utente che esce al tempo t lascia il sistema nello stato k}
e, in condizioni di stazionarietà,
dk = lim dk (t),
t→∞
interpretando dk come frazione di clienti che lascia nel sistema k clienti quando
esce dal sistema.
Per un qualsiasi sistema di code a cosa singola, non necessariamente con arrivi
poissoniani, vale l’uguaglianza
ak = dk (1.5.9)
purché i clienti arrivano al sistema uno alla volta e sono serviti uno alla volta. Ma
quando gli arrivi sono poissoniani vale la proprietà PASTA e quindi vale la (1.5.8).
Quindi, in questo caso dalla (1.5.8) e dalla (1.5.9) si ha pk = ak = dk , ovvero,
sia un cliente che arriva, sia un cliente che parte da un sistema in condizioni di
stazionarietà, vede un sistema che è statisticamente equivalente ad un sistema
visto da un osservatore che osserva il sistema dall’esterno in un arbitrario istante
di tempo.
50 TEORIA DELLE CODE
I sistemi M/M/s sono sistemi di code ove si assume che gli intertempi di arrivo
sono indipendenti, identicamente distribuiti secondo la distribuzione esponenziale
(ovvero arrivi poissoniani), i tempi di servizio indipendenti, identicamente dis-
tribuiti secondo un’altra distribuzione esponenziale e il numero di serventi pari a
s. Questi modelli possono essere rappresentati come processi di nascita e morte;
infatti, come abbiamo già osservato nel paragrafo 1.4.3, se il sistema ha un solo
servente (s = 1) allora esso è rappresentabile mediante un processo di nascita e
morte con coefficiente di natalità costante λn = λ, n = 0, 1, . . . e coefficiente di
mortalità costante µn = µ, n = 1, 2, . . .. Infatti assumere che i tempi di interar-
rivo sono esponenziali equivale ad avere arrivi secondo un processo di Poisson di
tasso λ. Analogamente, avere tasso di mortalità costante corrisponde ad avere i
tempi di servizio esponenziali.
Se il sistema ha s > 1 serventi (che, ricordiamo, abbiamo assunto lavorino in
parallelo) il sistema è sempre rappresentabile mediante un processo di nascita
e morte, ma il coefficiente di mortalità µn non può essere espresso in maniera
cosı̀ semplice. Si ricordi che µn rappresenta il coefficiente di mortalità, ovvero
la velocità media alla quale avvengono i completamenti dei servizi e quindi la
velocità media alla quale gli utenti escono dal sistema, quando n utenti sono
presenti nel sistema. Abbiamo visto che per la Proprietà E3 della distribuzione
esponenziale, quando la velocità media di servizio di ciascun server è pari a µ, la
velocità media media di servizio complessiva quando si hanno n serventi occupati
(cioè che stanno erogando il servizio) è pari a nµ. Quindi si ha
½
nµ per 1 ≤ n ≤ s
µn = (1.5.10)
sµ per n ≥ s,
Sistemi M/M/1
Sistemi Consideriamo, ora i sistemi M/M/1, ovvero con un singolo servente, assumendo
M/M/1 ρ = λ/µ < 1. In questo caso risulta Πn = (λ/µ)n = ρn e quindi si ha soddisfatta
la condizione di esistenza dello stato stazionario (1.4.12) in quanto 0 < ρ < 1 e
risulta
X∞
1
ρn = − 1.
n=1
1−ρ
1
p0 = =1−ρ e pn = ρn p0 , per n ≥ 1,
1
1−ρ
da cui
λ
N =
µ−λ
λ2
Nq =
µ(µ − λ)
1
T =
µ−λ
λ
Tq = .
µ(µ − λ)
Esempio 1.5.2 In un aeroporto con una sola pista chiede di atterrare, in media, un aereo ogni
6 minuti e la distribuzione degli intervalli di tempo tra due richieste successive è esponenziale.
Gli aerei vengono autorizzati ad atterrare dal controllore del traffico aereo sulla base del cri-
terio primo arrivato, primo servito. Gli aerei che non possono atterrare immediatamente per
la congestione del traffico, vengono inseriti in un circuito di attesa. Il tempo necessario per
l’atterraggio è distribuito esponenzialmente con un valore medio pari a 4 minuti.
Determinare:
1. il numero medio di aerei tenuti contemporaneamente sotto controllo dal controllore del
traffico aereo;
2. il numero medio di aerei che si trovano nel circuito di attesa;
3. il tempo medio passato nel circuito di attesa;
4. la probabilità che nel circuito di attesa ci siano più di 3 aerei.
Si tratta di un sistema di code M/M/1 in cui gli utenti sono gli aerei e la coda è costituita
dagli aerei nel circuito di attesa. Assumendo come unità di tempo il minuto, si ha λ = 1/6,
µ = 1/4, ρ = 2/3. Poiché risulta ρ < 1 è soddisfatta la condizione di esistenza della distribuzione
stazionaria.
1. Il numero di aerei che il controllore deve tenere sotto controllo è pari al numero di aerei
presenti nel sistema che è dato da N = λ/(µ − λ) = 2;
2. il numero medio di aerei che si trovano nel circuito di attesa è N q = λ2 /[µ(µ − λ)] = 4/3;
3. il tempo medio passato nel circuito di attesa è T q = N q /λ = 8 minuti;
4. la probabilità che nel circuito di attesa ci siano più di 3 aerei coincide con la probabilità
che nel sistema ci sono più di 4 utenti; tale probabilità si può ottenere come
X
∞ X
4 X
4
pn = 1− pn = 1 − (1 − ρ) ρn
n=5 n=0 n=0
= 1 − (1/3)(1 + 2/3 + 4/9 + 8/27 + 16/81) = 0.131.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 53
Esercizio 1.5.3 Realizzare un foglio elettronico in Excel che, dati in ingresso i valori di λ e µ
di un sistema di code M/M/1, determini N , N q , T , T q e la distribuzione pn per n = 0, 1, . . . , 25,
rappresentando su un grafico questi valori di pn .
Nel caso di sistemi M/M/1, oltre il valore atteso, si può ricavare anche la dis-
tribuzione di probabilità del tempo di permanenza nel sistema tw di un arbitrario
utente che arriva. P (tw > t)
A tale scopo, supponiamo che l’utente che arriva trovi già un certo numero n
di utenti presenti nel sistema. Se n = 0 il tempo di permanenza nel sistema
dell’utente che arriva è pari al tempo di servizio. Nel caso n ≥ 1 il nuovo utente
che arriva trova un utente che sta usufruendo del servizio e n − 1 utenti in coda.
Per poter uscire dal sistema, questo nuovo utente che arriva dovrà aspettare
• i tempi di servizio degli n − 1 utenti che sono in coda, tempi che sono
distributi esponenzialmente di parametro µ;
Ovvero l’utente arbitrario che arriva dovrà aspettare n + 1 tempi distribuiti espo-
nenzialmente di parametro µ. Se indichiamo con T1 , T2 , . . . , Tn+1 questi tempi,
si ha che il tempo di permanenza nel sistema dell’utente che arriva sarà dato
Sn+1 = T1 + · · · + Tn+1 . Per la Proprietà E5, si ha che la variabile Sn+1 segue la
distribuzione di Erlang di parametri µ ed n + 1, ovvero la sua densità di proba-
bilità è
(µx)n
fSn+1 (x) = µe−µx ,
n!
e quindi risulta
µ ¯ n utenti presenti nel sistema ¶
¯
w
P t ≤t¯ = P (Sn+1 ≤ t)
all’arrivo del nuovo utente
Z t
(µx)n
= µe−µx dx. (1.5.12)
0 n!
Sulla base di queste osservazioni, possiamo ora dimostrare il seguente risultato.
54 TEORIA DELLE CODE
∞ Z t
X
w (µx)n
P (t ≤ t) = µe−µx dx ρn (1 − ρ)
n=0 0
n!
Z t ∞
X (λx)n
= (µ − λ)e−µx dx
0 n=0
n!
Z t
= (µ − λ)e−(µ−λ)x dx
0
= 1 − e−(µ−λ)t ,
Altrimenti, se all’arrivo del nuovo utente c’è un numero non nullo di utenti pre-
senti nel sistema, ovvero se n ≥ 1, vale il seguente risultato.
Si ottiene, quindi
µ ¶
1 λ n
per n = 1, 2, . . . , s − 1
n! µ
Πn = µ ¶ µ ¶ µ ¶n
1 λ s λ n−s 1 λ
= per n = s, s + 1, . . .
s! µ sµ s!sn−s µ
λ
che è soddisfatta per ρ = < 1.
sµ
Inoltre risulta
1
p0 = s−1 µ ¶n µ ¶s (1.5.14)
X 1 λ 1 λ 1
+
n=0
n! µ s! µ 1−ρ
λ λ λ λ λ λ λ λ
0 1 2 3 … s-1 s s+1 …
µ 2µ 3µ 4µ (s −1)µ sµ sµ sµ
ed il valore di pn dato da
µ ¶
1 λ n
p0 , per n = 1, 2, . . . , s − 1
n! µ
pn = µ ¶n (1.5.15)
1 λ
p0 , per n = s, s + 1, . . .
s!sn−s µ
µ ¶s
1 λ ρ
Nq = p0
s! µ (1 − ρ)2
Nq
Tq =
λ
1
T = Tq +
µ
λ
N = λT = N q + .
µ
³ −µt(s−1−λ/µ)
´
sostituendo 1−es−1−λ/µ con µt nel caso in cui il denominatore si annulli,
ovvero se s − 1 − λ/µ = 0, ed inoltre
È molto utile avere un’espressione per il calcolo della probabilità di dover at-
tendere nella coda un tempo non nullo, P (tq > 0) che, ovviamente, è un caso
particolare della (1.5.16). Si può ricavare direttamente nel seguente modo:
∞ ∞ µ ¶ µ ¶
X X 1 λ s λ n−s
P (tq > 0) = pn = p0
n=s n=s s! µ sµ
µ ¶s X ∞ µ ¶i
1 λ λ
= p0
s! µ i=0
sµ
µ ¶s µ ¶s
1 λ 1 1 λ 1
= p = p0
s! µ λ 0 s! µ 1−ρ
1−
sµ
Quest’ultima formula che fornisce la probabilità che un utente che arriva trova
tutti i serventi occupati è nota come formula di Erlang C.
Esempio 1.5.8 Un bar ha due barman ugualmente efficienti, ciascuno dei quali è in grado di
servire, in media, 60 clienti l’ora e i tempi di servizio sono distribuiti esponenzialmente. I clienti
entrano nel bar secondo un processo di Poisson, con frequenza media di 100 l’ora.
Determinare:
1. il numero medio di clienti in attesa di essere serviti;
2. il tempo medio di attesa prima di essere serviti;
3. la probabilità che nel bar vi siano più di 5 clienti;
4. se utilizzando un terzo barman è possibile dimezzare il tempo medio di attesa in coda.
Si tratta di un modello di code M/M/2. Assumendo come unità di tempo l’ora, si ha λ = 100
e µ = 60. Inoltre, poiché risulta ρ = λ/(2µ) = 5/6 < 1, la condizione per l’esistenza della
distribuzione stazionaria è verificata.
1. Per determinare il il numero medio di clienti in attesa di essere serviti N q abbiamo bisogno
del valore di p0 che può essere calcolato dalla (1.5.14) dalla quale si ottiene p0 = 1/11.
Quindi possiamo calcolare il valore di N q che risulta pari a 125/33 = 3.78;
2. il tempo medio di attesa prima di essere serviti è T q = N q /λ = 0.0378 ore, ovvero circa
2.28 minuti;
3. la probabilità che nel bar vi siano più di 5 clienti è data da
1 − (p0 + p1 + p2 + p3 + p4 + p5 );
4. con un terzo barman il sistema diventa di tipo M/M/3 con ρ = 5/9. Per questo sistema
si ottiene p0 = 0.173, N q = 0.374 e T q = 0.00374 e quindi il tempo medio di attesa in
coda è ridotto a circa un decimo del precedente.
Esercizio 1.5.11 Un sistema di elaborazione è costituito da 3 server. Poichè ciascun server può
essere anche utilizzato singolarmente, ogni server può essere anche considerato come un sistema
singolo. I processi arrivano al sistema secondo la distribuzione di Poisson con media 9 l’ora e
il tempo di servizio di ciascun server è distribuito esponenzialmente con media 10 minuti. Un
operatore deve decidere come far operare il sistema. Esistono tre possibili modalità operative:
1. tre sistemi singoli indipendenti: i processi arrivano al sistema e si distribuiscono casual-
mente nelle tre code presenti (una per ciascun server);
2. i processi in arrivo sono posizionati in un’unica fila di attesa e il primo processo viene
lavorato non appena si libera uno dei server;
3. come nel punto 2 processi sono in un;unica fila, ma i 3 server sono connessi tra loro in
modo da funzionare come un unico sever con velocità di servizio tripla.
Per la modalità operativa 1:
a) descrivere un sistema a coda che può rappresentare la situazione descritta;
b) determinare il tempo medio di permanenza nel sistema e il tempo medio di attesa in
coda.
c) calcolare il numero medio di processi presenti nel sistema e il numero medio dei processi
presenti in attesa di essere lavorati;
d) determinare la probabilità che il tempo di permanenza nel sistema superi i 10 minuti.
Per la modalità operativa 2:
e) descrivere un sistema a coda che può rappresentare la situazione descritta;
60 TEORIA DELLE CODE
Esercizio 1.5.12 Completare il foglio Excel dell’Esercizio 1.5.3 includendo anche il caso di
code M/M/s con s > 1.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 61
Consideriamo ora sistemi in cui c’è un limite K (capacità del sistema limitata)
sul numero di utenti che il sistema può contenere contemporaneamente. Natu-
ralmente, poiché s è il numero dei serventi, K − s è la capacità massima della
coda. Ad ogni utente che arriva nel sistema quando la coda è piena è negato
l’accesso definitivamente (cliente perso). Questa situazione si può interpretare
come un processo di nascita e morte in cui il coefficiente di natalità è nullo in
corrispondenza di certi istanti di tempo, ovvero nei casi in cui risulta n ≥ K. Si
ha, quindi, ½
λ per n = 0, 1, . . . , K − 1
λn =
0 per n ≥ K.
Ovviamente si avrà pn = 0 per ogni n > K perché non ci possono essere più di K
utenti nel sistema; inoltre, il sistema raggiunge condizioni di stazionarietà anche
se la condizione ρ < 1 non è verificata in quanto si ha λn = 0 per n ≥ K.
Da un punto di vista pratico, questa situazione di capacità limitata corrisponde
ad avere spazi fisici limitati per l’attesa. Un’altra interpretazione riguarda la
situazione in cui i clienti in arrivo al sistema vedono troppi utenti (K) davanti
a loro e non entrano nel sistema rinunciando definitivamente al servizio; questa
situazione è nota con il nome di balking (rinuncia).
Sistemi M/M/1/K
Consideriamo prima il caso con un singolo servente. In questo caso si ha Sistemi
½
λ per n = 0, 1, . . . , K − 1 M/M/1/K
λn = , µn = µ per n = 1, 2, . . . , K.
0 per n ≥ K,
Segue immediatamente che risulta
µ ¶n
λ
= ρn per n = 1, . . . , K
Πn = µ
0 per n>K
e quindi per ρ 6= 1 si ottiene
1 1 1−ρ
p0 = = K+1
=
K
X 1−ρ 1 − ρK+1
ρn 1−ρ
n=0
ed inoltre
µ ¶
1−ρ
ρn p0 = ρn per n = 0, 1, . . . , K
pn = 1 − ρK+1
0 per n > K,
62 TEORIA DELLE CODE
1
mentre per ρ = 1, per n = 0, 1, . . . , K si ha pn = .
K +1
Possiamo ora calcolare il valore di N . Infatti risulta
K
X K
1−ρ X
N = npn = nρn
n=0
1 − ρK+1 n=0
K
à !
1−ρ X dρn 1−ρ d 1 − ρK+1
= K+1
ρ = K+1
ρ
1−ρ n=0
dt 1−ρ dt 1−ρ
ρ (K + 1)ρK+1
= − . (1.5.17)
1−ρ 1 − ρK+1
Si osservi che, ovviamente, se ρ < 1, al tendere di K all’infinito, il valore di N
appena ottenuto tende a ρ/(1 − ρ) che infatti è il valore di N nel caso di capacità
del sistema infinita, ovvero il caso di sistemi M/M/1.
Dall’espressione di N si può facilmente determinare N q come
N q = N − (1 − p0 ).
Si vuole ora applicare il Teorema di Little per ottenere il valori di T e T q . Per
fare ciò, poiché λn non è costante, è necessario calcolare la frequenza media
effettiva degli arrivi λ data dalla (1.5.5). Infatti, nel caso dei sistemi di code
M/M/1/K che stiamo trattando, λ non rappresenta la frequenza media effettiva
degli arrivi perché tiene conto anche degli arrivi che non entrano nel sistema
(perché lo trovano nello stato K). Ora, la probabilità che un utente non possa
entrare nel sistema è uguale alla probabilità che nel sistema ci siano K utenti,
ovvero pK ; quindi la probabilità che un utente accede al sistema è 1−pK e quindi,
per la Proposizione 1.3.6 sulla proprietà dei processi di Poisson disaggregati, la
frequenza media effettiva degli arrivi in questo caso risulta pari a (si veda anche
l’Osservazione 1.3.7)
λ = λ(1 − pK ). (1.5.18)
D’altra parte, applicando la (1.5.5) si ottiene direttamente la (1.5.18).
Fattore di La probabilità pK è detta fattore di perdita, in quanto rappresenta la frazione di
perdita clienti che va perduta perché non entra nel sistema. Definendo ² = 1 − pK la
(1.5.18) può essere riscritta
λ = ²λ, con ² < 1.
Questa relazione mette bene in evidenza che soltanto una frazione di potenziali
clienti entra effettivamente nel sistema, mentre la rimanente parte dei clienti viene
persa.
Sempre nel caso singolo servente (s = 1) la frequenza media effettivi degli arrivi
λ può essere facilmente ottenuta notando che risulta λ/µ = 1 − p0 da cui si ricava
λ = µ(1 − p0 ). (1.5.19)
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 63
Una semplice verifica mostra che nel caso che stiamo trattando, queste due
espressioni per λ (la (1.5.18) e la (1.5.19)) ovviamente coincidono, ovvero vale
µ(1 − p0 ) = λ(1 − pk ).
Esempio 1.5.14 Una stazione di servizio ha un’unica pompa di benzina ed un unico addetto.
Le automobili arrivano alla stazione di servizio per rifornirsi secondo un processo di Poisson ad
una frequenza media di 10 l’ora. Il tempo necessario per servire un’automobile è distribuito
esponenzialmente con un valor medio pari a 2 minuti. La stazione di servizio può contenere al
più 4 automobili e sulla strada vige un divieto di fermata, per cui non è consentito attendere
fuori della stazione.
Determinare:
1. il numero medio di automobili presenti nella stazione di servizio;
2. la probabilità che un’automobile non possa effettuare il rifornimento;
3. il tempo medio di attesa nella stazione di servizio prima di ottenere il servizio.
La stazione di servizio può essere vista come un sistema di code M/M/1/4, in cui gli utenti sono
le automobili e il servente è l’addetto alla pompa di benzina. Assumendo come unità di tempo
l’ora, si ha λ = 10, µ = 30, ρ = 1/3 e K = 4.
1. Dalla (1.5.17) si ottiene N = 0.4793;
2. la probabilità che un’automobile non possa effettuare il rifornimento è data da p4 che
si può ricavare come p4 = ρ4 p0 = 1/34 p0 . È necessario, quindi, il calcolo di p0 =
(1 − 1/3)/(1 − 1/35 ) = 0.6694. Risulta quindi p4 = 0.008264;
3. È necessario determinare λ = (1 − p4 )λ = 9.9173 per ottenere T = N/λ = 0.04840 da cui
T q = T − 1/µ = 0.015, ovvero il tempo medio di attesa nella stazione di servizio prima
di ottenere il servizio è di circa 54 secondi.
64 TEORIA DELLE CODE
½
nµ per n = 1, 2, . . . , s − 1
µn =
sµ per s ≤ n ≤ K.
µ ¶
1 λ n
per n = 1, 2, . . . , s − 1
n! µ
µ ¶ µ
s ¶n−s µ ¶n
Πn = 1 λ λ 1 λ
= per n = s, s + 1, . . . , K
s! µ sµ s!sn−s µ
0 per n > K.
µ ¶
1 λ n
p0 , per n = 1, 2, . . . , s − 1
n! µ
µ ¶n
pn = 1 λ
p0 , per n = s, s + 1, . . . , K
s!sn−s µ
0 per n > K.
1
p0 = s−1 µ ¶n µ ¶ K µ ¶n−s .
X 1 λ 1 λ sX λ
+
n=0
n! µ s! µ n=s sµ
allora à !
s−1
X ∞
X s−1
X s−1
X
q
N= npn + npn = npn + N + s 1 − pn .
n=0 n=s n=0 n=0
Esercizio 1.5.15 Un porto possiede un terminal cargo al quale arrivano navi porta-container
per le operazioni di carico-scarico che avvengono attraverso apposite gru. Attualmente il termi-
nal dispone di una sola gru e quindi il carico-scarico avviene una nave alla volta. Quando una
nave arriva e la gru è già impegnata in operazioni di carico-scarico, essa attende il proprio turno
secondo una disciplina FIFO in una fila di attesa che supponiamo illimitata. Le navi arrivano
al terminal secondo la distribuzione di Poisson con media 3 al giorno e il tempo che una gru
impiega per il carico-scarico di una nave è distribuito esponenzialmente con media 4 ore.
a) Descrivere un sistema a coda che può rappresentare la situazione descritta specificando
dettagliatamente tutte le sue componenti;
b) determinare il numero medio di navi che sono in attesa di effettuare il carico-scarico;
c) determinare il tempo medio che intercorre tra l’arrivo di una nave al terminal e la sua
fuoriuscita dal terminal stesso dopo il carico-scarico;
d) determinare come è distribuito il numero totale delle navi presenti nel terminal.
66 TEORIA DELLE CODE
Supponiamo, ora, che lo spazio all’interno del terminal dove le navi attendono il loro turno
prima delle operazioni di carico-scarico sia limitato e non permetta lo stazionamento di più di
quattro navi; le eventuali ulteriori navi che arrivano vengono dirottate presso un altro terminal.
e) descrivere un sistema a coda che rappresenta bene la nuova situazione;
f) spiegare dettagliatamente come si può ricondurre questo sistema ad un processo di nascita
e morte;
g) calcolare il numero medio di navi presenti nel terminal e il tempo medio di attesa in coda;
h) calcolare la probabilità che una nave ha di non poter entrare nel terminal considerato,
ovvero di essere dirottata ad altro terminal.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 67
Si vuole ora considerare il caso in cui la popolazione sia finita, il numero dei
potenziali utenti è finito e pari a U . Naturalmente, se n è il numero degli utenti
presenti nel sistema, i potenziali clienti sono U − n.
Un esempio tipico di questa situazione si ha in un reparto manutenzioni di un
industria. In questo caso, un certo numero di macchine deve essere tenuto in
manutenzione. Tali macchine costituiscono la popolazione finita: ciascuna di esse
entra nel sistema costituito dal reparto manutenzioni quando deve essere riparata
e ne fuoriesce, una volta riparata, andando di nuovo a far parte della popolazione
dei potenziali clienti in quanto potrà rientrare nel sistema nel momento in cui si
guasta di nuovo. Un modello che si presta bene a rappresentare una situazione
di questo tipo assume che il tempo che la macchina è al di fuori del sistema
(ovvero il tempo che trascorre da quando la macchina esce dal sistema a quando
rientra) è distribuito esponenzialmente di parametro λ. Quando ci sono n utenti
nel sistema, e quindi U − n utenti sono fuori del sistema, ad un certo istante di
tempo la distribuzione di probabilità del tempo rimanente fino al prossimo arrivo
al sistema coincide con la distribuzione di probabilità del più piccolo dei tempi
rimanenti per l’ingresso al sistema tra tutti gli utenti che sono fuori del sistema
che sono U − n. Per la Proprietà E2 (assenza di memoria) e la Proprietà E3,
questa distribuzione di probabilità è esponenziale di parametro (U − n)λ. Quindi
anche questo sistema di code può essere rappresentato mediante un processo
di nascita e morte con coefficiente di natalità pari a λn = (U − n)λ per n =
0, 1, . . . , U − 1 e λn = 0 per n ≥ U in quanto nel sistema non possono esserci
più di U utenti. Un tale sistema, poiché risulta λn = 0 per n > U , raggiunge
condizioni di stazionarietà anche se ρ ≥ 1.
Sistemi M/M/1/ · /U
Consideriamo ora il caso singolo servente, ovvero s = 1. Per rappresentare questo Sistema
caso con un processo di nascita e morte è sufficiente prendere M/M/1/·/U
½
(U − n)λ per n = 0, 1, . . . , U − 1
λn =
0 per n ≥ U,
µn = µ per n = 1, 2, . . .
Il diagramma di transizione di stato in questo caso è riportato in Figura 1.5.2.
Si ottiene immediatamente
µ ¶n µ ¶n
λ U! λ
U (U − 1)(U − 2) · · · (U − n + 1) = per n ≤ U
Πn = µ (U − n)! µ
0 per n > U.
68 TEORIA DELLE CODE
Uλ (U −1)λ (U −n +1)λ λ
0 1 … n −1 n … U −1 U
µ µ µ µ
Risulta quindi
1
p0 = U µ ¶n (1.5.20)
X U! λ
n=0
(U − n)! µ
ed inoltre
µ ¶n
U! λ
p0 per n = 0, 1, . . . , U
pn = (U − n)! µ
0 per n > U.
U
X U
X µ ¶n
U! λ
N = npn = n p0
n=0 n=0
(U − n)! µ
U
X µ ¶n
U! λ
= (U − U + n) p0
n=0
(U − n)! µ
U
X µ ¶n U
X −1 µ ¶n
U! λ U! λ
= U p0 − p0
n=0
(U − n)! µ n=0
(U − n − 1)! µ
U
X µ ¶n−1
U! λ
= U− p0
n=1
(U − n)! µ
U µ ¶n
µX U! λ
= U− p0
λ n=1 (U − n)! µ
U
µX µ
= U− pn = U − (1 − p0 ).
λ n=1 λ
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 69
½
nµ per n = 1, 2, . . . , s − 1
µn =
sµ per n = s, s + 1, . . .
Si ha
µ ¶n
U! λ
per n = 1, 2, . . . , s − 1
(U − n)!n! µ
µ ¶n
Πn = U! λ
per n = s, s + 1, . . . , U
(U − n)!s!sn−s µ
0 per n > U.
dal quale si ottiene
µ ¶n
U! λ
p0 , per n = 1, 2, . . . , s − 1
(U − n)!n! µ
µ ¶n
pn = U! λ
p0 , per n = s, s + 1, . . . , U
(U − n)!s!sn−s µ
0 per n > U.
70 TEORIA DELLE CODE
dove
1
p0 = s−1 µ ¶n U µ ¶n .
X U! λ X U! λ
+ n−s
n=0
(U − n)!n! µ n=s (U − n)!s!s µ
e non si dispone di una forma compatta per l’espressione della N q ; per quanto
riguarda N si ha à !
s−1
X s−1
X
N= npn + N q + s 1 − pn .
n=0 n=0
I valori di T e di T q si ricavano come nel caso del singolo servente. Vista la
difficoltà di calcolo di questi valori di prestazioni, sono disponibili tavole che
riportano i valori numerici per questa tipologia di sistema di code sia a singolo
servente sia multiservente.
Esercizio 1.5.16 In un’azienda ci sono 5 operatori addetti alla gestione amministrativa dell’azien-
da stessa. Essi operano indipendentemente, e possono avvalersi, uno alla volta, della consulenza
di un esperto contabile. In media, il tempo che trascorre dalla conclusione di una consulenza
richiesta da un operatore fino alla richiesta di consulenza successiva è distribuito esponenzial-
mente con media 7 ore. La durata della consulenza può variare anche in maniera significativa,
in quanto l’esperto può aver bisogno di tempi diversi prima di poter dare una risposta al que-
sito posto da un operatore; si assuma che tali tempi siano distribuiti esponenzialmente con
media 1 ora. Inoltre, l’esperto che sta lavorando su un quesito posto da un operatore, non
può interrompere il suo lavoro e può inziare una nuova consulenza solo dopo aver terminato la
precedente.
a) Descrivere un sistema di code che rappresenti la situazione descritta.
b) Descrivere come si può ricondurre questa situazione ad un processo di nascita e morte.
Inoltre, determinare:
c) quanti operatori, in media, sono in attesa di poter avere la consulenza dell’esperto, ovvero
in attesa che l’esperto inizi a lavorare al proprio quesito;
d) quanto tempo, in media, un operatore aspetta quando ha deciso di richiedere una con-
sulenza prima di poter sottoporre il suo quesito all’esperto;
e) quanto tempo, in media, passa tra la richiesta di consulenza da parte di un operatore e
l’ottenimento della risposta al questito sottoposto all’esperto;
f) il valore della frequenza media effettiva con la quale gli operatori chiedono la consulenza
all’esperto, spiegando il suo significato;
g) la probabilità che l’esperto è inoperoso;
h) la probabilità che ad un operatore che necessiti di una consulenza, sia richiesto di aspettare
un tempo non nullo prima che l’esperto inizi a lavorare al suo quesito.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 71
1.5.5 Sistemi con velocità di servizio e frequenza di arrivo dipendenti dallo stato
Fino ad ora nello studio dei vari modelli di code, si è sempre assunto che la
velocità media del servizio µ è costante e non dipende dal numero degli utenti
presenti nel sistema. Tuttavia, nelle situazioni reali questo può non essere sempre
vero, specialmente se i serventi sono delle persone fisiche che è possibile tendano a
lavorare più in fretta di quanto fanno normalmente se vedono la fila d’attesa molto
lunga. Ovvero, c’è un incremento della velocità media di servizio in conseguenza
della presenza di molti utenti in coda.
Un’altra situazione che potrebbe presentarsi quando la coda è lunga, consiste in
un decremento della frequenza media degli arrivi indotto dal sistema stesso che
nella pratica potrebbe essere realizzato dirottando altrove utenti quando la coda
è molto lunga. Vediamo come è possibile costruire modelli che tengano conto di
queste situazioni.
con
1
p0 = ∞ µ ¶n
X 1 λ
(n!)c µ1
n=0
dalle quale si possono ottenere i valori delle misure di prestazione. Tuttavia non
sono disponibili espressioni analitiche delle serie che compaiono nelle formule, per
72 TEORIA DELLE CODE
cui sono stati tabulati valori approssimati per p0 ed N per diversi valori di c e
λ/µ1 troncando le serie a somme finite.
Un interessante caso particolare si ha in corrispondenza della scelta c = 1. In
questo caso si ha µn = nµ e
µ ¶n
− µλ 1 λ − µλ
p0 = e 1 , pn = e 1 .
n! µ1
Frequenza di Esaminiamo ora la situazione in cui la sola frequenza di arrivo dipende dallo
arrivo stato. Supponiamo quindi di avere una decrescita della frequenza media degli
dipendente arrivi, ad esempio in presenza di una coda molto lunga. Questo caso è anche
dallo stato detto ad “arrivi rallentati” in quanto prevede il rallentamento progressivo degli
arrivi in rapporto al numero dei clienti presenti nel sistema. Un modello che può
rappresentare bene questa situazione si ottiene assumendo che i tempi di servizio
siano distribuiti esponenzialmente di parametro costante µ e che gli arrivi siano
poissoniani con parametro non costante e dato da
1
λn = λ0 per n = 0, 1, . . . ,
(n + 1)b
da cui si ha
µ ¶n
1 λ0
pn = p0
(n!)b µ
con
1
p0 = ∞ µ ¶n
X 1 λ0
n=0
(n!)b µ
µ n = na µ 1 .
con
1
p0 = ∞ µ ¶n .
X 1 λ0
(n!) a+b µ1
n=0
Quindi si hanno gli stessi risultati già ottenuti nel primo dei due casi considerati,
sostituendo c con a + b e λ/µ1 con λ0 /µ1 e si possono utilizzare i valori tabulati
per determinare p0 ed N .
Caso multiservente
Passiamo ora al caso di più serventi considerando direttamente l’ultimo dei mo-
delli trattati nel caso singolo servente, ovvero quello più generale ottenuto come Caso
combinazione del modello che tiene conto dell’aumento della velocità media di multi-
servizio e del modello che tiene conto della diminuzione della frequenza media servente
di arrivo. Nel caso in cui si hanno s > 1 serventi, la variazione di λn e di µn
dipenderà da n/s, ovvero dal numero di utenti per servente e quindi di ha
λ0 per n≤s−1
λn = λ0
µ ¶ per n≥s
n+1 b
s
nµ1 per n≤s
µn = µ ¶a
n
sµ1 per n > s
s
74 TEORIA DELLE CODE
da cui
µ ¶
1 λ0 n
per n = 1, . . . s
n! µ1
Πn = µ ¶
1 λ0 n 1
c (1−c)(n−s)
per n = s + 1, . . .
n! µ1 s!(n!/s!) s
dove c = a + b. I valori di p0 , N , N q sono stati tabulati per diversi valori di c,
di λ0 , di µ1 e s. Sono stati inoltre realizzati grafici che riportano i valori di p0
e di N al variare di λ0 /(sµ1 ) e che possono risultare molto utili per determinare
valori approssimati delle misure di prestazioni.
Consideriamo, ora, un altro modello di sistemi di code che presenti arrivi poisso-
niani di parametro λ e tempi di servizio distribuiti esponenzialmente con parame-
tro µ, assumendo di avere infiniti serventi. Questo modello teorico corrisponde
al caso in cui un servente è immediatamente disponibile all’arrivo di un utente.
Risulta utile a studiare situazioni in cui un sistema presenta un servizio “self
service”, ovvero gli utenti che arrivano si servono da soli senza dover aspettare.
Tali sistemi sono frequenti nella realtà e possono essere rappresentanti anch’essi
attraverso un processo di nascita e morte con
λn = λ per n = 0, 1, . . .
µn = nµ per n = 1, 2, . . .
Si ottiene µ ¶
1 λ n
Πn = n = 1, 2, . . .
n! µ
e la condizione di esistenza dello stato stazionario è verificata per qualsiasi valore
di λ e µ. Si tratta, quindi, di un caso particolare di sistema con velocità di servizio
dipende dallo stato esaminato nel paragrafo precedente; possiamo facilmente os-
servare che quindi un sistema in cui la velocità di servizio dipende linearmente
dallo stato si comporta come un sistema con servente immediatamente disponi-
bile.
Naturalmente si ha
1 −λ
p0 = ∞ µ ¶ n = e µ,
X 1 λ
n=0
n! µ
µ ¶n
1 λ λ
−µ
pn = e .
n! µ
Consideriamo sistemi di code in cui gli arrivi sono di tipo poissoniano e i tempi di
servizio siano indipendenti, identicamente distribuiti, supponendo che non ci sia
alcuna assunzione sulla distribuzione di probabilità di tali tempi di servizio tsi .
Osserviamo innanzitutto che la proprietà PASTA vista nel paragrafo 1.5.1 valida
per ogni sistema con arrivi poissoniani, ovviamente, continua a valere anche nel
caso che stiamo esaminando.
Passiamo ora allo studio analitico dei sistemi M/G/1. Esistono diversi metodi di
analisi; utilizzeremo, nel seguito, quello basato sui tempi residui del servizio. As-
sumeremo solamente di conoscere la media 1/µ e la varianza σ 2 della distribuzione
dei tempi di servizio.
Nonostante non sia stata fatta alcuna assunzione sulla distribuzione dei tempi di
servizio, esiste un risultato generale che fornisce il valore per il tempo medio di
Formula di attesa nella coda T q . Tale risultato è noto come formula di Pollaczek–Kintchine
¡ ¢
Pollaczek– ed esprime la T q in funzione del momento secondo del tempo di servizio E (tsi )2 .
Kintchine Naturalmente, vale
³ ´
E (tsi )2 = V ar(tsi ) + [E(tsi )]2 = σ 2 + 1/µ2 . (1.6.1)
Riportiamo tale formula nel teorema che segue.
SISTEMI A CODA CON DISTRIBUZIONI NON ESPONENZIALI 77
σ 2 + 1/µ2
Tq = λ .
2(1 − ρ)
Dimostrazione: Supponiamo che la disciplina della coda sia di tipo FIFO. In-
dichiamo con Ri il tempo residuo al completamento del servizio visto dall’i-esimo
utente quando arriva (ovvero, se un utente j sta usufruendo del servizio quando
arriva l’utente i arriva, Ri è il tempo necessario affinché sia completato il servizio
sull’utente j). Indichiamo, inoltre, con nqi il numero degli utenti trovati nella
coda dall’i-esimo utente quando arriva.
Naturalmente risulta
i−1
X
tqi = Ri + tsj . (1.6.2)
j=i−nqi
R(τ )
t1s t 2s
τ
t1s t 2s t
Z t D(t)
1 1X1 s 2
R(τ )dτ = (t ) . (1.6.6)
t 0 t i=1 2 i
SISTEMI A CODA CON DISTRIBUZIONI NON ESPONENZIALI 79
ed inoltre
D(t)
lim
= λ.
t→∞ t
Infine, per la legge forte dei grandi numeri, si ha
D(t)
X
(tsi )2
³ ´
i=1
lim = E (tsi )2 .
t→∞ D(t)
Quindi la (1.6.8) diventa
1 ³ ´
R = λE (tsi )2
2
e sostituendo questo valore di R ora ottenuto nella (1.6.5), utilizzando la (1.6.1)
la dimostrazione è completata.
La grande flessibilità dei modelli M/G/1 li rende molto utili, ma il prezzo da pa-
gare per questa loro generalità sta nel fatto che, purtroppo, non sono disponibili,
nel caso generale, risultati per sistemi multiservente, ovvero per sistemi M/G/s
con s > 1.
Nel seguito esaminiamo due casi particolari importanti: i sistemi M/D/s e i
sistemi M/Ek /s.
Sistemi M/D/s
Sistemi I sistemi di code M/D/s assumono tempi di servizio costanti; essi forniscono un
M/D/s buon modello per situazioni in cui il servizio è effettuato sempre attraverso una
medesima procedura. Naturalmente risulta σ 2 = 0.
Per quanto riguarda il caso singolo servente (s = 1), i valori delle misure di
prestazione si ottengono dal caso generale di sistemi M/G/1 ponendo σ 2 = 0. In
particolare, si avrà:
1 λ
Tq =
2 µ(µ − λ)
1 ρ2
Nq =
2 1−ρ
ρ2
N = +ρ
2(1 − ρ)
λ/µ2 1
T = + .
2(1 − ρ) µ
Soffermandoci ad osservare i valori di T q e di N q si vede che essi risultano pari
esattamente alla metà dei valori corrispondenti per un sistema di code M/M/1
SISTEMI A CODA CON DISTRIBUZIONI NON ESPONENZIALI 81
Sistemi M/Ek /s
In termini di deviazione standard (σ), i sistemi M/D/s e M/M/s rappresentano Sistemi
due situazioni estreme: i primi assumono che non ci siano variazioni nei tempi di M/Ek /s
servizio, (infatti σ = 0), mentre i secondi assumono tempi di servizio distribuiti
esponenzialmente con una variazione che può essere anche molto grande (σ =
1/µ). Tra questi due casi estremi si colloca una distribuzione importante per la
quale risulta 0 < σ < 1/µ e che rappresenta bene i tempi di servizio in molte
situazioni reali: si tratta della distribuzione di Erlang (Ek ) di parametri k e µ a
media 1/µ, la cui densità di probabilità è data da
(µk)k k−1 −kµt
f (t) = t e , t ≥ 0.
(k − 1)!
Una tale distribuzione√di probabilità ha varianza pari a 1/(kµ2 ) e deviazione
standard σ pari a 1/( kµ) e quindi se i tempi di servizio seguono questa dis-
tribuzione, il parametro k rappresenta una sorta di “grado di variabilità” dei
tempi di servizio.
Richiamiamo il fatto che la sua importanza deriva da due punti fondamentali:
• è una famiglia di distribuzioni a due parametri e quindi con scelte opportune
si riesce ad approssimare bene un tempo di servizio reale ed inoltre per
k = 1 si ottiene la distribuzione esponenziale e per k → ∞ essa tende alla
distribuzione degenere (σ → 0);
• dalla Proprietà E5 della distribuzione esponenziale, si ha che la somma di k
variabili indipendenti, identicamente distribuite esponenzialmente ciascuna
con media 1/(kµ), ha distribuzione di Erlang Ek . Quindi se un servizio si
compone di k operazioni successive a ciascuna delle quali è associato un
tempo di servizio distribuito esponenzialmente con media 1/(kµ), allora il
tempo di servizio complessivo segue la distribuzione di Erlang Ek .
Per quanto riguarda il caso singolo servente (s = 1) dalle formule generali per
un sistema M/G/1 si ottengono i valori delle misure di prestazione per sistemi
M/Ek /1 ponendo σ 2 = 1/(kµ2 ), ovvero
1+k λ
Tq =
2k µ(µ − λ)
82 TEORIA DELLE CODE
1+k λ2
Nq =
2k µ(µ − λ)
1 1+k λ 1
T = Tq + = +
µ 2k µ(µ − λ) µ
1+k λ2 λ
N = λT = + .
2k µ(µ − λ) µ
Per quanto riguarda il caso multiservente (s > 1), non è possibile ottenere ana-
liticamente la distribuzione di probabilità del numero degli utenti presenti nel sis-
tema in condizioni di stazionarietà. Tuttavia, anche in questo caso sono disponi-
bili valori tabulati e grafici di N al variare di ρ = 1/(sµ).
Concludiamo questo paragrafo con alcuni cenni ai sistemi di code che non presen-
tano arrivi secondo Poisson. Infatti, come abbiamo già visto per quanto riguarda
i tempi di servizio, anche il processo degli arrivi potrebbe non essere casuale,
ma essere programmato in una qualche forma. Possiamo pertanto considerare
modelli dei seguenti tipi:
Per tutti i tre tipi ora menzionati si è assunto che i tempi di servizio sono dis-
tribuiti esponenzialmente. Tuttavia è possibile considerare anche modelli ancora
più generali come Em /Ek /s, Ek /D/s, D/Ek /s.
La trattazione di questi modelli esula dallo scopo di queste note e pertanto essi
non verranno trattati.
MODELLI DI CODE CON DISCIPLINA DELLA CODA BASATA SU CRITERI DI PRIORITÀ 83
• sistemi con priorità con interruzione del servizio (priorità con diritto di
prelazione),
• sistemi con priorità senza interruzione del servizio (priorità senza diritto di
prelazione).
Nel caso di sistemi con interruzione del servizio può accadere che ad un utente Priorità
sia interrotto il servizio (facendolo ritornare in coda) per l’arrivo nel sistema di interrut-
un’altro utente con priorità superiore rispetto a quella dell’utente che sta usufru- tiva
endo del servizio, ovvero il servente è tenuto ad iniziare immediatamente il servizio
al nuovo utente con priorità più elevata. Al termine del servizio, verrà effettuata
un’altra selezione dalla coda. Se l’utente prescelto è uno di quelli ai quali era
stato precedentemente interrotto il servizio, ci sono due possibilità: viene ese-
guita soltanto la parte mancante per il completamento del servizio (preemptive
resume systems), oppure il servizio deve ricominciare dall’inizio (preemptive re-
peat systems). Poiché il tempo di servizio è distribuito esponenzialmente, da un
punto di vista probabilistico, non è rilevante che il servizio interrotto riprenda dal
punto in cui era cessato oppure dall’inizio per la proprietà di assenza di memoria
della distribuzione esponenziale.
Nel caso di sistemi con priorità senza interruzione del servizio il servizio non può Priorità
essere interrotto, ma deve essere portato a termine. non inter-
Per entrambi i modelli la distinzione tra i clienti in differenti classi non influenza ruttiva
la distribuzione degli arrivi di tutti gli utenti, ovvero degli arrivi aggregati senza
84 TEORIA DELLE CODE
tenere conto delle classi; infatti, per la Proposizione 1.3.6, un processo risultante
dall’aggregazione di processi di Poisson è ancora un processo di Poisson. Inoltre,
poiché tutti i tempi di servizio sono distribuiti esponenzialmente, i due modelli
(con priorità con o senza interruzione del servizio) sono identici al modello M/M/s
fatta eccezione per l’ordine in cui vengono serviti gli utenti, e quindi continuano
a valere le espressioni per N , N q , T e T q ottenute per quel modello. Si osservi,
però, che T q potrebbe non essere più il valore atteso del tempo passato in coda
se il servizio viene interrotto con conseguente ulteriore permanenza in coda.
Inoltre cambia la distribuzione dei tempi di attesa che era stata ottenuta in rifer-
imento ad una disciplina di selezione dalla coda di tipo FIFO. Con la disciplina
della coda basata su criteri di priorità, questa distribuzione ha una varianza più
grande perché i tempi di attesa degli utenti in classi di priorità alta tendono ad
essere più brevi di quelli con una disciplina di tipo FIFO, mentre quelli degli
utenti in classi di priorità più basse tendono ad essere più lunghi. Analogamente,
l’insieme degli utenti presenti nel sistema tenderà ad essere per la maggior parte
composto da utenti delle classi di priorità più basse, in accordo con lo spirito
dei sistemi di code con priorità, ovvero con l’intento di migliorare le misure di
prestazione per gli utenti delle classi di priorità più alte a scapito, eventualmente,
delle prestazioni per gli utenti nelle classi più basse.
Per analizzare sistemi di questo tipo dobbiamo introdurre misure di prestazione
relative ad ogni classe; faremo ciò inserendo un pedice alle notazioni già adottate
per indicarne la classe di riferimento; quindi Tk indicherà il valore atteso del
tempo passato nel sistema dagli utenti della k-esima classe di priorità e notazioni
analoghe si adotteranno per Nk , Tkq e Nkq .
Consideriamo un sistema con s serventi supponendo che velocità media di servizio
sia pari a µ indipendente dalla classe di priorità, mentre per quanto riguarda il
processo degli arrivi, indicheremo con λi , i = 1, . . . , nc, la frequenza media di
arrivo per gli utenti della classe i-esima. Per la Proposizione 1.3.6 dei processi
di Poisson, aggregando i vari processi di arrivo, ovvero non distinguendo tra le
classi di priorità, si ottiene ancora un processo di Poisson di parametro
nc
X
λ= λi .
i=1
P
Inoltre si assume che ki=1 λi < sµ in modo che la classe di priorità k-esima possa
raggiungere condizioni di stazionarietà.
Si riportano di seguito le espressioni delle misure di prestazione (relative a cias-
cuna classe di priorità) nelle due tipologie di sistemi di code con disciplina della
coda basata su criteri di priorità.
Risulta inoltre
1
Tk = Tkq +
µ
Nk = λk Tk .
utenti nelle classi inferiori che quindi possono essere ignorati. Sia T1,2 il valore
atteso del tempo di permanenza nel sistema per gli utenti che arrivano e che
appartengono alle due classi che stiamo considerando; la probabilità che essi
appartengano alla prima classe è p1 = λ1 /(λ1 + λ2 ), mentre la probabilità che
appartengano alla seconda classe è p2 = λ2 /(λ1 + λ2 ). Si ha quindi
T1,2 = p1 T1 + p2 T2 . (1.7.2)
Ora, poché i valori attesi dei tempi sono uguali per ogni disciplina della coda,
il valore di T1,2 deve essere uguale al valore di T per un sistema M/M/s con
λ = λ1 + λ2 e quindi si può calcolare facilmente. Noti T1,2 e T1 , si ricava T2 dalla
(1.7.2). Analogamente, si itera il procedimento alle prime tre classi: si indica
con T1,3 il valore atteso del tempo di permanenza del sistema per gli utenti delle
prime tre classi di priorità; la probabilità che essi appartengano rispettivamente
alla prima, alla seconda e alla terza classe è p1 = λ1 /(λ1 + λ2 + λ3 ), p2 =
λ2 /(λ1 + λ2 + λ3 ) e p3 = λ3 /(λ1 + λ2 + λ3 ), da cui
T1,3 = p1 T1 + p2 T2 + p3 T3 . (1.7.3)
Inoltre T1,3 deve essere uguale al valore di T per un sistema M/M/s con λ =
λ1 + λ2 + λ3 e quindi si ricava facilmente il suo valore. Noti T1 , T2 e T1,3 dalla
(1.7.3) si ricava T3 . Iterando il procedimento si ottengono i valori di Tk , per
k = 1, 2, . . . , nc.
In entrambi i casi (singolo e multiservente) una volta determinata T k , per ogni
k = 1, , . . . nc si ricavano.
Nk = λk Tk
1
Tkq = Tk −
µ
Nkq = λk Tkq .
RETI DI CODE 87
1.8.1 Generalità
La trattazione della teoria delle code effettuata fino ad ora ha sempre considerato
singoli sistemi a coda. Tuttavia, molto spesso i sistemi reali si possono presentare
sotto forma di più sistemi a coda connessi fra di loro e si parla quindi di reti di
code.
Le reti di code cono state utilizzate con successo nella modellizzazione di molti
sistemi reali: reti di telecomunicazioni, sistemi di calcolo, sistemi manufatturieri
e molti altri.
Una rete di code può essere descritta come un grafo orientato composto da un
certo numero di nodi (m) ciascuno dei quali rappresenta un sistema a coda e
gli archi rappresentano le rotte seguite dagli utenti da un sistema all’altro. In
generale, si può pensare che ad una rete di code arrivino utenti dall’esterno in
ciascun nodo della rete, cosı̀ come da ciascun nodo un utente può lasciare la rete.
Ovvero, un utente entra nella rete in un certo nodo, attraversa alcuni nodi della
rete e poi presso un nodo lascia la rete. Può anche accadere che gli utenti possano
ritornare presso nodi già visitati.
È facile immaginare che lo studio di una rete è in generale è molto più complicato
dello studio di un singolo sistema a coda perché ovviamente si deve tenere conto
di ogni sistema a coda componente la rete per analizzare il flusso totale degli
utenti.
Preliminare allo studio delle reti di code c’è l’analisi del processo delle partenze
(uscite) dal sistema degli utenti che hanno usufruito del servizio. È molto impor-
tante conoscere le caratteristiche di questo processo per studiare le reti di code
in quanto il processo delle partenze da un sistema coincide con il processo degli
Teorema di arrivi nel sistema successivo. Riportiamo un risultato che vale per sistemi M/M/s
Burke noto come Teorema di Burke.
λ n −1
λ n
n−1 n n+1
µ n
µ n +1
t 1 t 2
considerare le seguenti equazioni di bilancio del flusso tra due stati adiacenti
(dette equazioni di bilancio dettagliato). Si considerino i due tagli t1 e t2 in
Figura 1.8.3. Relativamente al flusso che attraversa il taglio t1 si ha
λn pn = µn+1 pn+1 .
La più semplice rete di code che si può costruire consiste nell’avere un numero
fissato (m) di sistemi a coda in serie, in cui non ci siano limiti sulla capacità della
coda di ogni singolo sistema componente la rete.
Questa situazione si verifica nella pratica, ad esempio, nei sistemi manufatturi-
eri (linee di assemblaggio in cui i prodotti devono passare attraverso una serie
di stazioni di lavoro); nei sistemi ospedalieri dove un paziente può essere sotto-
posto, in sequenza, ad un certo numero di accertamenti; nelle procedure di tipo
amministrativo che prevedono più fasi successive (registrazione, pagamento, ri-
tiro documenti, ...). Assumiamo che al primo sistema arrivino utenti secondo un
processo di Poisson di parametro λ e che in ciascun sistema componente ci siano
si serventi, i = 1, . . . , m, ciascuno operante con tempi di servizio distribuiti espo-
nenzialmente con parametro µi con λ < si µi per ogni i = 1, . . . , m. Si assume
RETI DI CODE 91
inoltre che tali tempi di servizio siano indipendenti. In condizioni stazionarie, per
il Teorema di Burke, ciascuno dei sistemi ha arrivi poissoniani con parametro λ
e quindi i sistemi possono essere analizzati come tanti sistemi M/M/si isolati. Il
caso più semplice corrisponde ad avere due sistemi in serie (sistema tandem) con
singolo servente. In questo caso è molto semplice dimostrare che la probabilità
congiunta che n1 utenti sono nel primo sistema e n2 utenti nel secondo sistema è
data dal prodotto delle singole probabilità, ovvero
P (n) = P (n1 , n2 , . . . , nm ) = pn1 pn2 · · · pnm = ρn1 1 (1−ρ1 )ρn2 2 (1−ρ2 ) · · · ρnmm (1−ρm ),
Esempio 1.8.1 Supponiamo di avere un sistema formato da due stazioni di lavoro monoserventi
in serie: la prima è una stazione di lavorazione, la seconda una stazione di collaudo. I pezzi
arrivano alla prima stazione secondo un processo di Poisson di parametro λ = 10. I tempi di
servizio dei serventi sono distribuiti esponenzialmente con µ1 = 12 e µ2 = 15.
Per quanto esposto, gli arrivi alla seconda stazione sono poissoniani di parametro λ = 10 e
l’analisi può essere condotta studiando singolarmente i due sistemi M/M/1. Poiché risulta
5 2
ρ1 = <1 ρ2 = <1
6 3
esiste una distribuzione stazionaria della rete. Analizzando i due sistemi singolarmente si ha
1 1 1 1
T1 = = ora, T2 = = ora
µ1 − λ 2 µ2 − λ 5
e
N1 = λT1 = 5 pezzi, N2 = λT2 = 2 pezzi.
Per quanto riguarda la rete si ha N = N1 + N2 = 7 pezzi e T = T1 + T2 = 7/10 ora, ovvero 42
minuti.
RETI DI CODE 93
Una tipologia di reti di code molto studiate e che continua a prevedere l’utilizzo
del modello M/M/s sono le cosiddette reti di Jackson aperte. A differenza dei
sistemi a coda in serie, gli utenti visitano i nodi in un ordine qualsiasi e in ogni Rete di
nodo ci possono essere utenti che arrivano sia dall’esterno sia da altri nodi. For- Jackson
malmente si ha la seguente definizione.
Definizione 1.8.2 Una rete di code aperta si dice rete di Jackson aperta se
È chiaro che la frequenza media effettiva degli arrivi degli utenti presso un nodo
si ottiene sommando gli arrivi dall’esterno del sistema (che sono poissoniani di
parametro γi ) e gli arrivi dai nodi interni alle rete (che non sono necessariamente
poissoniani). Ovvero, se indichiamo con λj la frequenza media effettiva degli
arrivi al nodo j si ha che essa è data da
94 TEORIA DELLE CODE
m
X
λj = γj + λi pij j = 1, . . . , m. (1.8.2)
i=1
Questo perché λi pij rappresenta il contributo agli arrivi nel nodo j da parte del
nodo i. Poiché le γi sono assegnate, come anche le pij , la (1.8.2) rappresenta
un sistema lineare di m equazioni in m incognite (le λj ) che quindi ammette
soluzione (unica) se la matrice dei coefficienti è non singolare. Definendo i vettori
Λ = (λ1 , . . . , λm )T e Γ = (γ1 , . . . , γm )T , la (1.8.2) può essere scritta in forma
vettoriale
Λ = Γ + P T Λ,
ovvero, nell’ipotesi che la matrice (I − P T ) sia invertibile, Λ = (I − P T )−1 Γ, dove
P è la matrice di routing e I è l’identità m × m.
Si osservi che l’espressione (1.8.2) per la determinazione della frequenza effettiva
vale per una generica rete di code aperta, non solamente per reti di Jackson.
Anche per le reti di Jackson aperte è stato dimostrato che, analogamente al caso
delle reti in serie, la probabilità congiunta dello stato n è data dalla produttoria
delle probabilità di stato dei singoli sistemi (probabilità marginali). Questo si-
gnifica che si continua ad avere la soluzione in forma prodotto anche per reti che
non sono feedforward come invece era richiesto per l’applicazione del Teorema
di Burke. Riportiamo ora in dettaglio questo risultato che va sotto il nome di
Teorema di Jackson.
Caso monoserevente
Supporremo inizialmente che i singoli sistemi a coda componenti la rete siano
monoserventi (si = 1, i = 1, . . . , m) e che il fattore di utilizzazione del servente
Teorema di sia dato da ρj = λj /µj dove λj è la soluzione del sistema (1.8.2), supponendo che
Jackson ρj < 1, j = 1, . . . , m.
dove
n
pnj = ρj j (1 − ρj ).
RETI DI CODE 95
1
P (0, . . . , 0) = ∞ ∞ ∞ Y
m
X X X nj
··· ρj
n1 =0 n2 =0 nm =0 j=1
1
= ∞ ∞ ∞
X X X
ρn1 1 ρn2 2 · · · ρnmm
n1 =0 n2 =0 nm =0
1
=
1 1 1
···
1 − ρ1 1 − ρ2 1 − ρm
= (1 − ρ1 )(1 − ρ2 ) · · · (1 − ρm ).
96 TEORIA DELLE CODE
Esempio 1.8.3 Si consideri una semplice rete di code formata da due nodi: il primo nodo è
una stazione di lavorazione, il secondo è una stazione di ispezione–collaudo. I pezzi arrivano
dall’esterno alla stazione 1 secondo un processo di Poisson con media 10 pezzi l’ora e succes-
sivamente alla lavorazione nella stazione 1 procedono nella stazione 2 per il controllo. Dalla
stazione 2 si ha che il 10% dei pezzi collaudati risultano difettosi e tornano alla stazione 1 per
essere lavorati di nuovo. Le due stazioni sono monoserventi con tempi di servizio distributi espo-
nenzialmente rispettivamente con media 12 pezzi l’ora e 15 pezzi l’ora. Determinare il numero
medio di utenti presenti nella rete e il tempo medio di permanenza.
7 Nell’ambitodei sistemi manufatturieri i nodi di una rete di code vengono, di solito chiamati “stazioni”
e T viene chiamato “throughput time”.
98 TEORIA DELLE CODE
Esercizio 1.8.4 Si consideri una rete di Jackson aperta composta da 3 stazioni. Alla stazione 1
arrivano utenti dall’esterno della rete con frequenza media di arrivo pari a 1 utente l’ora (arrivi
poissoniani). Dalla stazione 1 gli utenti con probabilità 1/3 si recano alla stazione 2 e con
probabilità 2/3 raggiungono la stazione 3. Dalla stazione 2 gli utenti tornano all’ingresso della
stessa stazione 2 con probabilità 1/2 oppure escono all’esterno della rete. Dalla stazione 3 gli
utenti escono all’esterno dalla rete oppure con probabilità 1/3 tornano alla stazione 1. Le stazioni
2 e 3 sono identiche e sono monoserventi con tempi di servizio distribuiti esponenzialmente con
µ2 = µ3 = 3/2 utenti l’ora. La stazione 1 è monoservente con tempi di servizio distribuiti
esponenzialmente con µ1 = 2 utenti l’ora. Verificare se esiste la distribuzione stazionaria e in
caso affermativo calcolare il numero medio di utenti presenti nella rete e il tempo medio di
permanenza.
Caso multiservente
Il Teorema di Jackson enunciato per reti di code costituite da sistemi con singolo
servente si estende anche al caso in cui ogni nodo della rete può avere più di un
servente. Supponiamo, quindi, che sj ≥ 1 sia il numero dei serventi per ciascun
nodo j = 1, . . . , m, ed inoltre assumiamo che ρj = λj /(sj µj ) < 1. Allora vale il
seguente risultato.
dove à !nj
1 λj
p0j , per nj < sj
n ! µ
j j
pnj = Ã !nj
1 λj
p0j , per nj ≥ sj
nj −sj
s!s µj
Questo teorema afferma che, in maniera del tutto analoga al caso monoservente,
la probabilità congiunta si fattorizza nelle probabilità di avere nj utenti nel nodo
j−esimo considerato singolarmente come sistema M/M/sj con frequenza media
degli arrivi pari alla frequenza effettiva λj e tempo medio di servizio µj e questo
indipendentemente dagli altri nodi della rete.
Come nel caso monoservente, le misure di prestazione di interesse possono essere
calcolate aggregando i valori ottenuti nei singoli nodi.
Esempio 1.8.5 [Gross, Harris, 1998] Si consideri un call center al quale arrivano chiamate
secondo la distribuzione di Poisson con media 35 l’ora. Alle chiamate che arrivano il gestore
fornisce due opzioni: digitare il tasto 1 per il servizio reclami, oppure digitare 2 per il servizio
informazioni. Si stima che il tempo di ascolto del messsaggio e della pressione del tasto sia
esponenziale con media 30 secondi. Le chiamate che trovassero occupato vengono poste in
attesa con l’assunzione che nessun utente si scoraggia per l’attesa e quindi aspetta comunque
di usufruire del servizio. Il 55% delle chiamate chiedono di accedere al servizio reclami e le
rimanenti chiedono di accedere al servizio informazioni. Il nodo del processo dei reclami ha 3
serventi (operanti in parallelo) che operano con tempi di servizio distribuiti esponenzialmente
con media 6 minuti. Il nodo del processo delle informazioni ha 7 serventi (operanti in parallelo)
che operano con tempi di servizio distribuiti esponenzialmente con media 20 minuti. I buffer
di attesa si assumono illimitati. Inoltre circa il 2% dei clienti che hanno usufruito del servizio
reclami decidono di usufruire anche del servizio informazioni e l’1% dei clienti che hanno usufruito
del servizio informazioni chiedono anche di usufruire del servizio reclami. Si vuole determinare
la lunghezza media della coda in ciascun nodo e il tempo medio totale che un cliente passa nella
in linea con il call center.
Esercizio 1.8.6 Si consideri una rete di Jackson aperta composta da 4 stazioni. Le stazioni 1
e 2 sono monoservetnti. Nella stazione 3 e 4 ci sono 2 serventi. Alla stazione 1 e alla stazione 2
arrivano utenti dall’esterno della rete con frequenza media di arrivo pari a 1 utente l’ora (arrivi
poissoniani). Dalla stazione 1 gli utenti si recano alla stazione 3. Dalla stazione 2 gli utenti si
recano alla stazione 3 con probabilità 1/3, oppure si recano all’ingresso della stazione 4. Dalla
stazione 3 gli utenti escono all’esterno della rete oppure tornano all’ingresso della stazione 1 con
probabilità 1/2. Dalla stazione 4 gli utenti escono dalla rete. I tempi di servizio nelle uattro
stazioni sone distribuiti esponenzialmente con µ1 = 7, µ2 = 2, µ3 = 4 e µ4 = 1 utenti l’ora.
Verificare se esiste la distribuzione stazionaria e in caso affermativo calcolare il numero medio
di utenti presenti nella rete e il tempo medio di permanenza.
RETI DI CODE 101
Si tratta di reti di code in cui non sono consentiti né arrivi, né partenze di
utenti dalla rete e quindi il numero totale di utenti presenti nella rete risulta
fissato. Quindi in una rete chiusa il valore di N non è più un valore medio da
determinare, ma è un dato del problema.
Anche se il modello che si utilizza non prevede arrivi o partenze dalla rete, da
un punto di vista pratico esso rappresenta bene quei casi in cui ogniqualvolta ci
sia un utente che esce dalla rete, esso viene immediatamente rimpiazzato da un
nuovo utente.
Questa tipologia di rete di code è stata introdotta da Gordon e Newell nel 1967
e ha applicazioni significative nei sistemi di calcolo time-sharing e multi-utente.
Ovviamente, in una rete chiusa il numero degli stati possibili è finito ed è uguale
al numero dei modi che si hanno di disporre N utenti (indistinguibili tra di loro)
negli m nodi, considerando che ogni nodo può avere al più N + 1 stati possibili
(includendo lo stato 0). Tale numero è dato da
µ ¶
m+N −1
.
m−1
Inoltre, poichè in una rete chiusa il numero degli utenti è limitato, una rete chiusa
ammette sempre una distribuzione stazionaria.
Nell’analizzare questo tipo di reti di code, c’è un’importante differenza rispetto
alle reti aperte, che sta nella determinazione della frequenza media effettiva di
arrivo ad ogni singolo nodo. Infatti, poiché risulta γj = 0 per j = 1, . . . , m, il
sistema di equazioni (1.8.2) diventa
m
X
λj = λi pij , j = 1, . . . , m (1.8.8)
i=1
(I − P T )Λ = 0,
Teorema 1.8.4 Sia data una rete di Jackson chiusa composta da m nodi a
singolo sevente. Allora la distribuzione congiunta è data da
1
P (n) = P (n1 , . . . , nm ) = ρn1 ρn2 · · · ρnmm ,
G(N ) 1 2
con n1 + n2 + · · · + nm = N e dove
X
G(N ) = ρn1 1 ρn2 2 · · · ρnmm .
n1 ,n2 ,...,nm
n1 +n2 +···nm =N
dove
nj
Xj
n !,
per nj < sj
j
p̂nj = n
Xj j
, per nj ≥ sj ,
n −sj
sj !sj j
dove X
G(N ) = p̂n1 p̂n2 · · · p̂nm .
n1 ,n2 ,...,nm
n1 +n2 +···nm =N
Esiste un’ampia letteratura e numerosi testi specifici dedicati alla Teoria delle
code e alle sue applicazioni. Fra questi citiamo il testo classico in due volumi
[Kleinrock, 1975], [Kleinrock, 1976] che riporta una trattazione sia elementare
sia avanzata della teoria delle code. Un altro testo specifico sulla Teoria delle
code è [Cooper, 1981] disponibile in rete all’indirizzo http://www.cse.fau.edu/
e bob/publications/IntroToQueueingTheory Cooper.pdf.
La Teoria delle code è sviluppata in modo sintetico anche in numerosi testi di
Ricerca Operativa, fra i quali citiamo [Hillier, Lieberman, 2001] che dedica i
capitoli 17 e 18 alla Teoria delle code e alle sue applicazioni.
Esiste, inoltre un sito interamente dedicato alla Teoria delle code che riporta nu-
merosi link molto utili: http://web2.uwindsor.ca/math/hlynka/queue.html.
Per i richiami di Probabilità e le proprietà sulle distribuzioni di probabilità si può
fare riferimento ad un qualsiasi testo di Calcolo delle Probabilità.
λk = αk λ k ≥ 0, 0≤α<1
µk = µ k≥1
Esercizio 1.10.3 Una banca ha 5 cassieri e ciascuno di essi ha una coda di clienti
davanti a sé. I clienti che arrivano scelgono una coda a caso e aspettano di essere
serviti. Gli arrivi dei clienti nella banca sono poissoniani con frequenza di 40 l’ora
e i tempi di servizio di ciascun cassiere sono esponenziali con media di 5 minuti.
La banca sta considerando la possibilità di introdurre un sistema a coda unica,
in cui ogni cliente viene servito dal primo cassiere che si libera. Determinare qual
è l’effetto di questo cambiamento sul tempo medio di attesa in coda. Inoltre, in
riferimento al sistema a coda unica, determinare:
a) i valori delle misure di prestazione, ovvero il numero medio di utenti presenti
nella banca, il numero medio di utenti in attesa in coda, il tempo medio di
permanenza nella banca e il tempo medio attesa in coda;
b) la probabilità che il tempo medio di attesa in coda sia non nullo;
c) la probabilità che nella banca vi siano più di 7 clienti.
In media, ogni giorno arrivano 2.5 riordini, 4 ordini normali e 5.5 ordini secondari.
Descrivere un sistema di code che permette di costruire un modello di questo
reparto spedizioni e determinare, per ciascun tipo di ordine
b) il tempo medio di attesa che passa tra la ricezione dell’ordine da parte del
reparto e l’inizio della sua elaborazione;
d) il numero medio di ordini che sono presso tale reparto spedizioni in attesa
di essere elaborati.
Esercizio 1.10.6 Una società costruisce immobili per l’edilizia residenziale. Gli
acquirenti stipulano il contratto di acquisto e poi aspettano che l’immobile che
hanno acquistato sia realizzato prima di poterne entrare effettivamente in pos-
sesso. Vengono stipulati, in media, 9 contratti l’anno secondo una distribuzione
di Poisson.
Tale società adotta la strategia di iniziare a costruire una nuova casa non appena
è stata completata la costruzione della casa precedente. Inoltre essa dispone di un
numero di operai tale da permettere la costruzione, in media, di 12 case l’anno,
ESERCIZI DI RIEPILOGO 107
Calcolare, infine, come varia la percentuale di utilizzazione del servente dal primo
caso in cui non ci sono limiti di capacità al secondo caso in cui tale limitazione è
presente.
e) Calcolare il tempo medio che una persona passa in attesa prima di essere
servita.
Supponiamo, ora, che un auto che arriva e che trova tutte le quattro postazioni
occupate, deve attendere il proprio turno in un parcheggio che ha una capienza
massima di tre auto; se anche il parcheggio risultasse pieno, allora l’auto rinuncia
definitivamente ad entrare nella stazione di servizio.
Sulla base di quest’ultimo sistema, descritto al punto e), la stazione sta stu-
diando alcune variazioni operative. La prima consiste nell’intervenire solamente
sul parcheggio, eliminandolo e quindi non permettendo piú l’attesa delle auto che
trovano le quattro postazioni occupate.
pn = (1 − ρ)ρn
λ
N =
µ−λ
λ2
Nq =
µ(µ − λ)
1
T =
µ−λ
λ
Tq =
µ(µ − λ)
111
112 FORMULARIO – SISTEMI A CODA
1
p0 = s−1 µ ¶n µ ¶s
X 1 λ 1 λ 1
+
n=0
n! µ s! µ 1−ρ
µ ¶
1 λ n
n! µ p0 , per n = 1, 2, . . . , s − 1
pn = µ ¶n
1 λ
p0 , per n = s, s + 1, . . .
n−s
s!s µ
µ ¶s
1 λ ρ
Nq = p0
s! µ (1 − ρ)2
" Ã !#
w −µt 1 + (λ/µ)s p0 1 − e−µt(s−1−λ/µ)
P (t > t) = e
s!(1 − ρ) s − 1 − λ/µ
P (tq > t) = (1 − P (tq = 0)) e−s(µ−λ)t
µ ¶
q 1 λ s 1
P (t > 0) = p0
s! µ 1 − ρ
(ρ 6= 1)
1−ρ
p0 =
1 − ρK+1
µ ¶
n n 1−ρ
pn = ρ p0 = ρ per n = 0, 1, . . . , K.
1 − ρK+1
ρ (K + 1)ρK+1
N = −
1−ρ 1 − ρK+1
Nq = N − (1 − p0 )
λ̄ = λ(1 − pK ) = µ(1 − p0 )
MODELLI BASATI SU PROCESSI DI NASCITA E MORTE 113
1
p0 = s−1 µ ¶n µ ¶ K µ ¶n−s
X 1 λ 1 λ sX λ
+
n=0
n! µ s! µ n=s sµ
µ ¶
1 λ n
p0 , per n = 1, 2, . . . , s − 1
n! µ
µ ¶n
pn = 1 λ
p0 , per n = s, s + 1, . . . , K
s!sn−s µ
0 per n > K
µ ¶s h i
ρ λ
Nq = p0 1 − ρK−s − (K − s)ρK−s (1 − ρ)
s!(1 − ρ)2 µ
s−1
à s−1
!
X X
q
N = npn + N + s 1 − pn
n=0 n=0
1
p0 = U µ ¶n
X U! λ
n=0
(U − n)! µ
µ ¶n
U! λ
pn = p0
(U − n)! µ
µ
N = U− (1 − p0 )
λ
N U 1
T = = −
µ(1 − p0 ) µ(1 − p0 ) λ
µ+λ
Nq = U− (1 − p0 )
λ
U 1 1
Tq = − −
µ(1 − p0 ) λ µ
114 FORMULARIO – SISTEMI A CODA
1
p0 = s−1 µ ¶n U µ ¶n
X U! λ X U! λ
+ n−s
n=0
(U − n)!n! µ n=s (U − n)!s!s µ
µ ¶n
U! λ
p0 , per n = 1, 2, . . . , s − 1
(U − n)!n! µ
µ ¶n
pn = U! λ
p0 , per n = s, s + 1, . . . , U
(U − n)!s!sn−s µ
0 per n > U
U
X
Nq = (n − s)pn
n=s
s−1
à s−1
!
X X
q
N = npn + N + s 1 − pn
n=0 n=0
µn = nc µ1 , per n = 1, 2, . . .
1
p0 = ∞ µ ¶n
X 1 λ
n=0
(n!)c µ1
µ ¶n
1 λ
pn = p0
(n!)c µ1
1
λn = λ0 per n = 0, 1, . . .
(n + 1)b
1
p0 =
X 1 µ λ0 ¶n
∞
n=0
(n!)b µ
µ ¶n
1 λ0
pn = p0
(n!)b µ
MODELLI BASATI SU PROCESSI DI NASCITA E MORTE 115
λ0
λn = , µn = na µ1
(n + 1)b
1
p0 = ∞ µ ¶n
X 1 λ0
(n!)a+b µ1
n=0
µ ¶n
1 λ0
pn = p0
(n!)a+b µ1
λ0 per n ≤ s − 1
λn = λ0
³ ´ per n ≥ s
n+1 b
s
nµ1 per n≤s
µn = µ ¶a
n
sµ1 per n>s
s
1 λ
−µ
p0 = ∞ µ ¶n = e
X 1 λ
n=0
n! µ
µ ¶n
1 λ λ
−µ
pn = e
n! µ
λ
N =
µ
1
T =
µ
Nq = 0
Tq = 0
116 FORMULARIO – SISTEMI A CODA
1
σ2 +
µ2
Tq = λ
2(1 − ρ)
λ σ 2 + ρ2
2
Nq =
2(1 − ρ)
λ2 σ 2 + ρ2
N = +ρ
2(1 − ρ)
λσ 2 + λ/µ2 1
T = +
2(1 − ρ) µ
1 λ
Tq =
2 µ(µ − λ)
1 ρ2
Nq =
2 1−ρ
ρ2
N = +ρ
2(1 − ρ)
λ/µ2 1
T = + .
2(1 − ρ) µ
1+k λ
Tq =
2k µ(µ − λ)
1+k λ2
Nq =
2k µ(µ − λ)
1+k λ 1
T = +
2k µ(µ − λ) µ
1+k λ2 λ
N = + .
2k µ(µ − λ) µ
MODELLI CON DISCIPLINA DELLA CODA BASATA SU CRITERI DI PRIORITÀ 117
1
Tkq = , k = 1, . . . , nc
abk−1 bk
X 1 µ λ ¶j
sµ − λ s−1
a = s! µ ¶s + sµ
λ j! µ
j=0
µ
k
X
λi
i=1
b0 = 1, bk = 1 −
sµ
1
µ
Tk = , k = 1, . . . , nc
bk−1 bk
2
Simulazione
• rappresentare sistemi reali anche complessi tenendo conto anche delle sor-
genti di incertezza;
119
120 SIMULAZIONE
D’altra parte deve essere sempre tenuto sempre ben presente il fatto che
• Variabili di stato
Innanzitutto ricordiamo che un sistema è descritto in ogni istante di tempo
da un insieme di variabili che prendono nome di variabili di stato. Quindi,
ad esempio, in riferimento ad un sistema a coda, è una variabile di stato
il numero degli utenti presenti nel sistema in un certo istante di tempo.
Ricordiamo, inoltre, che esistono sistemi discreti in cui le variabili cambiano
istantaneamente in corrispondenza di precisi istanti di tempo che sono finiti
oppure appartenenti ad un insieme numerabile e sistemi continui in cui le
variabili variano con continuità rispetto al tempo. Si osservi fin d’ora che la
scelta di un modello continuo o discreto da utilizzare non è necessariamente
obbligata dalla tipologia del sistema; si può infatti decidere, ad esempio, di
costruire un modello discreto per un sistema continuo, a seconda dello studio
che si vuole effettuare. Un esempio tipico è il caso in cui nel rappresentare
una linea ferroviaria, la posizione del treno può essere descritta da una
variabile reale che fornisce la distanza dalla stazione di origine, oppure da
variabili binarie che descrivono lo stato libero–occupato di ciascuna delle
sezioni di blocco in cui è divisa la linea.
GENERALITÀ SUI MODELLI DI SIMULAZIONE 121
• Eventi
Si definisce evento un qualsiasi accadimento istantaneo che fa cambiare il
valore di almeno una delle variabili di stato. L’arrivo di un utente ad un
sistema a coda è un evento, cosı̀ come il completamento di un servizio.
Esistono eventi esterni al sistema (eventi esogeni) ed eventi interni (eventi
endogeni). Ad esempio, l’inizio del servizio ad un utente che è in coda in
un sistema a coda è un evento endogeno, perché interno al sistema; l’arrivo
di un utente ad un sistema a coda è un evento esogeno.
• Entità e attributi
Le entità sono singoli elementi del sistema che devono essere definiti. Un
esempio di entità è un utente presso un sistema a coda, oppure può essere
un servente. Nel primo caso l’entità fluisce all’interno del sistema e si parla
di entità dinamica, nel secondo caso si parla di entità statica.
Le entità possono essere caratterizzate da attributi che forniscono un valore
di un dato assegnato all’entità stessa. Ad esempio, in un sistema a coda
monoservente dove le entità sono il servente e gli utenti, un attributo di
un’entità “utente” potrebbe essere il suo tempo di arrivo al sistema, mentre
il servente è caratterizzato dall’attributo “status” che può assumere valore
di “libero” o “occupato”. È chiaro che alcuni attributi possono essere di
interesse in alcuni casi e non in altri.
Le entità possono essere raggruppate in classi che sono insiemi di entità dello
stesso tipo, ovvero si possono raggruppare le entità in base ad attributi.
Se, ad esempio, consideriamo persone di sesso maschile e femminile come
utenti di un sistema a coda, essendo le entità le persone, esse possono essere
raggruppate in dua classi in base all’attributo “sesso”.
• Risorse
Le risorse sono elementi del sistema che forniscono un servizio alle entità.
Un’entità può richiedere una o più unità di risorsa e se questa non è disponi-
bile l’entità dovrà mettersi, ad esempio, in una coda in attesa che si renda
disponibile, oppure intraprendere un’altra azione. Se invece la risorsa è
disponibile, essa viene “catturata” dall’entità, “trattenuta” per il tempo
necessario e poi “rilasciata”. Un esempio di risorsa potrebbe essere data
da un operaio che sovrintende il funzionamento di una macchina che non
può funzionare senza l’operaio stesso; quando è richiesto l’utilizzo di questa
macchina, se la risora “operaio” è disponibile allora l’esecuzione del lavoro
è effettuata altrimenti si attende che ci sia risorsa (operaio) disponibile.
L’operaio verrà “trattenuto” per la durata dell’esecuzione del lavoro e poi
“rilasciato”. Si osservi che, in generale, un elemento del modello potrebbe
essere considerato parimenti un’entità o una risorsa. Questo, ovviamente,
dipende da come si è scelto di costruire un modello.
122 SIMULAZIONE
• Attività e ritardi
Un’attività è un’operazione la cui durata è nota a priori all’inizio dell’ese-
cuzione dell’attività stessa. Tale durata può essere una costante, un valore
aleatorio generato da una distribuzione di probabilità, oppure data in input
o calcolata in base ad altri eventi che accadono nel sistema. Un esempio è
dato dal tempo di servizio in un sistema a coda.
Un ritardo è un periodo di tempo di durata indefinita che è determinata
dalle condizioni stesse del sistema. Il tempo che un’entità trascorre presso
una coda prima che si liberi una risorsa della quale necessita è un ritardo.
• modelli discreti, in cui il valore delle variabili cambia in ben definiti istanti
di tempo.
Un’altra distinzione è tra:
• modelli statici, che rappresentano un sistema in un particolare istante di
tempo;
1.9 1.7
1.3 1.8
1.1 1.5
1.0 0.9
.. ..
. .
124 SIMULAZIONE
Tempo t Eventi
Limitando questa semplice simulazione al tempo t = 5.4 (in modo che due utenti
sono entrati e hanno completato il servizio), possiamo calcolare, ad esempio, il
tempo medio di permanenza nel sistema: il primo utente rimane nel sistema
1.7 minuti, il secondo 2.2 minuti e quindi il valore medio è 1.95. Questa stima,
ovviamente non ha alcun senso perché ottenuta dalla particolare sequenza di
numeri casuali delle due liste. Quindi, se l’esempio da un lato vuole mettere
evidenza il meccanismo di una simulazione ad eventi discreti, dall’altro mette fin
d’ora in evidenza un errore che si potrebbe commettere nel reputare affidabili
i risultati di una sola esecuzione e che ha avuto una durata arbitraria. D’altra
parte c’è anche da tener presente che se siamo interessati a valutare misure di
prestazioni del sistema a regime, ovvero quando sono state raggiunte condizioni di
stazionarietà, sarà necessario non prendere in considerazione il sistema durante il
periodo iniziale di transitorio. Queste problematiche rappresentano un elemento
chiave di ogni simulazione e saranno considerate in dettaglio nel seguito.
In questo paragrafo riportiamo uno schema che descrive la successione delle varie
fasi che caratterizzano uno studio basato sulla simulazione.
La simulazione è uno strumento molto flessibile: può essere utilizzata per studiare
la maggior parte dei sistemi esistenti. È impossibile enumerare tutte le aree
128 SIMULAZIONE
In questo paragrafo verranno illustrati alcuni elementi di Statistica che sono essen-
ziali per procedere alla costruzione di un modello di simulazione e per effettuare
correttamente una simulazione. Si tratta essenzialmente della stima dei parame-
tri e dei test statistici, elementi chiave per l’analisi dell’input e dell’output di una
simulazione.
Infatti, per effettuare una simulazione di un sistema che presenta elementi stoca-
stici è necessario specificare le distribuzioni di probabilità che regolano i processi
che caratterizzano il sistema stesso. Se è possibile raccogliere dati reali (osser-
vazioni) sulle variabili aleatorie di interesse, essi possono essere utilizzati per
determinare queste distribuzioni facendo uso di tecniche di inferenza statistica
(analisi dell’input). Una volta stabilite tali distribuzioni, la simulazione procede
generando valori casuali da queste distribuzioni, ovvero, durante ogni esecuzione,
la simulazione genera osservazioni casuali di variabili aleatorie distribuite secondo
particolari distribuzioni di probabilità. Oltre che per progettare una simulazione,
è necessario l’uso di tecniche statistiche anche per interpretare i risultati ottenuti
da una simulazione (analisi dell’output).
La trattazione degli argomenti riportati in questo paragrafo sarà sintetica e consi-
dera esclusivamente quegli elementi che risulteranno utili all’interno dello studio
della simulazione. Per ogni trattamento più esteso e approfondito si rimanda ai
testi specifici come, ad esempio [Ross, 2003b].
X̄n è una variabile aleatoria funzione delle Xi e si verifica facilmente che risulta
σ2
E(X̄n ) = µ e V ar(X̄n ) = .
n
Varianza La varianza campionaria è data da
campiona- 1 X n
¡ ¢2
ria s2n = Xi − X̄n
n − 1 i=1
Questo risultato si ricava immediatamente dal Teorema del Limite Centrale, os-
servando che la (2.2.1) può essere interpretata nel seguente modo: per n sufficien-
temente grande, la variabile aleatoria Zn è distribuita approssimativamente come
una variabile Normale standard, indipendentemente dalla distribuzione delle Xi .
Ricordando che il valore atteso di X̄n è µ e che la sua deviazione standard è
√
pari a σ/ n, la Proposizione 2.2.1 afferma che se si normalizza X̄n sottraendo
la sua media e dividendo per la sua deviazione standard, si ottiene una variabile
aleatoria che è approssimativamente distribuita secondo una Normale standard
purché n sia sufficientemente grande.
La problematica che nasce nell’utilizzare questo risultato sta nel fatto che non è
noto quanto deve essere grande n affinché l’approssimazione sia buona; natural-
mente questo dipende dalla distribuzione in questione. Osservazioni sperimentali
hanno portato a formulare la regola empirica comunemente adottata secondo la
quale quando n > 30, si ha in genere una buona approssimazione, qualsiasi sia la
distribuzione della popolazione considerata.
X̄n − µ
σ (2.2.3)
√
n
è una variabile aleatoria distribuita secondo la distribuzione Normale standard.
132 SIMULAZIONE
Si osservi che avendo assunto che le Xi sono variabili aleatorie normali, il risultato
ora enunciato non vale più in senso approssimato, come nel caso della Propo-
sizionea 2.2.1, ma è un risultato esatto che vale per qualsiasi valore di n (non
necessariamente grande).
ii) X̄n è una variabile aleatoria normale con media µ e varianza σ 2 /n;
s2n
iii) (n − 1) è una variabile aleatoria distribuita secondo la distribuzione
σ2
Chi-quadro a n − 1 gradi di libertà (χ2n−1 ).
X̄n − µ
s (2.2.4)
√n
n
è una variabile aleatoria distribuita secondo la distribuzione t di Student con
n − 1 gradi di libertà (tn−1 ).
i) E(h) = θ
Metodi di stima
Esistono diversi metodi per stimare i parametri incogniti di una distribuzione.
Stimatore Riporteremo brevemente nel seguito lo stimatore di massima verosimiglianza
di massima (Maximum Likelihood Estimator – MLE) che è molto utilizzato e per il quale
verosimi- rimandiamo alla letteratura specifica per una trattazione completa. Riportiamo
glianza di seguito una breve descrizione.
Date n osservazioni X1 , . . . , Xn , assumiamo che esse siano ottenute da una distri-
buzione di probabilità continua avente densità fθ (x), dove θ è un parametro che
caratterizza la distribuzione. Nell’ipotesi che le osservazioni Xi sono indipendenti,
una misura della probabilità di aver ottenuto quelle osservazioni proprio da quella
distribuzione (se θ è il valore del parametro incognito) è data dalla funzione di
verosimiglianza
L(θ) = fθ (X1 )fθ (X2 ) · · · fθ (Xn ).
Nel caso di distribuzioni di probabilità discrete con funzione di probabilità data
da pθ (x), la funzione di verosimiglianza è definita da
L(θ) = pθ (X1 )pθ (X2 ) · · · pθ (Xn ).
Il metodo della massima verosimiglianza consiste nello scegliere come stimatore
del parametro incognito θ il valore θb che massimizza L(θ).
In generale, può non essere facile massimizzare la funzione di verosimiglianza e
naturalmente la difficoltà aumenta se la distribuzione ha più di un parametro
e quindi la funzione L sarà una funzione di più variabili. Nell’effettuare questa
operazione di massimizzazione invece di considerare la funzione L(θ) si può con-
siderare la funzione
`(θ) = ln L(θ)
ELEMENTI DI STATISTICA INFERENZIALE 135
dL(λ) ¡ ¢
= nλn−1 e−λnX̄n 1 − λX̄n = 0,
dλ
1 d2 L(λ̂)
da cui si ha λ̂ = . Poiché si ha < 0, λ̂ è un punto di massimo per la funzione L(λ).
X̄n dλ2
Il valore ottenuto per λ̂ non ci sorprende perché la media campionaria è uno stimatore corretto
della media della distribuzione che è 1/λ.
Allo stesso risultato si può arrivare considerando la funzione log-likelihood, ovvero
X
n
`(λ) = ln L(λ) = n ln λ − λ Xi .
i=1
Infatti si ha
n X
n
d`
= − Xi = 0
dλ λ
i=1
1 d2 `(λ̂) n
per λ̂ = ed inoltre =− < 0.
X̄n dλ2 λ̂2
Esempio 2.2.7 Date n osservazioni X1 , . . . , Xn dalla distribuzione geometrica, determinare
con il metodo della massima verosimiglianza il parametro p ∈ (0, 1) della distribuzione. La
distribuzione geometrica è una distribuzione di probabilità discreta caratterizzata da
n
pp (x) = p(1 − p)x se x = 1, 2, . . .
0 altrimenti.
La funzione di verosimiglianza è data da
Pn
Xi
L(p) = pp (X1 )pp (X2 ) · · · pp (Xn ) = p(1 − p)X1 p(1 − p)X2 · · · p(1 − p)Xn = pn (1 − p) i=1 .
Si ha
X
n
X
n
Xi
d`(p) n i=1
= − = 0.
dp p 1−p
136 SIMULAZIONE
P (g1 ≤ g ≤ g2 ) = 1 − α.
P (h1 ≤ θ ≤ h2 ) = 1 − α,
P (h1 ≤ θ ≤ h2 ) = 1 − α,
1 Sono ampiamente disponibili tabelle che, per una variabile Normale standard Z, riportano il valore di
Rz y2
P (Z ≤ z) = √1 e− 2 dy.
2π −∞
138 SIMULAZIONE
Quanto esposto fino ad ora assume che la varianza σ 2 sia nota. Se invece σ 2 non
Caso si conosce sono necessarie altre considerazioni. Infatti, anche se la varianza σ 2
varianza non è nota, considerando la varianza campionaria s2n , poiché si ha
non nota
lim s2 = σ2,
n→∞ n
Esempio 2.2.11 Siano dati i seguenti valori di dieci osservazioni 1.20, 1.50, 1.68, 1.89, 0.95,
1.49, 1.58, 1.55, 0.50, 1.09, da una distribuzione Normale a media e varianza non note. Si ricava
facilmente che X̄10 = 1.34 e s210 = 0.17. Volendo costruire un intervallo di confidenza al 90%
α
per la media si ha 1 − α = 0.90, ovvero 1 − = 0.95. Dalla tavola dei valori di P (Z ≤ z)
2
per Z variabile Normale standard si ricava che risulta P (Z ≤ c) = 0.95 per c = 1.65, ovvero
z1−α/2 = z0.95 = 1.65. Quindi gli estremi dell’intervallo richiesto sono dati da
r r
s2n s210 √
X̄n ± z1− α2 = X̄10 ± z0.95 = 1.34 ± 1.65 0.017.
n 10
Pertanto l’intervallo di confidenza richiesto è dato da [1.12 , 1.55].
2 Anche in questo caso sono disponibili tavole che riportano valori tabulati di tali punti critici
140 SIMULAZIONE
Esempio 2.2.12 Volendo determinare il t intervallo di confidenza nel caso delle osservazioni
dell’Esempio 2.2.11 è sufficiente ricavare dai valori tabulati il valore di t9,0.95 che è pari a 1.83.
Quindi l’intervallo di confidenza richiesto è dato da [1.10 , 1.58].
Nel cercare di costruire un legame tra dati osservati e ipotesi teoriche sulle carat-
teristiche dell’intera popolazione si deve, in genere, prendere una decisione per il
raggiungimento di tale conclusione generale e nasce il problema di esprimere un
giudizio di plausibilità di un’ipotesi che si è specificata per la popolazione. Per
verificare la coerenza tra osservazioni e ipotesi fatta si fa uso di test statistici
che prendono nome di test delle ipotesi. In sintesi, possiamo dire che tali test
devono confrontare i valori osservati e i corrispondenti valori teorici attesi con-
dizionatamente all’ipotesi fatta. Le differenze che vengono riscontrate possono
essere ovviamente ricondotte a due possibilità:
• l’ipotesi specificata è errata e quindi non ci si può aspettare che i due valori
siano “vicini”.
Rimandiamo alla letteratura specifica per una trattazione generale dei test d’ipo-
tesi; nel seguito faremo esclusivamente riferimento al problema di decidere se le
osservazioni sono un campione indipendente di una particolare distribuzione di
probabilità con funzione di distribuzione Fb . Ovvero, si vuole utilizzare un test
delle ipotesi per avvalorare o smentire un’ipotesi fatta sulla distribuzione di pro-
babilità che meglio rappresenta tali dati. Quindi, date le osservazioni X1 , . . . , Xn ,
142 SIMULAZIONE
Test Chi–quadro
Siano X1 , . . . , Xn variabili aleatorie indipendenti identicamente distribuite. Per
applicare il test si effettua il seguente procedimento: si suddivide il range della
distribuzione in k intervalli adiacenti
[a0 , a1 ) , [a1 , a2 ) , [a2 , a3 ) , ... [ak−1 , ak ) ,
dove può anche essere a0 = −∞ e/o ak = ∞. Si definisce ora Nj come il numero
delle Xi contenute nell’intervallo j-esimo, ovvero in [aj−1 , aj ) per j = 1, 2, . . . k.
P
Naturalmente risulta kj=1 Nj = n. Si calcola la proporzione pj che le Xi cadono
nell’intervallo j-esimo se le osservazioni fossero dalla distribuzione ipotizzata,
ovvero Z aj
fb(x)dx nel caso continuo
aj−1
pj = X
pb(xi ) nel caso discreto
aj−1 ≤xi <aj
dove fb(x) è la densità di probabilità della distribuzione ipotizzata nel caso con-
tinuo e pb(xi ) sono i valori della distribuzione di probabilità nel caso discreto. Si
definisce
Xk
(Nj − npj )2
χ2 = . (2.2.6)
j=1
npj
Poiché npj è il numero atteso che n Xi cadano nell’j-esimo intervallo se l’ipotesi
H0 fosse vera, ci si può aspettare che χ2 sia piccolo se la distribuzione ipotizzata
realizza un buon fitting delle X1 , . . . , Xn e quindi l’ipotesi H0 è scartata se χ2 è
troppo grande.
Per effettuare praticamente il test dobbiamo considerare il caso in cui tutti i
parametri della distribuzione sono noti e il caso in cui questo non avviene. Il test
Chi-quadro può essere effettuato in entrambi i casi.
Caso Nel primo caso, se α è il livello di significatività del test, si vuole trovare la
parametri cosiddetta “regione critica”, ovvero si vuole calcolare un valore z tale che
noti
PH0 (χ2 ≥ z) = α,
dove la notazione PH0 indica il condizionamento della probabilità al fatto che H0
sia vera. Il test dovrà rifiutare l’ipotesi nulla quando il valore osservato per χ2 è
ELEMENTI DI STATISTICA INFERENZIALE 143
χ2 > χ2k−1,1−α
dove rispetto alla (2.2.6), le pj sono state sostituite dalle p̃j che sono ottenute uti-
lizzando la distribuzione con i parametri stimati. In questo caso si può dimostrare
che, se l’ipotesi H0 è vera, allora χ2 per n → ∞ converge alla distribuzione Chi–
quadro con k − 1 − m gradi di libertà (si perdono tanti gradi di libertà quanti sono
i parametri). Il test con livello di significatività α diventa il seguente: si scarta
H0 se
χ2 > χ2k−1−m,1−α ,
dove χ2k−1−m,1−α è il punto critico 1 − α per la distribuzione Chi–quadro con
k − 1 − m gradi di libertà
L’aspetto più problematico nell’effettuare il test Chi–quadro è la scelta del nu-
mero e dell’ampiezza degli intervalli. È un problema difficile e non c’è una risposta
definitiva, ma solo delle linee guida da seguire per le quali si rimanda ai testi speci-
fici. Diciamo solo che è opportuno scegliere gli intervalli in modo tale che risulti
p1 = p2 = · · · = pk (equiprobabilità) e, in questo caso, basandosi su osservazioni
empiriche si è visto che il test Chi-quadro è valido se k ≥ 3 e npj ≥ 5 nel caso con-
tinuo; nel caso discreto è opportuno avere tutti i valori npj approssimativamente
uguali e pari ad almeno a 5.
Nonostante queste difficoltà il test Chi–quadro è molto utilizzato perché può
essere applicato ad ogni distribuzione ipotizzata, mentre altri test non hanno
questa flessibilità.
numero automobili: 0 1 2 3 4 5 6 7 8 9 10 11
frequenze: 12 10 19 17 10 8 7 5 5 3 3 1
Ovvero, in 12 casi è stato osservato il passaggio di 0 auto, in 10 casi è stato osservato il passaggio
di 1 auto, etc. Supponiamo di essere nella fase di analisi dell’input di una simulazione e di voler
quindi scegliere una distribuzione di input che meglio rappresenti questi dati. A tale scopo,
supponiamo di aver scelto come distribuzione teorica ipotizzata la distribuzione di Poisson di
parametro 3.64. Applicare il test di ipotesi Chi-quadro con un livello di significatività α = 0.05
e−λ λx
per valutare l’adattamento di questa distribuzione ai dati, ovvero si assuma pb(x) = ,
x!
x = 0, 1, 2, . . ., con λ = 3.64. Nell’applicazione del test considerare i seguenti 7 intervalli: [0, 2),
[2, 3), [3, 4), [4, 5), [5, 6), [6, 7), [7, 11]. Considerare i due casi in cui il parametro λ è stimato
oppure è noto.
Test di Kolmogorov–Smirnov
Un altro test di ipotesi che viene spesso preso in considerazione è basato sul con-
fronto tra una funzione di distribuzione empirica e la funzione di distribuzione
Fb della distribuzione ipotizzata: si tratta del test di Kolmogorov–Smirnov che
come pregio maggiore ha quello di essere valido per ogni dimensione n del nu-
mero delle osservazioni, mentre il test chi–quadro è valido in senso asintotico.
L’inconveniente maggiore è invece rappresentato dalla limitata applicabilità del
test che, almeno nella sua forma originaria, è valido se tutti i parametri della dis-
tribuzione ipotizzata sono noti, ovvero non stimati dai dati e se la distribuzione
è continua. Esistono estensioni del test al caso in cui i parametri sono stimati
solo in riferimento a particolari distribuzioni come la distribuzione normale e la
distribuzione esponenziale.
Fe è la percentuale dei dati del campione che sono minori o uguali di x, ovvero
Fe è la funzione di ripartizione della variabile aleatoria discreta che assume con
la stessa probabilità gli n valori osservati.
ELEMENTI DI STATISTICA INFERENZIALE 145
dove dn,1−α sono costanti che, in generale, possono dipendere dalla distribuzione
ipotizzata e dove α è il livello di accuratezza del test.
È importante notare che se tutti i parametri della Fb sono noti e non stimati,
allora si può dimostrare che la distribuzione di D non dipende dalla particolare
distribuzione ipotizzata e questo permette di utilizzare una sola tabella di valori
per dn,1−α per tutte le distribuzioni continue.
Sempre nel caso di tutti i parametri noti, è stato verificato che una buona ap-
prossimazione si ottiene utilizzando al posto di (2.2.7) il seguente test
µ ¶
√ 0.11
n + 0.12 + √ D > c1−α
n
dove c1−α sono costanti non dipendenti da n delle quali si dispone di valori
tabellati riportati nella Tabella 2.2.1.
146 SIMULAZIONE
Tabella 2.2.1 Valori delle costanti c1−α nel caso in cui tutti i parametri sono noti
Tabella 2.2.2 Valori delle costanti c01−α nel caso in cui la distribuzione ipotizzata è Normale
Tabella 2.2.3 Valori delle costanti c001−α nel caso in cui la distribuzione ipotizzata è esponenziale
Esercizio 2.2.14 Nel definire una distribuzione di probabilità durante l’analisi dell’input di
una simulazione, si hanno a disposizione i seguenti dati:
Il p-value
Il risultato di un test delle ipotesi porta a scartare o meno l’ipotesi H0 : essa si
scarta quando la statistica del test (ovvero χ2 nel test Chi–quadro o D nel test
Kolmogorv–Smirnov) superano il valore del punto critico. Tuttavia non viene
specificato quanto la statistica del test dista dal valore critico. Si può allora
definire una probabilità che fornisce una misura della distanza della statistica del
test dal valore critico: si definisce p-value o p-dei-dati come l’estremo inferiore
dei livelli di significatività che porterebbe a rifiutare H0 . Quindi se il livello α è
maggiore di tale probabilità (il p-value), l’ipotesi H0 viene scartata, altrimenti
non viene scartata. La probabilità data dal p-value fornisce quindi il livello di
significatività critico scendendo al di sotto del quale la decisione cambia da rifiuto
dell’ipotesi a non rifiuto.
Poiché il p-value è il livello di significatività al di sopra del quale si scarta H0 ,
valori grandi del p-value indicano un buon adattamento della distribuzione ipotiz-
zata ai dati, mentre valori piccoli del p-value indicano che il fitting non è buono.
Sulla base di ciò, molti software operano calcolando il p-value in corrispondenza
di diverse distribuzioni e decidono che la più adatta a rappresentare i dati è
quella alla quale corrisponde il p-value più grande. Questa opzione disponibile in
molti software deve essere tuttavia eventualemte utilizzata con estrema cautela,
in quanto è possibile che sulla sola base del valore del p-value non si abbiano
risposte adeguate.
148 SIMULAZIONE
2. i dati sono raccolti per generare una distribuzione empirica, ovvero per
definire una funzione di distribuzione empirica che verrà usata per produrre
l’input della simulazione;
3. i dati raccolti sono utilizzati per definire una distribuzione teorica. Vengono
utilizzate tecniche statistiche per analizzare se una distribuzione teorica tra
quelle note sia adatta a rappresentare i dati, effettuando i test di ipotesi
per verificare la rappresentatività della distribuzione ipotizzata (problema
del “fitting”).
Esempio 2.3.1 Disponendo dei seguenti valori osservati: 1, 0.4, 4, 2, 2.5, 3.6, 3 costruire il
grafico della distribuzione empirica. Dopo aver ordinato le osservazioni si ottiene il grafico della
F (x) riportato nella Figura 2.3.1.
Come abbiamo già osservato, uno svantaggio nell’utilizzare una distribuzione em-
pirica è che le variabili aleatorie generate da essa durante un’esecuzione di una
simulazione non possono essere mai più piccole di X(1) o più grandi di X(n) .
150 SIMULAZIONE
5/6
2/3
1/2
1/3
1/6
• Distribuzioni Continue
Le distribuzioni teoriche continue alle quali si può fare riferimento nella
costruzione di un modello di simulazione sono molte. Quelle più comune-
mente utilizzate sono la distribuzione uniforme, la distribuzione esponen-
ziale, la distribuzione gamma, la distribuzione normale, la distribuzione log-
normale, la distribuzione di Weibull, la distribuzione beta, la distribuzione
triangolare.
In realtà spesso si tratta di famiglie di distribuzioni in quanto sono presenti
uno o più parametri che possono essere classificati in:
• Distribuzioni Discrete
Le distribuzioni teoriche discrete che vengono di solito utilizzate come in-
put di una simulazione sono: la distribuzione uniforme, la distribuzione di
Bernoulli, la distribuzione binomiale, la distribuzione geometrica, la dis-
tribuzione di Poisson, la distribuzione binomiale negativa.
Verifica dell段ndipendenza
delle osservazioni
Individuazione di una
famiglia di distribuzioni
n−j
X
(Xi − X̄n )(Xi+j − X̄n )
i=1
ρbj =
(n − j)s2n
la stima del coefficiente di correlazione ρj di Xi e Xi+j , ovvero di due osservazioni
distanti j. Se le osservazioni sono indipendenti allora il coefficiente di correlazione
è nullo, cioè ρj = 0 per ogni j = 1, . . . , n − 1. Tuttavia poiché ρbj è una stima di
ρj , anche nel caso di osservazioni indipendenti ρbj potrebbe essere non nullo. Ci
si aspetta, comunque che esso sia prossimo a zero, e quindi possiamo dire che se
ρbj è diverso da zero in maniera significativa, allora le Xi non sono indipendenti.
Ci sono due modi grafici per verificare informalmente se le Xi sono indipendenti:
il grafico di ρbj al variare di j e il diagramma di dispersione delle osservazioni
X1 , . . . , Xn , ovvero le coppie (Xi , Xi+1 ) con i = 1, 2, . . . , n − 1. In caso di os-
servazioni indipendenti i punti dovrebbero risultare distribuiti casualmente sul
piano, altrimenti, in presenza di correlazioni, essi saranno concentrati intorno a
rette.
• Statistiche riassuntive
Dalle osservazioni è possibile ricavare stime di parametri dalle quali cercare
di individuare una famiglia di distribuzioni che meglio realizza il fitting
dei dati. I parametri che di solito vengono presi in considerazione sono i
seguenti:
– l’intervallo [X(1) , X(n) ] che ha per estremi il più piccolo e il più grande
valore osservati e che approssima il range della distribuzione;
n
1X
– la stima della media µ data X̄n = Xi ;
n i=1
– la stima della mediana data da
½
X(n+1)/2 se n è dispari
[X(n/2) + X((n/2)+1) ]/2 se n è pari;
Mostriamo ora le motivazioni che sono alla base del fatto che la forma di
h(x) dovrebbe “somigliare” alla densità di probabilità f dei dati. A questo
SCELTA DELLE DISTRIBUZIONI DI INPUT 155
• Procedure grafiche
Per distribuzioni continue, si confronta l’istogramma dei dati con il grafico
della densità di probabilità della distribuzione di probabilità ipotizzata,
oppure, per distribuzioni discrete, si confronta l’istogramma con la funzione
p(x) della distribuzione ipotizzata.
Un altro possibile confronto è tra il grafico della distribuzione empirica e il
grafico della funzione di distribuzione della distribuzione ipotizzata.
• Test statistici
Come ampiamente discusso nel paragrafo 2.2.3, possono essere utilizzati i
test delle ipotesi per verificare se le osservazioni X1 , . . . , Xn sono un cam-
pione indipendente di una particolare distribuzione di probabilità con fun-
zione di distribuzione Fb . I due test trattati (Chi–quadro e Kolmogorov–
Smirnov) sono adatti al caso che stiamo esaminando anche se, come già
visto, essi presentano le loro limitazioni intrinseche.
In alcuni casi, nella pratica, può accadere che non sia possibile raccogliere dati
sul funzionamente del sistema che si vuole studiare perchè esso è ancora in fase
di progettazione e quindi non ancora esistente. In questi casi non sono quindi
disponibili dati da utilizzare per selezionare una distribuzione di input ad una
simulazione e quindi non sono applicabili le tecniche viste fino ad ora. Senza entra
nei dettagli, osserviamo solamente che sarà necessario far ricorso a procedure
euristiche che si basano sulla natura del sistema, sul ricorso a persone esperte
di sistemi della tipologia di interesse, sulle limitazioni fisiche o convenzionali del
processo in esame.
GENERAZIONE DI OSSERVAZIONI CASUALI 157
4 La notazione “ mod m ” indica la congruenza modulo m, ovvero il resto della divisione per m
158 SIMULAZIONE
Z1 = 9 ( mod 7 ) = 2
Z2 = 6 ( mod 7 ) = 6
Z3 = 18 ( mod 7 ) = 4
Z4 = 12 ( mod 7 ) = 5
Z5 = 15 ( mod 7 ) = 1
Z6 = 3 ( mod 7 ) = 3
Z7 = 9 ( mod 7 ) = 2
Proposizione 2.4.2 Sia U una variabile aleatoria uniforme in [0, 1). Allora
per ogni funzione di distribuzione continua F , la variabile aleatoria
X = F −1 (U )
ha funzione di distribuzione F .
Quindi, sulla base di questo risultato, data una distribuzione di probabilità con
funzione di distribuzione F , a partire dalla distribuzione uniforme in [0, 1) possi-
amo costruire una variabile aleatoria la cui funzione di distribuzione è F .
pseudoinversa data da
Esempio 2.4.4 Supponiamo di voler costruire una successione di numeri pseudocasuali come
osservazioni dalla distribuzione esponenziale, ovvero con funzione di distribuzione F (x) = 1 −
e−λx . Innanzitutto determiniamo F −1 : da u = F (x) = 1 − e−λx si ricava x = −1/λ ln(1 − u),
ovvero
1
F −1 (u) = − ln(1 − u).
λ
Quindi se U è una variabile aleatoria uniformemente distribuita in [0, 1),
1
X = F −1 (U ) = − ln(1 − U ) (2.4.1)
λ
è una variabile aleatoria con distribuzione esponenziale con media 1/λ. Quindi, data una suc-
cessione di numeri pseudocasuali con distribuzione uniforme in [0, 1), dalla (2.4.1) possiamo
ottenere una successione di numeri pseudocasuali con distribuzione esponenziale.
Esempio 2.4.6 Utilizzando quanto ricavato nel precedente Esempio 2.4.4 si può ottenere la
generazione di osservazioni casuali dalla distribuzione di Erlang. Infatti sappiamo che la somma
di k variabili aleatorie indipendenti identicamente distribuite secondo la distribuzione esponen-
ziale, ciascuna con media 1/(kµ) ha distribuzione di Erlang di parametro k e media 1/µ. Quindi
avendo una successione di numeri uniformemente distribuiti in [0, 1), u1 , . . . , uk , le osservazioni
dalla distribuzione di Erlang possono essere ottenute da
X
k
ln(1 − ui )
x=
−kµ
i=1
x=− ln (1 − ui ) .
kµ
i=1
Il metodo della trasformazione inversa può essere esteso ed utilizzato anche nel
caso di distribuzioni discrete, ovvero quando si assume che la variabile X sia una
variabile aleatoria discreta. In questo caso, naturalmente si ha
X
F (x) = P (X ≤ x) = p(xi ),
xi ≤x
GENERAZIONE DI OSSERVAZIONI CASUALI 161
dove p(xi ) = P (X = xi ).
Supponiamo quindi che X assuma i valori x1 , x2 , . . . e supponiamo che essi siano
ordinati, ovvero x1 < x2 < · · · . Data una variabile U uniformemente distribuita
in [0, 1) si definisce la variabile X nel seguente modo: si determina il più pic-
colo intero positivo k̄ tale che U ≤ F (xk̄ ) e si pone X = xk̄ . Dobbiamo ora
dimostrare che effettivamente la X cosı̀ generata è quella desiderata, ovvero che
risulta P (X = xi ) = p(xi ) per ogni i. Infatti si ha:
• per i = 1 risulta X = x1 se e solo se U ≤ F (x1 ), ma F (x1 ) = p(x1 ) perché
le xi sono ordinate. Ora, poiché la U è uniformemente distribuita in [0, 1),
si ha P (X = x1 ) = P (U ≤ F (x1 )) = F (x1 ) = p(x1 )
• per i ≥ 2 risulta X = xi se e solo se F (xi−1 ) < U ≤ F (xi ) per come è scelto
i. Inoltre, poché la U è uniformemente distribuita in [0, 1) si ha
Metodo dell’accettazione–reiezione
Il metodo della trasformazione inversa è basato sul cacolo della trasformazione
inversa F −1 che non sempre può essere calcolata o comunque non in maniera
efficiente. Per questa ragione sono stati sviluppati altri metodi fra i quali il
metodo che esaminiamo in questo paragrafo detto “acceptance–rejection” o anche
“metodo del rigetto”.
Consideriamo il caso continuo e supponiamo di voler generare osservazioni ca-
suali da una distribuzione di probabilità avente funzione di distribuzione F e
densità di probabilità f (il caso discreto si tratta in maniera del tutto analoga).
Supponiamo di disporre di un metodo per generare osservazioni casuali da una va-
riabile aleatoria Y avente per densità di probabilità una funzione g(x). Il metodo
accettazione–reiezione utilizza queste osservazioni per generare osservazioni casu-
ali dalla distribuzione di probabilità avente per densità di probabilità la funzione
f (x). In particolare, si generano osservazioni casuali della variabile aleatoria
Y e poi si accettano o si rifiutano queste osservazioni come osservazioni casuali
delle distribuzione con densità data dalla f con una probabilità proporzionale al
rapporto f (Y )/g(Y ). Più in dettaglio, sia c una costante tale che
f (y)
≤ c, per ogni y.
g(y)
Il metodo si può schematizzare nel seguente modo:
162 SIMULAZIONE
Fi (y | I) = P (Yi ≤ y | I) ,
Distribuzio- allora F (y) è la distribuzione stazionaria del processo di output {Yi , i = 1, 2, . . .}.
ne stazio- Lo stato stazionario si raggiunge, in teoria, al limite per i → ∞, ma, nella pratica,
naria molto spesso esiste un indice temporale finito k̄ tale che le distribuzioni da quel
punto in poi rimarrano approssimativamente coincidenti. Quando questo accade,
si assume che il sistema è nello stato stazionario a partire dal tempo k̄.
Una distinzione fondamentale deve essere compiuta tra simulazioni per le quali
esiste un evento “naturale” il cui accadimento indica la conclusione della simu-
lazione stessa e simulazioni in cui questo non accade. Ad esempio, se si è inte-
ressati a simulare un sistema di code che rappresenta un ufficio postale che apre
alle 8.30 e chiude alle 14.00 e finisce di operare dopo che è stato servito l’ultimo
cliente entrato prima della chiusura, è chiaramente presente l’evento dato dal
fatto che il sistema è vuoto dopo le ore 14.00 che identifica la fine dell’operatività
del sistema stesso e quindi della simulazione corrispondente. Un’altro esempio
potrebbe essere dato da un’industria navale che ha un contratto per produrre
30 navi in 24 mesi; si vorrano simulare diverse configurazioni in cui può operare
l’industria per studiare quale permetta di evadere l’ordine entro la data fissata;
in questo caso l’evento è la fabbricazione di 30 navi. In altri casi, invece un tale
evento non esiste; si pensi, ad esempio, ad un sistema di produzione continuo in
cui si vogliono valutare misure di prestazione a regime.
Formalmente distinguiamo i due casi parlando, nel primo caso, di simulazione con Simulazione
terminazione (finita), quando esiste un evento naturale che specifica la lunghezza con o senza
di ciascuna replica. In questo caso le condizioni iniziali influenzano le misure di termina-
prestazione del sistema e verrà naturalmente effettuata un’analisi del transitorio. zione
Nel secondo caso si parla di simulazione senza terminazione nel senso che non
esiste un evento che specifica la lunghezza di una replica; in questo caso si è
di solito interessati al comportamento a regime del sistema, ovvero all’analisi
dello stato stazionario e questo può comportare che per stimare una misura di
prestazione possano essere necessari run molto lunghi della simulazione.
Si deve anche notare come in alcuni casi reali lo stato stazionario potrebbe non
essere raggiunto perché le caratteristiche del sistema cambiano nel tempo; tut-
tavia, il corrispondente modello di simulazione potrebbe raggiungerlo, poiché nel
costruire il modello si è assunto che le caratteristiche del modello non cambiano
nel tempo. In questi casi, quando ci sono cambiamenti delle caratteristiche del sis-
tema è necessario inserire questi cambiamenti nel modello ed effettuare di nuovo
lo studio.
166 SIMULAZIONE
La (2.5.4) afferma che l’errore assoluto commesso è pari al più a β con proba-
bilità pari ad almeno 1 − α. Quindi, se, ad esempio, costruiamo 100 intervalli di
confidenza al 90% utilizzando il criterio di arresto sul numero delle repliche che
¯ ¯
abbiamo adottato, ci aspettiamo che l’errore assoluto ¯X̄n − µ¯ sia al più pari a
β in circa 90 dei 100 casi, mentre nei rimanti 10 casi l’errore assoluto potrebbe
essere maggiore di β. Esistono regole che determinano il numero minimo n?a di
repliche da effettuare affinché la (2.5.4) sia soddisfatta; una delle più semplici è
la seguente:
n?a = min {n ≥ 2 | δ(n, α) ≤ β} .
Per quanto riguarda l’errore relativo, si richiede che il numero di repliche n da Errore
effettuare sia tale che risulti relativo
à !
|X̄n − µ|
P ≤γ ≥ 1 − α, α ∈ (0, 1), γ > 0. (2.5.5)
|µ|
Anche in questo caso esistono regole empiriche che forniscono il valore del numero
minimo n?r di repliche da effettuare affinché la (2.5.5) sia soddisfatta; una di queste
è la seguente: ½ ¾
δ(n, α) γ
n?r = min n ≥ 10 | ≤ .
|X̄n | 1+γ
Il termine γ/(1 + γ) deriva dal fatto che nel calcolare l’errore relativo stiamo
utilizzando |X̄n |, ovvero una stima di |µ| e non il valore esatto |µ|. Infatti,
supponiamo di aver effettuato un numero di repliche sufficienti a garantire che
risulti
δ(n, α)
≤ L. (2.5.6)
|X̄n |
Allora si ha
à !
¡ ¢ |X̄n − µ| δ(n, α)
1 − α ≈ P |X̄n − µ| ≤ δ(n, α) = P ≤ ≤
|X̄n | |X̄n |
à !
|X̄n − µ| ³ ´
≤ P ≤ L = P |X̄n − µ| ≤ L|X̄n − µ + µ| ≤
|X̄n |
à !
³ ´ |X̄n − µ| L
≤ P (1 − L)|X̄n − µ| ≤ L|µ| = P ≤ .
|µ| 1−L
Quindi, affiché valga la (2.5.5) si deve avere L/(1 − L) = γ, ovvero L = γ/(1 + γ).
168 SIMULAZIONE
Per applicare nella pratica quanto ora discusso sono state definite due strategie
generali:
• procedura a due fasi: in una prima fase vengono effettuate n0 repliche sulla
base delle quali si calcola s2n0 e la semiampiezza dell’intervallo di confidenza
δ(n0 , α). Poi, eventualmente, si effettuano altre repliche fino al raggiungi-
mento della precisione desiderata non ricalcolando la stima della varianza
all’aumentare delle repliche;
• procedura iterativa: si aumenta iterativamente il numero delle repliche fino
a che non si raggiunge il livello di accuratezza desiderato, ricalcolando la
stima della varianza ad ogni nuova replica.
Anche in questo caso, se tale valore n?r è maggiore del numero delle repliche
già effettuate n0 , sarà necessario effettuare n∗r − n0 repliche aggiuntive fino al
soddisfacimento della disuguaglianza.
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 169
Procedura iterativa
Quanto visto nel paragrafo precedente presenta l’inconveniente di utilizzare la
stima della varianza basata sulle n0 repliche fissate nel calcolo del numero di
repliche necessarie per ottenere una precisione desiderata. Tuttavia tali stime
potrebbe essere imprecise e quindi questo potrebbe portare ad una scelta del nu-
mero delle repliche troppo grande con notevole spreco di tempo di calcolo, oppure
tale numero potrebbe essere troppo piccolo e quindi, di fatto, non si otterrebbe la
precisione voluta. Infatti, se s2n0 è una sottostima della varianza, allora il numero
di repliche necessarie determinato dalla procedura è più piccolo del necessario,
mentre se s2n0 è una sovrastima della varianza, allora tale numero è più grande
del necessario e quindi vengono effettuate repliche inutili. Questo inconveniente
può essere superato utilizzando una procedura iterativa che ha lo scopo di deter-
minare una stima di µ con errore relativo pari a γ (o assoluto pari a β) e intervallo
di confidenza del 100(1 − α)%. La differenza fondamentale rispetto alla proce-
dura a due fasi vista nel paragrafo precedente sta nel fatto che, ad ogni replica
aggiuntiva eventualmente effettuata, viene ricalcolata la stima della varianza che
invece nel caso precedente rimaneva fissata a s2n0 . Uno schema algoritmico che
permette di ottenere una stima di µ con errore relativo non superiore a γ ovvero
che permette di soddisfare la (2.5.5) è il seguente:
m
X
Yj
j=1
Ȳm = . (2.5.7)
m
Tuttavia, a causa del transitorio iniziale dipendente dalla scelta delle condizioni
iniziali, Ȳm non è uno stimatore corretto in quanto è possibile che E(Ȳm ) 6= µ per
ogni m.
Problema Questo problema è detto problema del transitorio iniziale o problema dello startup.
dello Per superare questo problema si utilizza una tecnica di cancellazione dei dati ini-
“startup” ziali detta anche “warming up” del modello che consiste nel non considerare nella
stima le prime osservazioni che sono quelle più influenzate dalle condizioni iniziali.
Quindi, invece di utilizzare la stima Ȳm data dalla (2.5.7), si considera
m
X
Yj
j=`+1
Ȳ(m,`) = ,
m−`
© ª
Passo 4: Si sceglie quel valore di ` oltre il quale la successione Ȳj (k) appare
giunta a convergenza.
• per quanto riguarda la lunghezza delle repliche m, essa dovrà essere suffi-
cientemente grande tanto da essere più grande del valore che ci si aspetta
per ` e tale da permettere nella simulazione un numero elevato di occorrenze
di tutti gli eventi, anche quelli poco probabili;
• per quanto riguarda il valore del time window k, esso deve essere sufficiente-
mente grande da rendere regolare il grafico delle Ȳj (k), ma non cosı̀ grande
da non permettere l’individuazione del transitorio.
Come abbiamo avuto modo più volte di osservare, l’output di una simulazione
necessita di un’analisi statistica approfondita per ottenere una buona interpre-
tazione dei risultati. Alcune volte, simulazioni di grandi dimensioni richiedono
molto tempo di calcolo e nonostante questo, la precisione dei risultati che si otten-
gono potrebbe non essere del tutto soddisfacente. Naturalmente la qualità delle
stime è tanto migliore quanto più è piccola la varianza delle variabili aleatorie
di output. Questo significa che, se si riesce a ridurre tale varianza senza alter-
are il valore atteso, si può ottenere una precisione migliore, ovvero intervalli di
confidenza più piccoli a parità di carico computazionale della simulazione, op-
pure si riesce a raggiungere una precisione desiderata con un minor numero di
repliche e/o con repliche di minore lunghezza. A tale scopo, si possono utilizzare
le cosiddette tecniche per la riduzione della varianza. Ovviamente è general-
mente impossibile conoscere “a priori” la misura della riduzione della varianza
che dovrà essere ottenuta. Esistono diverse tecniche di riduzione della varianza;
nel seguito ne consideriamo due tra le più utilizzate: l’uso di variabili antitetiche
e il condizionamento.
L’uso di variabili antitetiche si basa sulla seguente osservazione: sia X una varia-
bile di output di una simulazione e supponiamo di voler stimare il valore atteso
θ = E(X). A tale scopo, supponiamo di aver generato due variabili aleatorie
X1 , X2 identicamente distribuite con media θ. Consideriamo la nuova variabile
aleatoria (X1 + X2 )/2; ovviamente essa ha la stessa media θ, e la sua varianza è
data da
µ ¶
X1 + X2 1³ ´
V ar = V ar(X1 ) + V ar(X2 ) + 2Cov(X1 , X2 ) .
2 4
Ora, se X1 e X2 fossero negativamente correlate (ovvero Cov(X1 , X2 ) < 0),
utilizzando (X1 + X2 )/2 si avrebbe una riduzione della varianza.
Sulla base di questa semplice osservazione, la tecnica delle variabili antitetiche
consiste nell’effettuare coppie di repliche della simulazione e utilizzare la media
delle coppie delle osservazioni. La correlazione negativa è indotta utilizzando
numeri casuali complementari nella generazione delle osservazioni casuali delle
distribuzione di probabilità.
Come abbiamo visto nel paragrafo 2.4.2, durante una simulazione, per generare
osservazioni casuali secondo una distribuzione di probabilità si utilizza una suc-
cessione di numeri casuali Uk uniformemente distribuiti nell’intervallo [0, 1). La
tecnica delle variabili antitetiche prevede di utilizzare nella prima replica della
coppia numeri casuali Uk per generare le osservazioni di una certa distribuzione
TECNICHE PER LA RIDUZIONE DELLA VARIANZA 175
di probabilità, mentre nella seconda replica, per generare osservazioni dalla me-
desima distribuzione di probabilità si utilizzano numeri casuali 1 − Uk (comple-
mentari). Questo è possibile, in quanto come già visto nell’Osservazione 2.4.5, se
Uk è distribuita uniformemente in [0, 1), anche 1−Uk è distribuita uniformemente
in [0, 1).
Formalmente, si ha
X1 = h(U1 , . . . , Um )
X2 = h(1 − U1 , . . . , 1 − Um ),
con Uk variabile aleatoria con distribuzione uniforme in [0, 1) e h un’opportuna
funzione. Si può dimostrare [Ross, 2003a], che se h è una funzione monotona,
allora le X1 e le X2 sono correlate negativamente. Infatti, vale la seguente propo-
sizione.
³ ´ ³ ´ ³ ´
(1) (2) (1) (2)
V ar Xj + V ar Xj + 2Cov Xj , Xj
= .
4n
(1) (2)
Quindi, inducendo una correlazione negativa tra Xj e Xj , la varianza V ar(X̄n )
viene ridotta. Naturalmente è importante che le repliche siano sincronizzate,
ovvero se nel generare il j−esimo elemento della prima replica si utilizza Uj ,
allora nel generare il corrispondente elemento j−esimo della seconda replica deve
essere utilizzato 1 − Uj .
2.6.2 Condizionamento
i) E(X) = E (E(X/Y ))
da cui
X
E (E(X | Y )) = E(X | Y = y)P (Y = y)
y
XX
= xP (X = x, Y = y)
y x
X X
= x P (X = x, Y = y)
x y
X
= xP (X = x) = E(X)
x
TECNICHE PER LA RIDUZIONE DELLA VARIANZA 177
Inoltre vale
³ ´
V ar(E(X/Y )) = E (E(X/Y ))2 − (E(E(X/Y )))2
³ ´
= E (E(X/Y ))2 − (E(X))2 . (2.6.3)
ovvero la ii).
Dalla ii) segue facilmente che poiché la varianza è sempre non negativa, cia-
scun termine della ii) deve essere maggiore o uguale a zero e quindi risulta
E (V ar(X/Y )) ≥ 0, da cui si ha
Nel paragrafo 2.1.4 abbiamo fatto cenno ad alcuni pacchetti software di simu-
lazione tra i più diffusi. Tra questi scegliamo di utilizzare il software ARENA
Basic Edition 7.01, prodotto dalla Rockwell Software che è disponibile in “aca-
demic mode”. I siti web di riferimento sono http://www.arenasimulation.com
e http://www.software.rockwell.com/arenasimulation.
Per ogni dettaglio sull’uso di ARENA si fa riferimento a [Kelton et al., 2004] e
alla User’s Guide disponibile on line.
Si riportano di seguito alcuni esercizi svolti durante le esercitazioni.
Esercizio 2.7.1 In un laboratorio di analisi di un ospedale il centro prelievi è aperto dal lunedı̀
al sabato dalle 7.30 alle 11.00. Gli utenti arrivano al centro con intertempi di arrivo distribuiti
esponenzialmente con media 7 minuti. Appena arrivato al centro prelievi un utente deve ritirare
un numero da una macchinetta distributrice e poi deve attendere di essere chiamato allo sportello
per l’accettazione dove presenterà la richiesta di analisi del proprio medico curante; gli utenti
sono chiamati in ordine di numero crescente e le operazioni per l’accettazione sono eseguite
in tempi distribuiti uniformemente tra 1 e 1.5 minuti. Dopo l’accettazione l’utente si reca
all’ufficio cassa se deve pagare il ticket oppure, se è esente da tale pagamento, si reca direttamente
all’ambulatorio per il prelievo. Il pagamento del ticket richiede tempi distribuiti uniformemente
tra 0.5 e 1 minuto, mentre i tempi per effettuare i prelievi presso l’ambulatorio sono distribuiti
esponenzialmente con media 5 minuti. Realizzare un modello si simulazione per questa situazione
in ARENA.
Esercizio 2.7.3 Un Computer consta di 1 CPU, 3 terminali, 1 unità Hard Disk (HD) e 1
unità a nastro (Tape). In ciascun terminale siede un utente il quale invia jobs alla CPU con
intertempi distribuiti esponenzialmente (valore atteso pari a 100 secondi). I jobs si accumulano
in una coda (FIFO) prima di essere processati dalla CPU. Ciascun job processato dalla CPU la
tiene occupata per un tempo distribuito esponenzialmente (valore atteso pari a 1 secondo). Un
job che lascia la CPU può:
• con probabilità 20% ritornare al terminale che l’ha inviato;
• con probabilità 72% andare nella coda (FIFO) dell’ Hard Disk;
• con probabilità 8% andare nella coda (FIFO) dell’unit a nastro.
Ciascun job processato dall’Hard Disk necessita di un tempo distribuito esponenzialmente (va-
lore atteso pari a 1.39 secondi), dopodiché torna alla coda della CPU. Analogamente ciascun
job processato dall’unità a nastro necessita di un tempo distribuito esponenzialmente (valore
atteso pari a 12.50 secondi), poi torna alla coda della CPU. Tutti i job prodotti dagli operatori
sono tra loro statisticamente indipendenti. Si costruisca con il simulatore ARENA un modello
del processo sopra descritto e si stimino i tempi di attesa in coda alla CPU, Hard Disk e unità
a nastro. Si supponga di eseguire la statistica in due situazioni distinte:
per un numero di repliche pari a 10 ed una durata di ciascuna replica pari a 60 minuti;
per un numero di repliche pari a 5 ed una durata di ciascuna replica pari a 60 secondi.
Quale conclusione suggerisce il confronto dei risultati riportati nelle due prove ?
180 SIMULAZIONE
La trattazione di questo capitolo è basata sul testo [Law, Kelton, 2000] che rapp-
resenta un testo completo su tutti gli aspetti della simulazione e quindi utile anche
per approfondimenti. Per aspetti più teorici si può consultare il capitolo 11 del
testo [Ross, 2003a]. Fra i numerosi ulteriori testi sulla simulazione citiamo, ad
esempio, [Ross, 2002] e [Banks et al., 2001]. Il testo [Banks, 1998] riporta una
collezione di articoli che forniscono un’adeguata panoramica sulle metodologie e
le aree di applicazione della simulazione.
Per quanto riguarda il software di simulazione ARENA trattato nel paragrafo 2.7
si fa riferimento al testo [Kelton et al., 2004].
Esercizio 3.1.1 Dato un sistema M/M/2 con frequenza media di arrivo pari a
λ e velocità di servizio pari a µ, con λ < 2µ
• Scrivere le equazioni di Kolmogorov relative al processo di nascita e morte
al quale si può ricondurre questo sistema;
• ricavare un’espressione di pn in funzione di λ e µ.
Esercizio 3.1.2 In un fast–food è previsto il servizio “drive”, ovvero si raggiunge
con l’auto una piattaforma e si viene serviti senza scendere dall’auto. Viene
servita un’auto alla volta e attualmente c’è spazio solamente per 3 auto in attesa.
Gli arrivi dei clienti sono poissoniani con in media 40 auto l’ora e i tempi di
servizio sono distribuiti esponenzialmente con media di 50 auto l’ora. Il profitto
medio che il gestore ricava dall’effettuazione di un servizio è di 0.50 Euro. Inoltre
il gestore può affittare altri spazi auto a 9 Euro al giorno. Il fast–food è aperto
24 ore su 24. Determinare se è conveniente affittare posti auto aggiuntivi e, in
caso affermativo, calcolare quanti.
Esercizio 3.1.3 In un ciclo produttivo di un’industria c’è una stazione di is-
pezione il cui servizio consiste nell’effettuare un controllo su un pezzo semilavo-
rato e che ha un ciclo operativo costante di 6 minuti. Gli arrivi alla stazione di
ispezione sono poissoniani alla media di 4 pezzi l’ora. Determinare
• il numero medio di pezzi presenti in coda in attesa di essere lavorati dalla
stazione di ispezione;
183
184
Esercizio 3.1.6 In un ufficio postale ci sono 6 sportelli cassa che operano dalle
8 alle 14. Assumiamo che i clienti arrivino secondo Poisson con frequenza di 2
al minuto, e che i tempi di servizio di ciascun servente sono uniformemente dis-
tribuiti tra 2 e 3 minuti. Effettuando 10 repliche indipendenti di una simulazione,
si ottengono i seguenti valori per il numero medio degli utenti in coda
numero replica valore
1 1.49
2 1.64
3 1.95
4 1.45
5 1.51
6 1.55
7 1.88
8 1.36
9 1.78
10 1.46
Determinare se le 10 repliche effettuate sono sufficienti per stimare il numero
medio di utenti in coda con un errore relativo pari a 0.07 e un intervallo di
confidenza al 90%. Dire, inoltre, motivando la risposta, se si possono utilizzare
le formule per le misure di prestazione di un sistema di code M/G/s per studiare
questo problema.
BIBLIOGRAFIA 185
Bibliografia
Billingsley, P. (1979). Probability and mesaure. Wiley and Sons, New York.
Prefazione iii
Introduzione v
2 Simulazione 119
2.1 Generalità sui modelli di simulazione 120
2.1.1 Elementi di un modello di simulazione 120
2.1.2 Classificazione dei modelli si simulazione 122
2.1.3 Simulazione ad eventi discreti 122
2.1.4 Schema dello studio di un problema basato sulla
simulazione 124
2.1.5 Applicazioni tipiche della simulazione 127
2.2 Elementi di Statistica inferenziale 129
2.2.1 Statistiche campionarie e loro distribuzione 129
2.2.2 Stima di parametri 133
2.2.3 Test delle ipotesi 141
2.3 Scelta delle distribuzioni di input 148
2.3.1 Distribuzioni empiriche 149
2.3.2 Distribuzioni teoriche 150
2.3.3 Scelta di una distribuzione teorica 151
2.3.4 Scelta delle distribuzioni di input in assenza di dati 156
2.4 Generazione di osservazioni casuali 157
2.4.1 Generazione di numeri pseudocasuali con
distribuzione uniforme 157
2.4.2 Generazione di osservazioni casuali da una
distribuzione di probabilità 159
2.5 Progettazione di una simulazione e analisi dell’output 163
2.5.1 Dati di output 163
2.5.2 Transitorio e stato stazionario 164
2.5.3 Tipi di simulazioni 165
2.5.4 Simulazioni con terminazione: analisi del transitorio 166
2.5.5 Simulazioni senza terminazione: analisi dello stato
stazionario 170
190 SOMMARIO
3 183
3.1 Esercizi di riepilogo 183