Sei sulla pagina 1di 196

Facoltà di Ingegneria

Corso di Laurea in Ingegneria Gestionale

Sistemi di Servizio e Simulazione

Massimo Roma

Dipartimento di Informatica e Sistemistica “A. Ruberti”

roma@dis.uniroma1.it
http://www.dis.uniroma1.it/ e roma

anno accademico 2009-10


Prefazione

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

riporta informazioni complete su molti aspetti della simulazione.


Introduzione

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

“replicare” le caratteristiche del problema reale in esame. Questi modelli hanno


la differenza fondamentale rispetto ai modelli analitici di utilizzare il calcolatore
non solo come strumento di calcolo, ma anche come strumento per rappresentare
le realtà in esame. Questo significa che se, ad esempio, in un modello di pro-
grammazione matematica c’è una corrispondenza tra relazioni del modo reale e
relazioni matematiche, in un modello di simulazione c’è corrispondenza funzionale
tra elementi della realtà e l’“oggetto” (struttura dati, sottoprogramma, etc.) che
ne svolte le funzioni.
La simulazione, oltre ad essere alternativa all’uso di modelli analitici, gioca un
ruolo di fondamentale importanza all’interno dell’approccio modellistico per la
soluzione di un problema di decisione, per i seguenti due importanti aspetti:

• permette di effettuare la validazione del modello matematico in alterna-


tiva alla sperimentazione diretta che spesso risulta impraticabile o troppo
costosa;

• permette di analizzare e studiare modelli stocastici, ovvero modelli in cui


alcune grandezze sono influenzate da fenomeni di natura aleatoria.

In questo contesto, questo corso ha un duplice scopo: da un lato vuole ampliare la


conoscenza dei modelli analitici introducendo i cosiddetti modelli di file d’attesa,
che sono uno strumento essenziale per analizzare un’importante classe di sistemi
stocastici, i sistemi di servizio, che sono strutture molto diffuse nella vita reale
caratterizzate dall’arrivo casuale di utenti ciascuno dei quali richiede un servizio,
con la possibilità di formazioni di una coda (o fila) di utenti in attesa. Dall’altro,
il corso vuole fornire le basi della simulazione come tecnica che permette di studi-
are gli effetti di eventuali interventi su una realtà già esistente, oppure di valutare
diverse scelte progettuali di una realtà ancora da costruire. Le tecniche di simu-
lazione saranno studiate in termini generali e, in particolare, riferite ai sistemi di
servizio che hanno nella simulazione un importante strumento di analisi.
1
Teoria delle code

L’esperienza quotidiana ci mette in continuo rapporto con la necessità di richiedere


l’erogazione di un servizio a soggetti o enti con la possibilità che si crei una fila
(o coda) in attesa di essere serviti. Questo accade perché il servizio richiede
un certo tempo per essere espletato e perché l’arrivo di coloro che richiedono il
servizio è casuale. Una struttura di questo tipo, ovvero con arrivo casuale di
clienti che richiedono lo svolgimento di un servizio viene chiamato Sistema di
Servizio. Esempi di sistemi di servizio sono molto numerosi anche nella realtà
quotidiana come i distributori di benzina, gli sportelli degli uffici postali o delle
banche, le casse di un supermercato; esempi di situazioni di code per ottenere
un servizio sono anche gli aerei in attesa del decollo o dell’atterraggio, le parti
in attesa di essere lavorate all’interno di un impianto di produzione, i computer
in un sistema di comunicazione in attesa di ricevere o trasmettere dati e molte
altre. Tuttavia, dover aspettare non è solo fonte di disagio personale, ma se si
considera l’ammontare totale delle ore che un popolo di una nazione spreca in
attesa in code esso è un importante fattore della qualità della vita e dell’economia
della nazione. L’impatto degli eccessivi tempi di attesa va anche oltre la semplice
attesa di persone che sono in fila: in un impianto di produzione una macchina
in avaria che è in attesa di essere riparata causa una perdita nella produzione;
ritardi in una rete di telecomunicazioni dovute a linee sature può causare mal
funzionamenti; aerei in attesa del decollo possono seriamente alterare gli orari
dei voli con conseguenti disguidi per le compagnie aeree e per i passeggeri.
La teoria delle code (o file d’attesa) studia i fenomeni di attesa che si possono
verificare quando si richiede un servizio. Come si è visto negli esempi precedenti,
i suoi i campi di applicazione oltre ad essere quelli legati alla vita quotidiana,
riguardano anche i sistemi di elaborazione, i sistemi di trasmissione dati, i sistemi
1
2 TEORIA DELLE CODE

flessibili di lavorazione, i sistemi di trasporto e molti altri. Quindi oltre che


migliorare la qualità della vita delle persone, la teoria delle code trova applicazione
nel settore industriale, dei servizi e moltissimi altri.
Dal punto di vista storico, la formulazione del primo problema di teoria delle
code risale al 1908, quando A.K. Erlang, un ingegnere impiegato presso la Danish
Telephone Company di Copenaghen, ritenuto il fondatore della teoria delle code,
voleva studiare come dimensionare centrali telefoniche allo scopo di mantenere
ad un valore ragionevolmente basso il numero delle chiamate che non potevano
essere connesse (chiamate perse) perché il centralino era occupato.
GENERALITÀ 3

1.1 GENERALITÀ

Un Sistema di Servizio (o sistema di code) è una struttura caratterizzata dall’arrivo


casuale di utenti detti clienti ciascuno dei quali richiede lo svolgimento di un’ope- Sistema di
razione che viene detta servizio. L’operazione è svolta da un’unità che viene detta Servizio
servente (server) (o stazione di servizio) che può servire un utente alla volta.
Poiché gli arrivi degli utenti che richiedono il servizio è casuale e poiché il tempo
necessario per espletare il servizio dal parte del servente è non nullo, si possono
verificare situazioni temporanee in cui il servente non ha la possibilità di soddis-
fare immediatamente le richieste con conseguente generazione di una fila o coda
di clienti in attesa di essere serviti.
Il servente può essere uno solo (singolo canale) oppure ci può essere più di un
servente. Gli utenti che arrivano al sistema attendono in fila se tutti i serventi
sono impegnati, poi vengono serviti ed infine lasciano il sistema. Si tenga conto
del fatto che, di solito, chi gestisce il servizio ricava un utile dall’effettuazione del
servizio stesso, e quindi si adopererà affinché i clienti non vengano scoraggiati da
attese eccessive rinunciando al servizio o rivolgendosi altrove, overo non fornendo
alcun utile al gestore; d’altra parte, il gestore per ovviare a questo inconveniente
potrebbe aumentare il numero dei serventi, ma questo implica un aumento dei
costi ed inoltre l’aumento degli operatori addetti al servizio potrebbe non essere
assolutamente conveniente se questi, tranne nei momenti di maggiore richiesta,
rimangono inattivi per lunghi periodi.
Lo scopo della teoria della code è quello di valutare alcune grandezze (misure
di prestazione) sulle quali basarsi per dimensionare il sistema di servizio. Esse
possono essere la lunghezza media della coda, il numero medio di utenti presenti
nel sistema, la durata media del tempo passato nella coda. Ovvero, deve poter
fornire una risposta a domande tipiche riguardanti misure di prestazione del sis-
tema, fra le quali: quanto tempo un cliente si prevede che aspetti in fila prima
di essere servito ? Qual è la probabilità che un cliente aspetti più di un tempo
prefissato prima di essere servito ? Qual è l’utilizzazione che ci si aspetta dei
serventi e il tempo che essi sono occupati ? Qual è la probabilità che la coda
superi una certa lunghezza ?
Sistemi con tipologie abbastanza semplici possono essere analizzati analitica-
mente, ma quando le tipologie sono più complicate come, ad esempio, più code
presenti nel sistema, relative ad operazioni diverse, effettuate da serventi diversi, e
tali che tutte le operazioni devono essere effettuate affinché il servizio richiesto sia
espletato, un’analisi analitica non è sempre possibile e l’utilizzo della simulazione
è in questo caso indispensabile per l’analisi delle prestazioni del sistema.
4 TEORIA DELLE CODE

1.1.1 Esempi reali di sistemi di code

La descrizione fino ad ora fornita di un sistema di servizio (sistema di code)


potrebbe sembrare abbastanza astratta e applicabile solamente ad alcuni casi
particolari. Al contrario, i sistemi di code presentano un vasto campo di appli-
cazione in differenti contesti. Riportiamo di seguito alcune situazioni in cui la
teoria delle code può essere applicata con successo.
• Sistemi di servizi commerciali.
Nell’esperienza quotidiana ci sono molte situazioni in cui clienti ricevono un
servizio da una organizzazione commerciale con frequente formazione di fila
d’attesa; esempi sono le casse di un supermercato, gli uffici postali, l’ingresso
ad un museo, le biglietterie ferroviarie, l’anagrafe, gli uffici commerciali
pubblici aperti al pubblico e moltissimi altri.
• Sistemi di servizi sociali.
Anche nell’espletamento dei servizi sociali in molte situazioni la formazione
di file d’attesa è spesso inevitabile. Ad esempio, i servizi ospedalieri (servizio
radiografico, laboratorio di analisi cliniche, visite specialistiche), il servizio
ambulatoriale del medico di base, oppure, in generale, uffici pubblici che
forniscono un servizio sociale. Anche il sistema giudiziario può essere visto
come un sistema di code in cui le corti sono i serventi e gli utenti sono i
processi in attesa di essere celebrati. Il sistema legislativo è un sistema di
file d’attesa dove i progetti di legge in attesa di essere discussi rappresentano
gli utenti del sistema.
• Sistemi di trasporto.
I sistemi di trasporto rappresentano un’importante classe di sistemi rapp-
resentabili mediante sistemi di code. Si pensi, ad esempio, agli autoveicoli
in attesa ai caselli autostradali o ai semafori, agli autocarri o alle navi in
attesa di essere caricati o scaricati, agli aerei in attesa di decollare o at-
terrare. Un altro esempio può essere rappresentato dai parcheggi per auto,
dove i serventi sono gli spazi per il parcheggio. Altri casi sono rappresentati
dai taxi, dagli ascensori, dalle autopompe dei vigili del fuoco.
• Sistemi di produzione.
Nei sistemi industriali molto spesso si creano situazioni di attesa da parte di
componenti che devono essere lavorati da linee di produzione. Altri esempi
sono rappresentati dai centri di assemblaggio o dai sistemi di manutenzione
in cui gli operai rappresentano i serventi e le macchine da sottoporre a
manutenzione i clienti.
• Sistemi di comunicazione.
Nelle reti di comunicazioni, ad esempio quelle di trasmissione dati, pacchetti
di dati vengono trasmessi lungo le connessioni da un nodo al successivo con
GENERALITÀ 5

possibilità di attesa (buffering) quando la domanda in ingresso eccede la ca-


pacità. Situazioni di attesa possono anche verificarsi nel calcolo parallelo in
cui più calcolatori connessi effettuano elaborazioni in parallelo con necessità
di scambiarsi dati. Altri esempi sono rappresentati dai call–center, dove gli
operatori rappresentano i serventi e gli utenti sono coloro che chiamano e
che possono essere messi in attesa fino al momento in cui c’è un operatore
disponibile.

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à.

1.1.2 Componenti di un sistema di servizio

Da un punto di vista fisico, un sistema di servizio è composto da un insieme (non


vuoto) di serventi, da un insieme (non vuoto) di aree di attesa (chiamate anche
buffer) che accolgono i clienti in attesa di essere serviti.
Un sistema di servizio può essere schematizzato nelle seguenti componenti carat-
teristiche:

• 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.

• Numero dei serventi


In un sistema di code deve essere noto il numero dei serventi che indichiamo Numero dei
con s. Infatti, in generale, vi possono essere uno o più serventi e nel caso in serventi s
cui vi sono più serventi è necessario distinguere se lavorano “in parallelo”
o “in serie”.

• 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.

• Capacità del sistema


Il valore massimo che può assumere la variabile associata al numero di
Capacità utenti presenti nel sistema si definisce capacità del sistema, e corrisponde
del sistema al numero massimo di utenti che possono essere contemporaneamente nel
sistema, comprendendo sia gli utenti in attesa in coda, sia quelli che stanno
fruendo del servizio.

• Disciplina della coda


La disciplina della coda specifica l’ordine rispetto al quale gli utenti vengono
Criteri serviti. Le più comunemente usate sono basate sui seguenti criteri: FIFO
FIFO, (“first in first out”)1 che corrisponde al servizio degli utenti nell’ordine in
LIFO, cui arrivano; LIFO (“last in first out”)2 che corrisponde a servire per primo
SIRO l’ultimo cliente arrivato; SIRO (“service in random order”) che consiste
nel servire gli utenti scegliendoli a caso; infine, possono esistere criteri di
priorità (PRI) che consistono nel classificare gli utenti in base a classi di
priorità, servendo per primi quelli della classe di priorità più alta.
Tempo in Indichiamo con tqi la variabile aleatoria rappresentante il tempo passato
coda tqi dall’i-esimo utente nella coda prima di iniziare ad usufruire del servizio.

1 Anche indicato con FCFS (“first came first served”)


2 Anche indicato con LCLS (“last came last served”)
GENERALITÀ 7

Il processo base che avviene in un sistema di code è il seguente: clienti che


richiedono un servizio sono generati nel tempo dalla popolazione, entrano nel
sistema e raggiungono la coda. Ad un certo momento, un cliente viene selezionato
dalla coda secondo la disciplina della coda. Il servizio richiesto è effettuato da un Tempo di
servente e successivamente a ciò il cliente lascia il sistema. Quindi se indichiamo permanenza
con twi il tempo passato complessivamente dall’i-esimo utente nel sistema si ha nel sistema
q
tw s
i = ti + ti . (1.1.1)

Rappresentazioni schematiche di sistemi di code sono riportati nella Figura 1.1.1


e nella Figura 1.1.2.

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

Naturalmente un servente non deve essere necessariamente un singolo individuo,


ma può essere costituito da un gruppo di persone che lavorano simultaneamente
per il cliente (si pensi, ad esempio, agli operai di un officina di riparazione che
lavorano contemporaneamente per effettuare riparazioni ad apparati in avaria).
Inoltre, i serventi non devono essere necessariamente delle persone: infatti, in
molti casi sono macchine, dispositivi elettronici, etc. Analogamente, un cliente
non deve essere necessariamente un individuo, ma può essere un articolo in attesa
di essere lavorato da una macchina oppure un automobile in attesa di essere
revisionata, etc.
Nel trattare la teoria delle code, un’assunzione che di solito viene fatta e che noi
assumeremo sempre soddisfatta riguarda il fatto che gli intertempi di arrivo tai
sono indipendenti e identicamente distribuiti e che anche i tempi di servizio tsi
sono indipendenti e identicamente distribuiti.

1.1.3 Notazione di Kendall

È stata definita una notazione per indicare sinteticamente le caratteristiche prin-


cipali di un sistema di servizio (o di code); la notazione, chiamata notazione di
Kendall, consiste in sigle separate dal simbolo /, del tipo

A/B/s/c/p/Z

dove

A rappresenta lo schema di arrivo, ovvero la distribuzione di probabilità degli


intertempi di arrivo;

B rappresenta lo schema di servizio, ovvero la distribuzione di probabilità dei


tempi di servizio;

s rappresenta il numero di serventi;

c rappresenta la capacità del sistema;

p rappresenta la dimensione della popolazione;

Z rappresenta la disciplina della coda.

Le ultime tre componenti possono non essere specificate, assumendo, i seguenti


valori di default: in mancanza della componente c si assume che la capacità
del sistema sia infinita; se non è specificata la componente p si assume che la
popolazione sia infinita; se non è presente la componente Z si assume che la
disciplina della coda sia FIFO.
Le componenti s, c e p sono numeri interi non negativi. Per quanto riguarda le
distribuzioni di probabilità dello schema di arrivo e di servizio, quelle che vengono
più frequentemente assunte sono la distribuzione esponenziale, la distribuzione
GENERALITÀ 9

costante (degenere) o tempi deterministici, la distribuzione di Erlang di ordine k.


Queste vengono indicate in termini delle componenti A e B, nel seguente modo:

M indica la distribuzione esponenziale;

D indica la distribuzione costante (degenere) o tempi deterministici;

Ek indica la distribuzione di Erlang di ordine k;

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

1.2 PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI

Le problematiche di interesse nello studio di un sistema di code riguardano le


prestazioni del sistema. In particolare, il gestore o il progettista di un sistema
di servizio vuole dimensionare il sistema in modo da ottimizzarne le prestazioni.
Naturalmente, ci sono due punti di vista: i clienti vorranno minimizzare i tempi
di attesa, mentre il gestore del sistema di servizio sarà interessato a sfruttare al
meglio le risorse del sistema stesso, cioè i serventi, in modo da minimizzare i suoi
costi o massimizzare i suoi profitti; da parte del gestore c’è comunque sempre
da prendere in considerazione il costo indiretto dovuto all’eventuale mancato
guadagno dovuto al fatto che, se i tempi di attesa sono troppo lunghi, gli utenti
potrebbero rinunciare al servizio e rivolgersi altrove.
Si è quindi interessati a determinare le distribuzioni di probabilità di alcune
variabili aleatorie che caratterizzano le prestazioni del sistema in relazione alla
coda di utenti che si forma. Una volta note queste distribuzioni si può risalire
ai costi che ne conseguono, ovvero il costo del personale e delle attrezzature del
sistema di servizio da parte del gestore o il costo del tempo passato in attesa da
parte dei clienti.
Salvo diversa specificazione, in presenza di più serventi, assumeremo sempre che
gli s serventi lavorino in parallelo.

1.2.1 Definizioni e notazioni standard

Introdurremo ora alcune definizioni e notazioni standard che vengono di solito


adottate nell’analisi delle prestazione di un sistema di code e che utilizzeremo nel
seguito.

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
λ
ρ= ,

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

Fig. 1.2.1 Schema degli arrivi dell’Esempio 1.2.1

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

1.2.2 Misure di prestazione

Nell’analisi di un sistema di servizio vengono prese in considerazione alcune


grandezze fondamentali come misure di prestazione. Nella maggior parte dei
casi di interesse si è interessati a valutare queste grandezze assumendo che il sis-
tema abbia raggiunto una situazione di regime e ciò avviene quando il sistema
è stato in funzione per un tempo sufficientemente grande. Infatti, quando un
sistema ha iniziato da poco ad essere operativo, lo stato del sistema sarà forte-
mente influenzato dallo stato iniziale e dal tempo che è trascorso dall’attivazione
Condizioni del sistema stesso. In questo caso il sistema è detto in condizioni transitorie.
transitorie Tuttavia, in molti casi, trascorso un tempo sufficientemente grande, il sistema
diviene indipendente dallo stato iniziale e si dice che il sistema ha raggiunto con-
Condizioni dizioni stazionarie o equilibrio (steady–state). Si osservi subito che questo non
stazionarie può accadere se risulta ρ ≥ 1 nel qual caso lo stato del sistema cresce indefiniti-
vamente nel tempo. Per un sistema in condizioni stazionarie la distribuzione di
probabilità dello stato del sistema rimane la stessa nel tempo.
La teoria delle code analizza principalmente sistemi in condizioni di stazionarietà;
il caso di sistema in condizioni transitorie è più difficile da analizzare analitica-
mente e, anche se esistono alcuni risultati validi in questo caso, essi non verrano
considerati. Per effettuare l’analisi di un sistema in condizioni di stazionarietà si
fa uso delle seguenti quantità fondamentali:
pk : probabilità che k utenti siano presenti nel sistema
N : numero medio degli utenti nel sistema
q
N : numero medio degli utenti nella coda
T : tempo medio passato da un utente nel sistema
q
T : tempo medio passato da un utente nella coda.

Esaminiamo, ora, come queste quantità possono essere definite formalmente,


chiarendo il loro significato.
Innanzitutto si osservi che nel definire le grandezze che caratterizzano i sistemi
di code, non si ha a che fare solamente con variabili aleatorie, ma con processi
stocastici in quanto è presente una dipendenza da un parametro. Ovvero, formal-
mente, {n(t)} e {nq (t)} sono processi stocastici a tempo continuo e le famiglie di
q
variabili aleatorie {tw
i } e {ti } sono processi stocastici a tempo discreto.
Inoltre, anche la probabilità che nel sistema siano presenti k utenti dipende dal
tempo, ovvero si deve definire pk (t) la probabilità che lo stato del sistema al
tempo t sia k. Ora, dalla definizione di valore atteso di una variabile aleatoria
discreta si ricava immediatamente

X
E(n(t)) = kpk (t) (1.2.1)
k=0
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 13


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

Fig. 1.2.2 Illustrazione di una coda

Ad ogni istante di tempo t, ovviamente risulta n(t) = a(t) − b(t). Relativamente


all’intervallo [0, t] possiamo considerare le seguenti medie temporali

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

Nt rappresenta la media di n(t) nell’intervallo [0, t]; Tt rappresenta il tempo medio


di permanenza di un utente nel sistema ottenuto come rapporto tra somma dei
tempi di permanenza di ciascun utente nel sistema e il numero totale a(t) di
utenti arrivati nel sistema al tempo t; λt rappresenta la frequenza media degli
arrivi, ovvero il numero di arrivi nell’unità di tempo.
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 15

La maggior parte dei sistemi a coda di interesse sono ergodici nel senso che vale
inoltre la seguente uguaglianza3

lim Nt = lim E(n(t)) (1.2.9)


t→∞ t→∞

con probabilità 1. Ovvero, per t sufficientemente grande, vale l’uguaglianza tra


la media temporale Nt e il valore atteso N . Analogamente, vale anche

lim Tt = lim E(tw


i ) (1.2.10)
t→∞ i→∞

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

lim Ntq = lim E(nq (t)) (1.2.11)


t→∞ t→∞

e analogamente a T nella (1.2.10) si può ottenere T q come

lim Ttq = lim E(tqi ), (1.2.12)


t→∞ i→∞

dove Ntq e Ttq sono definiti in maniera analoga a Nt e Tt .


Per quanto riguarda la frequenza media degli arrivi nell’intervallo [0, t] suppor-
remo che valga
E (a(t))
λ = lim λt = lim , (1.2.13)
t→∞ t→∞ t
avendo assunto che tali limiti esistano.

1.2.3 Relazioni fondamentali

Esistono importanti relazioni che legano le quantità , N , T e N q , T q in un sistema


di code in condizioni stazionarie. La prima relazione che analizziamo è uno dei
risultati più generali e utile della teoria delle code. È nota come teorema di Teorema di
Little dal nome di J. D. C. Little che per primo nel 1961 ne diede una formu- Little
lazione rigorosa. Successivamente ci sono stati numerosi tentativi di semplificare
la dimostrazione di questo risultato. Nel 1974 S. Stidham ne ha fornito una di-
mostrazione semplice e rigorosa in ipotesi del tutto generali. Tale risultato, anche
detto formula (o legge) di Little è il seguente:

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

Teorema 1.2.1 In un sistema a coda in condizioni stazionarie vale la seguente


relazione
N = λT (1.2.14)

Dimostrazione: Forniamo una giustificazione per via grafica di questa formula


assumendo che ogni cliente è servito nell’ordine in cui arriva (FIFO); una giusti-
ficazione simile può essere fornita nel caso generale in cui l’ordine dei servizi è
arbitrario (per ogni approfondimento si veda il paragrafo 5.2 di [Cooper, 1981]).
Consideriamo i diagrammi di a(t) (numero totale degli utenti arrivati nel sistema
al tempo t) e di b(t) (numero totale degli utenti serviti e quindi usciti dal sistema
al tempo t) riportati nella Figura 1.2.2 nell’intervallo prefissato [0, t]. L’area
racchiusa tra i due diagrammi è data da
Z t
n(τ )dτ (1.2.15)
0

o, equivalentemente da
b(t) a(t)
X X
tw
i + (t − ti ). (1.2.16)
i=1 i=b(t)+1

Quest’ultima espressione dell’area rappresenta anche la somma dei tempi di per-


manenza nel sistema di tutti gli utenti fino al tempo t dove il primo termine
considera i tempi degli utenti entrati e usciti dal sistema prima del tempo t, men-
tre il secondo termine considera i tempi degli utenti che al tempo t sono entrati
nel sistema ma non ancora usciti.
Uguagliando e dividendo per t la (1.2.15) e la (1.2.16) si ha
b(t) a(t)
Z t X X
tw
i + (t − ti )
n(τ )dτ i=1
0 i=b(t)+1
= . (1.2.17)
t t
Moltiplicando e dividendo per a(t) il secondo membro della (1.2.17) si ha
b(t) a(t)
Z t X X
tw
i + (t − ti )
n(τ )dτ
0 a(t) i=1 i=b(t)+1
= . (1.2.18)
t t a(t)
 
b(t) a(t) .
X X
Ora, definendo e
Tt =  tw (t − ti ) a(t), la (1.2.18) può essere
i +
i=1 i=b(t)+1
riscritta nella forma
Nt = λt Tet . (1.2.19)
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 17

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.

Ripetendo le considerazioni fatte nella dimostrazione del Teorema di Little, ma


sostituendo i diagrammi di a(t) e b(t) rispettivamente con i diagrammi che rap-
presentano il numero degli utenti che arrivano alla coda e il numero totale degli
utenti che escono dalla coda (e non dal sistema) si ottiene l’analoga relazione per
quanto riguarda la coda ovvero

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).

Le tre relazioni ora ottenute (1.2.14), (1.2.20), (1.2.21) costituiscono le relazioni


fondamentali tra le quantità N , T e N q , T q e sono del tutto generali, nel senso che
valgono per qualsiasi sistema di code senza alcuna ipotesi sulle sue caratteristiche.
Esse sono molto importanti perché permettono di determinare tutte le quattro
quantità fondamentali una volta nota una di esse.
Si osservi che poiché risulta
∞ ∞
à s−1
!
X X X
q
N = (k − s)pk = kpk − s 1 − pk , (1.2.22)
k=s k=s k=0

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 .

Proposizione 1.2.4 In un sistema a coda con un unico servente in condizioni


stazionarie vale la seguente relazione

ρ = 1 − p0 . (1.2.24)

Dimostrazione: Moltiplicando ambo i membri della (1.2.21) per λ si ha

λT = λT q + λ/µ,

che per le relazioni fondamentali equivale a

N = N q + ρ. (1.2.25)
PROBLEMATICHE DI INTERESSE E RELAZIONI FONDAMENTALI 19

Ora sostituendo il valore di N q dato dalla (1.2.23) nella (1.2.25) si ottiene la


(1.2.24).

La relazione (1.2.24) ha una interpretazione immediata; infatti, poiché p0 è la


probabilità che nel sistema non vi siano utenti e che quindi il servente è inoperoso,
il complemento ad 1 di p0 rappresenta l’operosità del servente.
Questi risultati, ed in particolare la formula di Little hanno una interpretazione
immediata in riferimento a casi molto semplici; ad esempio, il traffico cittadino
nelle ore di punta si muove più lentamente (ovvero T è grande) e le strade sono
più affollate (ovvero N è grande). Analogamente in un fast–food, (ovvero in un
sistema con T piccolo) le sale possono essere più piccole (ovvero N è piccolo) di
quelle di un ristorante tradizionale a parità di frequenza di arrivo dei clienti.
Esempio 1.2.5 Consideriamo un sistema di controllo di flusso di dati su rete che deve inviare
pacchetti supponendo che il tempo dell’acnowledgement sia trascurabile. Sulla rete devono
trovarsi N pacchetti quindi non appena il pacchetto i è arrivato a destinazione, il pacchetto
i + N è immediatamento introdotto nella rete. Poiché il numero di pacchetti nel sistema è
sempre N la formula di Little ci permette di affermare che la frequenza di arrivo dei pacchetti
nel sistema λ e il tempo medio di permanenza di un pacchetto nella rete sono collegati dalla
relazione N = λT . Quindi se nella rete c’è congestione e T aumenta, λ deve diminuire. Inoltre se
la rete è congestionata e in grado di consegnare solo λ pacchetti per unità di tempo, aumentando
N avrebbe come risultato solamente un aumento del tempo di permanenza nella rete T .

Si deve comunque prestare molta attenzione nell’applicare la formula di Little


ad alcuni casi particolari, alla luce di quanto riportato nella Osservazione 1.2.2.
Riportiamo di seguito un esempio in cui il sistema non raggiunge l’equilibrio.
Esempio 1.2.6 Un pacchetto arriva su un linea di trasmissione ogni k secondi (il primo pac-
chetto arriva al tempo 0). Tutti i pacchetti hanno stessa lunghezza e richiedono αk secondi
per la trasmissione con α < 1. Il tempo affinché un pacchetto arrivi a destinazione è pari a p
secondi. La frequenza di arrivo è λ = 1/k e poiché i pacchetti arrivano ad intervalli regolari, non
c’è tempo di attesa in coda quindi il tempo T che un pacchetto rimane nel sistema è T = αk + p.
Applicando la formula di Little si ottiene
p
N = λT = α + .
k
Questo esempio necessita di una corretta interpretazione in quanto nel sistema
descritto n(t) è una funzione deterministica del tempo t e non converge a nessun
valore, quindi non si raggiunge la condizione di equilibrio. Tuttavia, la formula
di Little può avere una valida interpretazione anche in questo caso, nel senso che
N non può essere inteso come nella (1.2.5), ma solamente come media temporale
Rt
n(τ )dτ
su tempi lunghi ovvero N = lim 0 .
t→∞ t
Concludiamo questo paragrafo soffermandoci sull’importanza di disporre dei va-
lori della probabilità pk per effettuare l’analisi di un sistema a coda. Infatti, Importante
conoscendo pk utilizzando le (1.2.1), (1.2.2), il Teorema di Little (1.2.14), la conoscere
(1.2.20) e la (1.2.21) si possono determinare tutte le grandezze che sono le misure pk
di prestazione del sistema.
20 TEORIA DELLE CODE

1.3 MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO

Da quanto visto nei precedenti paragrafi, emerge chiaramente come un sistema di


code sia caratterizzato fondamentalmente da due processi stocastici: il processo
degli arrivi caratterizzato dalla distribuzione di probabilità dei tempi di interar-
rivo e il processo di servizio caratterizzato dalla distribuzione di probabilità dei
tempi di servizio.
Per definire un sistema di code è necessario specificare entrambe le distribuzioni
ora menzionate. In un sistema reale queste distribuzioni possono assumere qual-
siasi forma e per formulare un modello basato su un sistema di code che rappre-
senti un sistema reale è necessario che le distribuzioni di probabilità assunte nella
costruzione del modello siano quanto più possibile realistiche. Al tempo stesso
esse devono essere sufficientemente semplici e matematicamente trattabili. Sulla
base di queste considerazioni la distribuzione di probabilità che maggiormente
viene presa in considerazione nella teoria delle code è la distribuzione esponen-
ziale. Cercheremo di chiarire i motivi di questa scelta attraverso l’illustrazione
delle proprietà di cui questa distribuzione gode. La principale riguarda la cosid-
detta “assenza di memoria”. Formalizzeremo questa proprietà mostrando anche
che la distribuzione esponenziale è l’unica distribuzione che gode di questa pro-
prietà. Per quanto riguarda l’applicazione alla teoria delle code, tale proprietà è
molto utile perché un arrivo in un sistema di code non è influenzato da quando si
è verificato l’ultimo arrivo e cosı̀ anche per il tempo di servizio, il tempo mancante
al completamento può essere indipendente da quando il servizio è iniziato.
Infine introdurremo il processo di Poisson, di fondamentale importanza per rap-
presentare il processo degli arrivi, descrivendo le sue proprietà fondamentali.

1.3.1 La distribuzione esponenziale e le sue proprietà

Ricordiamo innanzitutto che una variabile aleatoria continua T ha una distribu-


zione esponenziale con parametro α se la sua densità di probabilità fT (t) è data
da ½ −αt
αe per t ≥ 0
fT (t) =
0 per t < 0.
La funzione di distribuzione è
½
1 − e−αt per t ≥ 0
FT (t) = P (T ≤ t) =
0 per t < 0
e valore atteso e varianza sono date da
1 1
E(T ) = , V ar(T ) = .
α α2
Per comprendere bene quali implicazioni ha su un modello di code l’assunzione
che le distribuzioni dei tempi sono esponenziali, riportiamo alcune ben note pro-
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 21

prietà fondamentali della distribuzione esponenziale. Sia quindi T una variabile


aleatoria avente distribuzione esponenziale ed fT (t) la corrispondente densità di
probabilità.

Proprietà E1: La densità di probabilità fT (t) è una funzione strettamente


decrescente di t (t ≥ 0)

Questa proprietà discende immediatamente dalla definizione della fT (t). Una


immediata conseguenza di questa proprietà è che, per ogni ∆t > 0 e t > 0 risulta

P (0 ≤ T ≤ ∆t) > P (t ≤ T ≤ t + ∆t) . (1.3.1)


Z b
Questa conseguenza si ottiene ricordando che P (a ≤ T ≤ b) = fT (x)dx rap-
a
presenta l’area racchiusa tra l’asse delle ascisse e il grafico della fT (t).
La (1.3.1) può essere interpretata nel senso che è maggiore la probabilità che
la T assuma valori prossimi allo zero. In un modello di code, se T rappresenta
il tempo di servizio, il fatto che questa proprietà sia ragionevole dipende molto
dalla tipologia del servizio stesso. In alcuni casi, può essere vero che il tempo del
servizio è di solito molto breve con pochi casi in cui il servizio è più lungo.

Proprietà E2: Assenza di memoria. Per ogni t > 0 e s > 0, vale la


seguente uguaglianza
³ ¯ ´
¯
P T > s + t ¯ T > s = P (T > t) . (1.3.2)

Questa proprietà si ottiene facilmente ricordando che P (T > x) = 1 − FT (x) =


e−αx . Infatti, poché l’evento (T > s + t) implica l’evento (T > s) risulta
³ ¯ ´ P (T > s + t, T > s)
¯
P T >s+t ¯ T >s = =
P (T > s)
P (T > s + t)
= = e−αt = P (T > t). (1.3.3)
P (T > s)
Questa proprietà può essere interpretata come assenza di memoria nel senso che
se, ad esempio, il tempo di durata di un’apparecchiatura è distribuito esponen-
zialmente, allora un apparecchiatura che è già in uso da un certo numero di ore
è “buona” tanto quanto una nuova in termini di tempo totale di durata prima
della sua rottura, ovvero l’apparecchiatura “non ricorda” di essere stata già in
uso per un certo numero di ore.
22 TEORIA DELLE CODE

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

P (T > s + t) = P (T > s)P (T > t). (1.3.4)

Se ora introduciamo la funzione S(x) = P (T > x) = 1−FT (x), la (1.3.4) equivale


a scrivere
S(s + t) = S(s)S(t),
ovvero S(x) soddisfa l’equazione funzionale

g(x + y) = g(x)g(y). (1.3.5)

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.

Proprietà E3: Siano T1 , T2 , . . . , Tn variabili aleatorie indipendenti distri-


buite esponenzialmente con parametri α1 , α2 , . . . , αn . Sia U la variabile
aleatoria definita da U = min {T1 , T2 , . . . , Tn }. U è distribuita esponenzial-
n
X
mente con parametro α = αi .
i=1

Questa proprietà discende immediatamente dal fatto che per l’indipendenza vale
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 23

P (U > t) = P (T1 > t, T2 > t, . . . , Tn > t)


= P (T1 > t)P (T2 > t) · · · P (Tn > t)
= e−α1 t e−α2 t · · · e−αn t
Pn
= e− i=1
αi t
.

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µ.

Proprietà E4: Sia T una variabile aleatoria distribuita esponenzialmente di


parametro α. Per ogni t > 0 vale
³ ¯ ´
¯
P T ≤ t + ∆t ¯ T > t = α∆t + o(∆t)

dove o(∆t) indica un infinitesimo di ordine superiore a ∆t.

Questa proposizione si ottiene facilmente dal fatto che per ogni t ≥ 0 risulta

P (T ≤ t + ∆t|T > t) = 1 − P (T > t + ∆t|T > t) = 1 − P (T > ∆t) =


= P (T ≤ ∆t) = 1 − e−α∆t

e utilizzando lo sviluppo in serie dell’esponenziale si ha

P (T ≤ t + ∆t|T > t) = 1 − 1 + α∆t + o(∆t) = α∆t + o(∆t).

Quindi, in virtù di questa proprietà, per piccoli valori di ∆t, si ha


³ ¯ ´
¯
P T ≤ t + ∆t ¯ T > t ≈ α∆t.
24 TEORIA DELLE CODE

Interpretando T come tempo dall’ultimo evento (arrivo o completamento del


servizio) fino al prossimo evento, supponiamo che un tempo t sia già passato
senza che l’evento sia accaduto. Dalla Proprietà E2 sappiamo che la probabilità
che l’evento accadrà entro il prossimo intervallo di tempo di lunghezza fissata
∆t è una costante indipendentemente dal valore di t. La Proprietà E4 afferma
inoltre che quando il valore di ∆t è piccolo, questa probabilità costante può
essere approssimata da α∆t, ovvero questa probabilità è proporzionale a ∆t di
un fattore α.

Proprietà E5: Siano date k variabili aleatorie T1 , T2 , . . . , Tk indipendenti


aventi identica distribuzione esponenziale di parametro α. Allora la loro
somma
Sk = T1 + T2 + · · · + Tk
ha la seguente densità di probabilità

α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)!

Per quanto riguarda un sistema di code, la Proprietà E5 può essere interpretata


nel senso che se il servizio richiesto da un cliente richiede l’impiego di k serventi in
serie i cui tempi di servizio sono identicamente distribuiti esponenzialmente con
parametro α (oppure l’impiego dello stesso servente k volte), il tempo di servizio
totale seguirà la distribuzione della somma dei tempi servizio.
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 25

La distribuzione di probabilità avente per densità di probabilità la fSk si chiama


distribuzione di Erlang di parametri α e k che, ad eccezione della restrizione
dell’interezza di k, coincide con la distribuzione Gamma.

1.3.2 Il processo di Poisson

In questo paragrafo introduciamo il processo di Poisson che ha, in generale, una


grande importanza per due aspetti fondamentali: innanzitutto molti fenomeni
fisici possono essere rappresentati attraverso tale processo; inoltre, il processo di
Poisson gode di interessanti ed utili proprietà che consentono numerose semplifi-
cazioni nella trattazione analitica. In riferimento alla teoria delle code, il processo
di Poisson è un importante strumento per la modellizzazione dei processi di ar-
rivo. Prima di definire un processo di Poisson, introduciamo un concetto che
risulterà molto utile nel seguito.

Definizione 1.3.1 Un processo stocastico {X(t), t ≥ 0} è detto processo di


conteggio (counting process) se X(t) rappresenta il numero totale di eventi
che accadono fino all’istante t.

È un processo che “conta” il numero totale di aventi accaduti fino al tempo t. Si


tratta di un processo stocastico a tempo continuo e a stati discreti. Esempi di
processi di conteggio sono:

a) il numero delle persone entrate in un supermercato fino al tempo t

b) il numero di persone nate fino al tempo t

c) il numero di goal realizzati da un giocatore nella sua carriera fino al tempo t

Non è invece un processo di conteggio il numero delle persone presenti in un


supermercato al tempo t.
Si verifica immediatamente che per un processo di conteggio valgono le seguenti
proprietà:

1. X(t) ≥ 0 per ogni t ≥ 0

2. X(t) è a valori interi

3. se s ≤ t allora X(s) ≤ X(t)

4. per s < t, X(t)−X(s) è il numero degli eventi che sono accaduti nell’intervallo
(s, t).
26 TEORIA DELLE CODE

Riportiamo, di seguito, due definizioni che introducono due concetti caratteriz-


zanti un processo di conteggio.

Definizione 1.3.2 Un processo di conteggio ha incrementi indipendenti se


il numero degli eventi che accadono in intervalli di tempo disgiunti sono in-
dipendenti.

L’assunzione che un processo ha incrementi indipendenti è ragionevole per l’esem-


pio a), ma forse non lo è per l’esempio b) perché se X(t) è molto grande, il numero
di nascite tra t e t + ∆t tende ad essere grande. Nell’esempio c) potrebbe essere
ragionevole.

Definizione 1.3.3 Un processo di conteggio ha incrementi stazionari se la


distribuzione del numero degli eventi che accadono in un intervallo di tempo
dipende solo dall’ampiezza dell’intervallo.

Quindi un processo ha incrementi stazionari se il numero degli eventi nell’intervallo


(t, t + ∆t) ha la stessa distribuzione per ogni t > 0.
L’assunzione che un processo ha incrementi stazionari sarebbe ragionevole nell’e-
sempio a) solo se non ci fossero orari di punta con maggiore afflusso. Nell’esempio
b) sarebbe ragionevole solamente se la popolazione della terra fosse costante,
mentre nell’esempio c) non è ragionevole perché il giocatore invecchia col passare
degli anni !

Definizione 1.3.4 Un processo di conteggio {X(t), t ≥ 0} è un processo di


Poisson di tasso λ > 0 se valgono

i) X(0) = 0

ii) il processo ha incrementi indipendenti

iii) il numero di eventi che accadono in ogni intervallo di tempo di ampiezza


t (dato da X(s + t) − X(s) ) ha distribuzione di Poisson di parametro
λt, ovvero per ogni s, t ≥ 0 risulta
(λt)n
P (X(s + t) − X(s) = n) = e−λt , n = 0, 1, . . . (1.3.6)
n!

Ovviamente la iii) implica che un processo di Poisson ha incrementi stazionari ed


inoltre vale E (X(t)) = λt e questa è la ragione per cui λ è anche detta frequenza
media alla quale gli eventi accadono.
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 27

Riportiamo di seguito una definizione equivalente di processo di Poisson che può


risultare più agevole da applicare in alcuni casi.

Definizione 1.3.5 Un processo di conteggio X(t) è un processo di Poisson


se e solo se per ogni t ≥ 0 valgono

i) X(0) = 0

ii) il processo ha incrementi indipendenti

iii) P (X(t + ∆t) − X(t) = 1) = λ∆t + o(∆t)

iv) P (X(t + ∆t) − X(t) ≥ 2) = o(∆t)

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 ,

si ha che Sn rappresenta il tempo necessario affinché l’evento n–esimo accada


(dove, convenzionalmente, si pone S0 = 0).
Torniamo ora a considerare il processo {X(t), t ≥ 0} del numero degli eventi che
accadono nell’intervallo [0,t]. In termini di Sn , esso può essere scritto come

X(t) = max{n | Sn ≤ t}, (1.3.8)

ed inoltre valgono le seguenti coincidenze tra eventi:

{X(t) ≥ n} = {Sn ≤ t}
28 TEORIA DELLE CODE

ed inoltre

{X(t) = n} = {X(t) ≥ n} ∩ {X(t) < n + 1} = {Sn ≤ t} ∩ {Sn+1 > t}.

Teorema 1.3.1 Sono equivalenti le seguenti affermazioni:

i) il processo {X(t), t ≥ 0} definito in (1.3.8) è un processo di Poisson


di tasso λ.

ii) le variabili Ti definite in (1.3.7) sono indipendenti, identicamente di-


stribuite con distribuzione esponenziale di parametro λ, ovvero

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].

In virtù di questo risultato, poiché le Ti sono variabili aleatorie indipendenti,


identicamente distribuite con distribuzione esponenziale, abbiamo già dimostrato
(cfr. Proprietà E5) che Sn ha distribuzione di Erlang di parametri λ e n.

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.

Il Teorema 1.3.1 evidenzia l’importante equivalenza tra il fatto che il numero di


punti che cadono in un intervallo prefissato di lunghezza t ha distribuzione di
Poisson e il fatto che le lunghezze degli intervalli che separano punti contigui
hanno identica distribuzione esponenziale. Questa proprietà è particolarmente
utile per descrivere il comportamento probabilistico degli arrivi in un sistema
di code quando gli intertempi di arrivo sono distribuiti esponenzialmente con
parametro λ. In questo caso X(t) rappresenta il numero di arrivi fino al tempo t,
dove λ è la frequenza media degli arrivi. Perciò, nel caso di tempi di interarrivo
Arrivi esponenziali, si dice anche che si hanno arrivi secondo un processo di Poisson di
poissoniani parametro λ (arrivi poissoniani).
Si può ragionare in maniera analoga per quanto riguarda i tempi di servizio,
definendo X(t) come il numero dei servizi portati a termine in un tempo t.
MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 29

Analizziamo ora un’ulteriore proprietà del processo di Poisson importante nell’am-


bito della teoria delle code. Sia {X(t), t ≥ 0} un processo di Poisson di parametro
λ e supponiamo che ogni evento che accade possa essere classificato di tipo A o
di tipo B. Supponiamo inoltre che ciascun evento sia di tipo A con probabilità p
e di tipo B con probabilità 1 − p, indipendentemente da tutti gli altri eventi. Ad
esempio i clienti che arrivano in un negozio possono essere classificati in uomini
con probabilità 21 e donne con probabilità 12 . Si indichi con XA (t) e con XB (t)
rispettivamente il numero degli eventi di tipo A e di tipo B che accadono in [0, t]
(ovviamente risulta X(t) = XA (t) + XB (t) ). Il processo X(t) prende nome di
processo aggregato e i due processi XA (t) e XB (t) prendono nome di processi
componenti o processi disaggregati. Questo si generalizza ad un numero finito di
processi componenti. Infatti, sia {X(t), t ≥ 0} un processo di Poison di tasso λ.
Supponiamo di classificare ogni evento come evento di tipo 1, 2, . . . , k con pro-
P
babilità rispettivamente p1 , p2 , . . . , pk , con ki=1 pi = 1. Siano X1 (t), . . . , Xk (t)
i processi componenti che contano il numero di eventi rispettivamente di classe
1, 2, . . . , k accaduti fino al tempo t. Allora vale la seguente proposizione.

Proposizione 1.3.6 Se {X(t), t ≥ 0} è un processo di Poisson, allora i pro-


cessi componenti X1 (t), . . . , Xk (t) sono processi di Poisson di tasso rispetti-
vamente λ1 = λp1 , λ2 = λp2 , . . . , λk = λpk . Inoltre i processi componenti
sono indipendenti.

Si verifica, inoltre facilmente che se X1 (t), . . . , Xk (t) sono processi di Poisson


indipendenti di tasso rispettivamente λ1 , . . . , λk , aggregati in un unico processo

X(t) = X1 (t) + . . . + Xk (t),

si ha che X(t) è un processo di Poisson di tasso λ = λ1 + · · · + λk .


Nell’ambito della teoria delle code il risultato della Proposizione 1.3.6 può essere
cosı̀ interpretata: supponiamo che ci siano un certo numero r di differenti tipi di
clienti tali che i clienti di ciascun tipo arrivano secondo un processo di Poisson
di parametro λi , (i = 1, . . . , r). Assumendo che i processi siano indipendenti, la
proprietà afferma che il processo di arrivo aggregato, ovvero il processo di arrivo
di tutti i clienti senza tener conto del tipo, è ancora un processo di Poisson di
r
X
parametro λ = λi .
i=1

Osservazione 1.3.7 Il risultato della Proposizione 1.3.6 ha la seguente impor-


tante applicazione nello studio dei sistemi di code. Supponiamo che i clienti
arrivano al sistema di code secondo un processo di Poisson di parametro λ e che
30 TEORIA DELLE CODE

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.

1.3.3 Altri modelli per processi di arrivo

Abbiamo visto come il modello poissoniano sia adatto a rappresentare il pro-


cesso degli arrivi in un sistema di code. Infatti, in molti casi, esso costituisce un
modello molto aderente alla realtà. Tuttavia, esistono casi in cui il modello pois-
soniano non può essere adottato ed è necessario considerare anche altre tipologie
di processi di arrivi. Ricordiamo infatti, le caratteristiche che vengono assunte
considerando il modello poissoniano:

1. gli utenti arrivano al sistema uno alla volta,

2. il processo ha incrementi indipendenti,

3. il proceso ha incrementi stazionari.

La prima proprietà esclude ovviamente gli arrivi in gruppi. La seconda proprietà


afferma che il numero degli arrivi nell’intervallo (t, t+s] è indipendente dal numero
di arrivi prima di t e anche dai tempi in cui questi arrivi si sono verificati; questa
proprietà potrebbe essere violata se, ad esempio, un numero molto elevato di
arrivi nell’intervallo di tempo [0, t] può causare il fenomeno di “balking”, ovvero
la rinuncia all’ingresso nel sistema da parte di alcuni utenti nell’intervallo di
tempo (t, t + s] perché il sistema è molto affollato. Per affrontare tale problema,
in realtà, è sufficiente applicare il risultato della Proposizione 1.3.6 come descritto
nell’Osservazione 1.3.7.
Anche la terza proprietà potrebbe essere in generale violata perché essa implica
che la frequenza degli arrivi non dipende dal tempo t, e quindi, ad esempio,
dall’orario della giornata; invece, in molti casi, è noto che la frequenza media
degli arrivi λ può variare con il tempo e quindi si può avere λ = λ(t).
Queste considerazioni ci portano a considerare altri modelli per i processi di arrivi:

• il processo di Poisson non stazionario, ovvero un processo di Poisson in cui


il parametro λ varia al variare del tempo t;

• il processo di Poisson composto, ovvero arrivi in gruppi (batch).


MODELLI STOCASTICI DEI PROCESSI DI ARRIVO E DI SERVIZIO 31

Il processo di Poisson non stazionario


In molti sistemi reali la frequenza media degli arrivi può dipendere dal tempo e
in questo caso i tempi di interarrivo Tk non sono identicamente distribuiti. Un
modello comunemente utilizzato in queste situazioni è il cosiddetto processo di
Poisson non stazionario o processo di Poisson non omogeneo.

Definizione 1.3.8 Processo di Poisson non stazionario


Un processo di conteggio X(t) è un processo di Poisson non stazionario se e
solo se per ogni t ≥ 0 valgono

i) X(0) = 0

ii) il processo ha incrementi indipendenti

iii) P (X(t + ∆t) − X(t) = 1) = λ(t)∆t + o(∆t)

iv) P (X(t + ∆t) − X(t) ≥ 2) = o(∆t)

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.

Teorema 1.3.2 Sia {X(t), t ≥ 0} un processo di Poisson non stazionario.


Allora risulta
[b(s, t)]n
P (X(s + t) − X(s) = n) = e−b(s,t) , n = 0, 1, . . .
n!
R s+t
dove b(s, t) = Λ(s + t) − Λ(s) = s λ(y)dy.

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

Il processo di Poisson composto (arrivi in gruppi)


In alcuni sistemi reali gli utenti possono arrivare in gruppi e non uno alla volta.
Per trattare questo caso è sufficiente definire X(t) come il numero dei gruppi di
utenti che arrivano fino al tempo t. Se i tempi di interarrivo dei gruppi sono
variabili aleatorie indipendenti identicamente distribuite secondo la distribuzione
esponenziale, si può anche in questa situazione utilizzare un modello Poissoniano
cercando poi una distribuzione discreta che rappresenti la dimensione dei gruppi.
Si assume cosı̀ che i gruppi arrivano secondo un processo di Poisson e che il numero
degli utenti in ciascun gruppo è una variabile aleatoria discreta. Formalmente si
definisce Y (t) come il numero totale di utenti individuali arrivati fino al tempo t
e gi il numero degli utenti che fanno parte dell’i-esimo gruppo e si ha
X(t)
X
Y (t) = gi , t ≥ 0.
i=1
PROCESSI DI NASCITA E MORTE 33

1.4 PROCESSI DI NASCITA E MORTE

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.

1.4.1 Caratterizzazione dei processi di nascita e morte

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

Definizione 1.4.1 Processo di nascita e morte


Un processo stocastico N (t) che assume solamente valori interi non negativi
si dice processo di nascita e morte se le probabilità di transizione pn,m (∆t)
non dipendono esplicitamente dal tempo t, dipendono solo dal valore dello
stato al tempo t e non dai valori assunti in istanti precedenti e soddisfano le
seguenti condizioni:

pn,n+1 (∆t) = λn ∆t + o(∆t) per n≥0


pn,n−1 (∆t) = µn ∆t + o(∆t) per n≥1 (1.4.1)
pn,m (∆t) = o(∆t) per |m − n| ≥ 2

dove λn ≥ 0, µn ≥ 0 e o(∆t) è un infinitesimo di ordine superiore a ∆t.

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

Fig. 1.4.1 Diagramma di transizione di stato di un processo di nascita e morte

Analizziamo, ora, un esempio molto semplice di processo di nascita e morte.

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

Un importante esempio di processo di nascita e morte è dato dal processo di


Poisson. Infatti, si verifica facilmente il seguente risultato.

Proposizione 1.4.3 Un processo di sole nascite (µn = 0 per ogni n) con


coefficiente di natalità λn = λ costante (non dipendente dallo stato) è un
processo di Poisson.

Dimostrazione: Sia Ti una variabile aleatoria che rappresenta il tempo pas-


sato nello stato i-esimo da un processo a tempo continuo con spazio degli stati
discreto che gode della proprietà di Markov (catena di Markov). Per la pro-
prietà di Markov, il comportamento futuro del processo dipende solamente dalla
conoscenza dello stato corrente e non dagli stati passati. In particolare, il pro-
cesso non è influenzato dall’ammontare di tempo che esso è rimasto nello stato
corrente. In altre parole, il tempo residuo di permanenza nello stato i-esimo deve
avere una distribuzione che dipende solamente da i e non da quanto tempo il pro-
cesso è già rimasto nello stato i. Quindi possiamo scrivere che la probabilità che
36 TEORIA DELLE CODE

Ti > s + t condizionata al fatto che Ti > s è funzione del solo tempo aggiuntivo
t e non del tempo passato s, ovvero

P (Ti > s + t | Ti > s) = f (t),

per una opportuna f funzione della sola t. Si ha quindi


P (Ti > s + t , Ti > s) P (Ti > s + t)
f (t) = P (Ti > s + t | Ti > s) = = .
P (Ti > s) P (Ti > s)
Si ottiene, quindi
P (Ti > s + t) = P (Ti > s) f (t). (1.4.2)
Sapendo che P (Ti > 0) = 1, ponendo s = 0 nella (1.4.2) si ricava f (t) =
P (Ti > t). Sostituendo il valore ora ottenuto per la f (t) nella (1.4.2) si ha

P (Ti > s + t) = P (Ti > s) P (Ti > t)

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, i processi di Poisson sono un sottoinsieme dei processi di sole nascita


(quelli a tasso di nascita costante) che a loro volta sono un sottoinsieme dei
processi di nascita e morte. Questi ultimi, naturalmente sono un sottoinsieme
dei processi che godono della proprietà di Markov. I processi di Poisson risultano,
pertanto, quelli che “assommano” le proprietà di ciascuno dei processi stocastici
menzionati. Di qui la loro grande importanza e utilizzazione.
PROCESSI DI NASCITA E MORTE 37

1.4.2 Le equazioni di Kolmogorov e la soluzione stazionaria

Dato un processo di nascita e morte, note le probabilità di transizione pn,m (∆t)


per tutti i valori di n, m, è possibile calcolare le probabilità pn (t). Il procedimento
passa per la soluzione di un sistema di equazioni differenziali che però nello studio
della distribuzione stazionaria si riduce ad un sistema algebrico.
Infatti, applicando il teorema della probabilità totale si può esprimere la pn (t+∆t)
nel seguente modo:
³ ´
pn (t + ∆t) = P N (t + ∆t) = n =

X ³ ¯ ´ ³ ´
¯
= P N (t + ∆t) = n ¯ N (t) = i P N (t) = i =
i=0

X
= pi,n (∆t)pi (t)
i=0

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

pn (t + ∆t) − pn (t) o(∆t)


= λn−1 pn−1 (t) + µn+1 pn+1 − (λn + µn )pn (t) + . (1.4.3)
∆t ∆t

Analogamente per n = 0 si ha

p0 (t + ∆t) = p0,0 (∆t)p0 (t) + p1,0 (∆t)p1 (t) + o(∆t) =


= (1 − λ0 ∆t)p0 (t) + µ1 ∆t p1 (t) + o(∆t)

da cui
p0 (t + ∆t) − p0 (t) o(∆t)
= µ1 p1 (t) − λ0 p0 (t) + . (1.4.4)
∆t ∆t

Passando al limite per ∆t → 0 nella (1.4.3) e nella (1.4.4) si ha


 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

che è un sistema di equazioni differenziali. Le equazioni (1.4.5) prendono nome


di equazioni di Kolmogorov e descrivono come le probabilità dei diversi stati Equazioni
evolvono nel tempo per un processo di nascita e morte. Si osservi che le (1.4.5) di Kolmogo-
costituiscono un sistema tridiagonale che, in linea di principio, potrebbe essere rov
risolto e fornirci i valori delle pn (t). Tuttavia, notando anche che le equazioni
presenti nel sistema sono un numero infinito si possono comprendere le difficoltà
teoriche e pratiche nella loro soluzione. Non tratteremo delle questioni riguardanti
esistenza e unicità delle soluzioni di tale sistema per le quali rimandiamo alla let-
teratura specifica, ma ci limiteremo ad alcune considerazioni che ci sono sufficienti
all’interno del contesto della teoria delle code che stiamo trattando. Osserviamo
solo che il sistema (1.4.5) potrà essere risolto note le condizioni iniziali date dalle
probabilità pn (0), n = 0, 1, . . . , tenendo conto che, ovviamente, deve risultare
P∞
n=1 pn (0) = 1. In particolare, se lo stato iniziale è noto con certezza ed è pari a
k > 0, ovvero N (0) = k, si ha pk (0) = 1 e pn (0) = 0 per ogni n 6= k. Ricordiamo
tuttavia che l’interesse principale nello studio di un sistema, ed in particolare
di un sistema a coda, riguarda il comportamento all’equilibrio, ovvero lo stato
stazionario (steady-state). Per un processo di nascita e morte, si dice che esso
Distribu- ammette una distribuzione stazionaria se esistono i limiti5
zione
lim pn (t) = pn , n = 0, 1, . . .
stazionaria t→∞

indipendentemente dai valori iniziali pn (0), n = 0, 1, . . ., essendo naturalmente


P∞
n=0 pn = 1. Si noti che assumere che esista la distribuzione stazionaria non è
un’ipotesi limitativa, in quanto, come abbiamo già avuto modo di osservare, in
molti casi pratici, è sufficiente limitarsi a valutare la distribuzione stazionaria pn
piuttosto che la probabilità pn (t), assumendo che il sistema è stato in funzione
per un tempo sufficientemente grande. Naturalmente ciò è vero a patto che
le condizioni operative del sistema non variano nel tempo, ipotesi questa che
corrisponde a quella già fatta, che le probabilità di transizione pn,m (∆t) siano
indipendenti da t. Per un sistema che ammette una distribuzione stazionaria la
probabilità pn può essere interpretata come proporzione di tempo in cui il sistema
è nello stato n.
A questo punto ci sono due vie per determinare la distribuzione stazionaria:
1. risolvere il sistema di equazioni differenziali con opportune condizioni ini-
ziali per ottenere pn (t) e poi calcolare i limiti limt→∞ pn (t) = pn ;
2. prendere il limite per t → ∞ ad ambo i membri di ciascuna delle equazioni
differenziali (1.4.5) sapendo che limt→∞ pn (t) = pn e imponendo che, per la
stazionarietà, valga limt→∞ dpdt
n (t)
= 0 (questo perché per la stazionarietà
per t → ∞ le pn (t) tendono a valori costanti) e sapendo inoltre che deve

5 La proprietà che garantisce l’esistenza delle probabilità a regime pn si chiama ergodicità.


PROCESSI DI NASCITA E MORTE 39

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

λn−1 pn−1 − (λn + µn ) pn + µn+1 pn+1 = 0, n≥1 (1.4.6)


µ1 p1 − λ0 p0 = 0. (1.4.7)

ottenuto dalle (1.4.5) passando al limite per t → ∞ in entrambi i membri di


ciascuna equazione. Esplicitando le equazioni di questo sistema si hanno

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
.. .. ..
. . .

Queste equazioni possono essere interpretate in modo molto intuitivo osservando


la Figura 1.4.1. Essa può essere vista come un grafo dove ogni nodo rappresenta
uno stato e gli archi rappresentano le transizioni possibili. Per ogni nodo k, del
diagramma di transizione di stato, la quantità λk−1 pk−1 + µk+1 pk+1 può essere
visto come “tasso di flusso entrante” nello stato k e la quantità (λk + µk ) pk come
“tasso di flusso uscente”. Alla luce di questa interpretazione, ciascuna equazione
del sistema rappresenta, per ogni stato, una equazione di bilancio, ovvero uguaglia
il “flusso entrante” e il “flusso uscente”. Più precisamente, le equazioni di bilancio
esprimono l’uguaglianza tra il tasso con cui il processo lascia uno stato e il tasso
con cui il processo entra nello stato. In particolare, consideriamo lo stato n = 0:
quando il sistema è allo stato 0, esso può lasciare questo stato solo a causa di
una nascita (perché il sistema è vuoto); ora, poiché λ0 è il coefficiente di natalità
e poiché p0 può essere vista come frazione di tempo durante la quale ci sono 0
utenti nel sistema, si ha che il processo lascia lo stato 0 con tasso λ0 p0 . D’altra
parte, lo stato 0 può essere solo raggiunto dallo stato 1 per una morte e siccome
il coefficiente di mortalità è µ1 e la frazione di tempo che il sistema contiene
esattamente un utente è p1 , si ha che il tasso al quale il sistema entra nello stato
0 è µ1 p1 e quindi si ottiene la prima delle equazioni di bilancio.
Consideriamo ora lo stato 1: il processo può lasciare lo stato 1 per una nascita
40 TEORIA DELLE CODE

(con coefficiente di natalità λ1 ) o una morte (con coefficiente di mortalità µ1 ).


Poiché la frazione di tempo che il processo è nello stato 1 è p1 , il tasso al quale
il processo lascia lo stato 1 è (λ1 + µ1 )p1 . D’altra parte, il processo può arrivare
allo stato 1 dallo stato 0 per una nascita (con coefficiente di natalità λ0 ) o una
morte (con coefficiente di mortalità µ2 ) e quindi il tasso al quale il processo arriva
allo stato 1 è λ0 p0 + µ2 p2 , che è la seconda equazione di bilancio. Ragionando
analogamente si ottengono tutte le equazioni di bilancio.
Passiamo ora alla soluzione del sistema formato dalle equazioni di bilancio. Tale
soluzione è molto semplice e si può ottenere iterativamente nel seguente modo:
innanzitutto ricordiamo che vale la (1.4.7), ovvero
µ1 p1 − λ0 p0 = 0 (1.4.8)
che, la (1.4.6) riscritta nella forma
µn+1 pn+1 − λn pn = µn pn − λn−1 pn−1 , (1.4.9)
permette di ottenere iterativamente
µ2 p2 − λ1 p1 = µ1 p1 − λ0 p0 = 0
µ3 p3 − λ2 p2 = µ2 p2 − λ1 p1 = 0
µ4 p4 − λ3 p3 = µ3 p3 − λ2 p2 = 0
µ5 p5 − λ4 p4 = µ4 p4 − λ3 p3 =0
.. ..
. .
dalle quali si ottiene immediatamente
λ0
p1 = p0
µ1
λ1 λ1 λ0
p2 = p1 = p0
µ2 µ2 µ1
λ2 λ2 λ1 λ0
p3 = p2 = p0
µ3 µ3 µ2 µ1
..
.
λk−1 λk−1 λk−2 · · · λ1 λ0
pk = pk−1 = p0
µk µk µk−1 · · · µ2 µ1
..
.

ovvero, per un generico stato n ≥ 1 si ha


n−1
Y
λi
i=0
pn = n p0
Y
µj
j=1
PROCESSI DI NASCITA E MORTE 41

che è l’espressione che fornisce pn in funzione di p0 . Inoltre poiché deve risultare



X
pn + p0 = 1, si può ricavare p0 sostituendo l’espressione della pn :
n=1

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

Naturalmente è necessario assumere che la serie al denominatore della (1.4.10)


sia convergente ovvero
n−1
Y

λi
X i=0
n < ∞. (1.4.12)
Y
n=1 µj
j=1

Questa assunzione costituisce una condizione di esistenza dello stato stazionario.


Infatti se la serie nella (1.4.12) fosse infinita, allora si avrebbe pn = 0 per ogni n
finito, e quindi, parlando informalmente, possiamo dire che lo stato del processo
42 TEORIA DELLE CODE

cresce indefinitivamente e non si raggiunge mai l’equilibrio, ovvero non esiste una
distribuzione stazionaria.
Possiamo riassumere quanto ora ottenuto nel seguente teorema:

Teorema 1.4.1 Si consideri un processo di nascita e morte con coefficienti di


natalità λi ≥ 0, (i = 0, 1, . . .) e coefficienti di mortalità µj ≥ 0, (j = 1, 2, . . .).
Sia  

X n−1
Y .Y
n
S =1+  λi µj  .
n=1 i=0 j=1

Se S < ∞ allora


 1/S per n=0


 
pn = n−1
Y .Y
n



 λi µj  p0 per n≥1

i=0 j=1

Per ogni approfondimento su queste tematiche si veda [Kleinrock, 1975] e [Cooper,


1981].

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

Processi di Un altro esempio semplice di processo di nascita e morte è un processo di sole


sole morti morti (λn = 0 per ogni n) con coefficiente di mortalità µn = µ costante. In modo
analogo a quanto abbiamo appena fatto nel caso dei processi di sole nascite, si
possono riscrivere le equazioni di Kolmogorov particolarizzate a questo caso par-
ticolare. Per fare ciò, supponiamo che inizialmente vi siano k utenti nel sistema.
Poiché si tratta di un processo di sole morti, non potranno mai essere nel sistema
più di k utenti, ovvero dovrà risultare pn (t) = 0 per n > k. In questo caso le
equazioni di Kolmogorov (1.4.5) diventano


 dpk (t)

 = −µpk (t)

 dt

dpn (t)
= µpn+1 (t) − µpn (t) per 1≤n≤k−1 (1.4.15)

 dt



 dp (t)
 0 = µp1 (t)
dt
Osserviamo subito che, a differenza del caso di processi di sole nascite, queste
equazioni sono un numero finito. Poiché abbiamo assunto che inizialmente nel
sistema ci sono k utenti, si ha pk (0) = 1 e pn (0) = 0 per n 6= k. Si verifica
direttamente che sotto queste ipotesi il sistema (1.4.15) ammette soluzione

(µ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)!

che è una distribuzione di Poisson troncata.

Riportiamo, di seguito, alcuni esempi di applicazione dei processi di naascita e


morte.

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

p0 = 1/4 e dalla (1.4.11) i valori


1
p1 = p0 =
4
1
p2 = p0 =
4
1 1
p3 = p0 =
2 8
1 1
p4 = p0 =
4 16
..
.
³ ´n−2
1
pn = p0 , n ≥ 2.
2
Ora, volendo, ad esempio, determinare la proporzione di tempo che il proprietario passa in
media alla cassa, sarà sufficiente calcolare la probabilità che nel negozio vi siano più di 3 clienti
ovvero
X∞
1
pn = 1 − (p0 + p1 + p2 ) = .
4
n=3

Esempio 1.4.5 Si consideri un processo di nascita e morte con i seguenti coefficienti di


natalità e mortalità:
(
λ, 0≤n≤K
λn =
3λ, n>K

µ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

• Caso b): n > K + 1. In questo caso si ha

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
µ

¶n
= +
Yn
µ 3K+1 µ
n=1 n=1 n=K+2
µj
j=1
PROCESSI DI NASCITA E MORTE 45


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−
µ µ

1.4.3 Sistemi di code e processi di nascita e morte

I processi di nascita e morte permettono di studiare il comportamento di un


sistema di code. È sufficiente interpretare l’arrivo di un utente come una “nascita”
e l’uscita di un utente dal sistema dopo aver ottenuto il servizio una “morte”.
In particolare, il modello più semplice corrisponde ad un caso particolare di
grande interesse che ricorre frequentemente nei sistemi di code. Si tratta di un
processo di nascita e morte con coefficiente di natalità costante pari a λ e coeffi-
ciente di mortalità costante pari a µ, ovvero entrambi i coefficienti sono costanti
non dipendenti da n. Si vede facilmente che questa situazione corrisponde al
modello di coda M/M/1 (che analizzeremo in dettaglio più avanti). Infatti, ap-
plicando il Teorema 1.3.1, affermare che i tempi di interarrivo sono esponenziali
equivale ad avere arrivi secondo un processo di Poisson (arrivi poissoniani) di
tasso λ. Analogamente, essendo il coefficiente di mortalità costante, si ha che
il tempo tra due morti consecutive è distribuito esponenzialmente. Ora, poiché
le morti corrispondono agli istanti di fine del servizio, avere tasso di mortalità
costante corrisponde ad avere i tempi di servizio esponenziali, ovvero si tratta del
modello M/M/1.
Nei prossimi paragrafi studieremo le varie tipologie di sistemi di code attraverso
l’utilizzo dei processi di nascita e morte. Ribadiamo il fatto che tale studio
riguarderà il comportamento all’equilibrio di un sistema di code, soffermandoci
con particolare attenzione alla valutazione delle misure di prestazione.
46 TEORIA DELLE CODE

1.5 SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE

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

Lo scopo sarà quindi quello di determinare la distribuzione stazionaria utilizzando


gli strumenti forniti dalla teoria dei processi di nascita e morte che abbiamo visto,
ed in particolare, il Teorema 1.4.1. Ovvero, si vuole determinare pn , per n ≥ 0,
nella forma  Ã !
 . X ∞

 1 1 + Πk per n = 0


k=1
pn = (1.5.3)





Πn p0 per n ≥ 1
avendo definito
n−1
Y
λi
i=0
Πn = n n ≥ 1. (1.5.4)
Y
µj
j=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

Determinato questo valore di λ è possibile applicare il teorema di Little (1.2.14)


e la (1.2.20) per ottenere

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.

1.5.1 Sistemi con arrivi poissoniani: proprietà PASTA

Supponiamo che un sistema di code sia caratterizzato da arrivi che seguono un


processo di Poisson. Tale sistema gode di una importante proprietà detta Poisson Proprietà
Arrivals See Times Average (PASTA) che informalmente può essere cosı̀ sinte- PASTA
tizzata: gli utenti che arrivano nel sistema di code trovano, in media, nel sistema
la stessa situazione che vedrebbe un osservatore esterno al sistema che osserva il
sistema in un momento arbitrario nel tempo. Formalmente, definiamo

ak (t) = P {un utente che arriva al tempo t trova il sistema nello stato k}.

In generale, risulterà ak (t) 6= pk (t) in quanto l’evento

{un utente che arriva al tempo t trova il sistema nello stato k}

e l’evento

{lo stato del sistema in un generico istante t è pari a k}

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

Proposizione 1.5.1 Proprietà PASTA


Sia dato un sistema a coda con arrivi poissoniani. Allora la probabilità che
un utente che arriva nel sistema al tempo t trova il sistema allo stato k (cioè
con k utenti presenti) è uguale alla probabilità che il sistema sia allo stato k
al tempo t, ovvero
ak (t) = pk (t).

Dimostrazione: Per dimostrare questo risultato, sia {X(t), t ≥ 0} il processo


di Poisson degli arrivi, ovvero il processo di sole nascite che descrive gli arrivi
al sistema a coda. Allora se N (t) è il numero degli utenti presenti nel sistema
al tempo t e pk (t) = P (N (t) = k), per le probabilità composte e utilizzando la
Definizione 1.3.5 di processo di Poisson, si ha

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)

Una giustificazione intuitiva di questa proprietà è la seguente: se di un arbitrario


arrivo secondo Poisson conoscessimo l’istante di tempo al quale esso è avvenuto, la
distribuzione condizionata di ciò che l’utente in arrivo vede all’arrivo nel sistema
è uguale alla distribuzione non condizionata dello stato del sistema al tempo t.
Ma sapere che un arrivo c’è stato al tempo t non fornisce alcuna informazione su
che cosa è accaduto prima del tempo t, in quanto, avendo il processo di Poisson
incrementi indipendenti, sapere che un evento è accaduto ad un certo tempo t
non influenza la distribuzione di ciò che è accaduto prima del tempo t. Quindi
un utente in arrivo vedrebbe solamente il sistema secondo la probabilità pn (t).
Si osservi che la proprietà PASTA non è vera in generale; infatti se si considera
un sistema di code del tipo D/D/1 con queste caratteristiche: il sistema è vuoto
al tempo t = 0 e gli arrivi si verificano agli istanti t = 1, t = 3, t = 5, t = 7, . . .
e il tempo di servizio è pari a 1. Allora ogni utente che arriva trova il sistema
vuoto, ovvero la probabilità che un utente che arriva trova il sistema allo stato 0
è pari a 1, mentre la probabilità p0 (t) = 1/2 per ogni t.
Abbiamo visto come nello studio di un sistema a coda in equilibrio è possibile
definire (se esiste) la distribuzione stazionaria come
pk = lim pk (t)
t→∞
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 49

e interpretando queste quantità come la frazione di tempo che il sistema è nello


stato k. Analogamente si possono definire le quantità

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)

In maniera analoga alla quantità ak (t) che considera la distribuzione all’arrivo


di un cliente, si può studiare la distribuzione dopo la partenza di un cliente dal
sistema dopo che ha usufruito del servizio definendo

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

1.5.2 Sistemi M/M/s

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,

perché quando n ≥ s, i serventi occupati continuano ad essere sempre s.


Quando ρ = λ/sµ < 1, un modello di code di questo tipo soddisfa la condizioni
per l’esistenza dello stato stazionario e quindi possono essere applicati i risul-
tati ottenuti nel paragrafo 1.4 per il calcolo della distribuzione stazionaria di un
processo di nascita e morte.

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−ρ

Dal Teorema 1.4.1 si ha


SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 51

1
p0 = =1−ρ e pn = ρn p0 , per n ≥ 1,
1
1−ρ

da cui

pn = (1 − ρ)ρn per n = 0, 1, 2, . . . (1.5.11)

Calcolate le pn , si possono facilmente determinare le misure di prestazione N ,


N q , T e T q rispettivamente dalle (1.5.1) e (1.5.2):

X ∞
X
N = npn = n(1 − ρ)ρn
n=0 n=0

X ∞
X
= (1 − ρ) nρn = (1 − ρ)ρ nρn−1
n=0 n=0
X∞ ∞
dρn d X
= (1 − ρ)ρ = (1 − ρ)ρ ρn
n=0
dρ dρ n=0
µ ¶
d 1 1
= (1 − ρ)ρ = (1 − ρ)ρ
dρ 1 − ρ (1 − ρ)2
ρ λ
= = .
1−ρ µ−λ
Si osservi che nei passaggi ora svolti, il passaggio fuori dal segno di serie della
derivata rispetto a ρ è possibile perché sono soddisfatte le opportune ipotesi sulla
convergenza delle serie coinvolte.
Il calcolo diretto della N q si può omettere e calcolare N q direttamente dalla
(1.2.23), ovvero N q = N − (1 − p0 ). Si ottiene quindi, utilizzando anche la
(1.2.24)
ρ2 λ2
Nq = N − ρ = = .
1−ρ µ(µ − λ)
Applicando, poi il Teorema di Little, si ha
N 1
T = =
λ µ−λ
Nq λ
Tq = = .
λ µ(µ − λ)

Si osservi, inoltre, che ovviamente la (1.2.21) risulta soddisfatta.


52 TEORIA DELLE CODE

Abbiamo cosı̀ ottenuto le misure di prestazione per un sistema di code M/M/1


che riassumiamo nello schema seguente:

λ
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 µ;

• il tempo di completamento del servizio dell’utente che sta usufruendo del


servizio quando questo nuovo utente arriva, tempo che, per la proprietà
di assenza di memoria della distribuzione esponenziale (Proprietà E2), è
distributo esponenzialmente di parametro µ;

• il tempo del proprio servizio, ovvero il tempo necessario per espletare il


servizio relativo al nuovo utente che arriva che è distributo 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

Proposizione 1.5.4 In un sistema M/M/1, il tempo di permanenza nel si-


stema tw è distribuito esponenzialmente con parametro µ − λ, ovvero

P (tw > t) = e−(µ−λ)t , t ≥ 0.

Dimostrazione: Applicando il Teorema delle probabilità totali si può scrivere



X µ ¯ n utenti presenti nel sistema ¶
¯
P (tw ≤ t) = P tw ≤ t ¯ ·
n=0
all’arrivo del nuovo utente
µ ¶
n utenti presenti nel sistema
·P
all’arrivo del nuovo utente
dove la prima delle probabilità che compaiono nella serie è data dalla (1.5.12),
mentre la seconda, per la proprietà PASTA, è pari a pn . Si ha quindi

∞ 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 ,

ovvero tw segue la distribuzione esponenziale con parametro µ−λ e la proposizione


è dimostrata.

Osservazione 1.5.5 Da questa proposizione è immediato determinare il valore


atteso della variabile tw , ovvero T , che è pari a 1/(µ − λ), come già sappiamo.

Osservazione 1.5.6 Ovviamente la probabilità P (tw > t) può essere calcolata


direttamente, ovvero nella forma

X
P (tw > t) = P (Sn+1 > t) pn . (1.5.13)
n=0

Nel caso di un sistema di code M/M/1, si può facilmente determinare anche la


P (tq > t) distribuzione di probabilità del tempo di attesa nella coda tq di un utente che
arriva. Ovviamente, se il nuovo utente che arriva non trova utenti nel sistema
(n = 0), il nuovo utente viene servito immediatamente (tq = 0) e la probabilità
che questo accada è
P (tq = 0) = p0 = 1 − ρ.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 55

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.

Proposizione 1.5.7 In un sistema M/M/1, per il tempo di attesa in coda


tq vale
P (tq > t) = ρe−(µ−λ)t , t ≥ 0.

Dimostrazione: Si ragiona in maniera del tutto analoga a quanto espresso nell’in-


trodurre la proposizione precedente. Supponiamo, quindi, che entrando nel sis-
tema il nuovo utente trova già n utenti presenti nel sistema; quindi dovrà as-
pettare n tempi esponenziali per l’inizio del proprio servizio (si tratta di n tempi
e non più n + 1 perchè deve essere escluso il tempo relativo al servizio del nuovo
utente stesso). Analogamente alla dimostrazione della proposizione precedente,
utilizzando la (1.5.13), si ha

X µ ¯ n utenti presenti nel sistema ¶
q q ¯
P (t > t) = P t >t¯ pn
n=1
all’arrivo del nuovo utente
X∞
= P (Sn > t) pn
n=1
X∞
= ρ P (Sn > t) (1 − ρ)ρn−1
n=1
X∞
= ρ P (Sn+1 > t) (1 − ρ)ρn
n=0
X∞
= ρ P (Sn+1 > t) pn
n=0
= ρ P (tw > t) = ρe−(µ−λ)t .

Quindi il tempo di attesa nella coda tq non segue la distribuzione esponenziale


come invece accade nel caso del tempo di permanenza nel sistema. Se invece
calcoliamo la probabilità che tq > t, condizionata a tq > 0, si ha
P (tq > t)
P (tq > t | tq > 0) = = e−(µ−λ)t ,
P (tq > 0)
ovvero il tempo di attesa in coda tq di un utente arbitrario che arriva nel sistema,
condizionato a tq > 0 è distribuito esponenzialmente con parametro µ − λ.
56 TEORIA DELLE CODE

Sistemi M/M/s multiservente


Sistemi Consideriamo ora un sistema M/M/s multiservente, ovvero con s > 1, assumendo
M/M/s ρ = λ/(sµ) < 1.
Per quanto già visto nell’introduzione al paragrafo, si può ricondurre questo caso
ad un processo di nascita e morte con coefficiente di natalità λn = λ e coefficiente
di mortalità dato da
½
nµ se n<s
µn =
sµ se n ≥ s,
ovvero
µn = min{nµ , sµ}.

Il diagramma di transizione di stato in questo caso è riportato in Figura 1.5.1.

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 µ

Verifichiamo la condizione di esistenza dello stato stazionario (1.4.12). Si ha


∞ s−1 µ ¶n ∞ µ ¶ µ ¶
X 1 X λ X 1 λ s λ n−s
Πn = +
n=1 n=1
n! µ n=s s! µ sµ
s−1 µ ¶n µ ¶ ∞ µ ¶n
X 1 λ 1 λ sX λ
= + <∞
n=1
n! µ s! µ n=0

λ
che è soddisfatta per ρ = < 1.

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µ

Fig. 1.5.1 Diagramma di transizione di stato per un sistema M/M/s


SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 57

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 µ

Calcoliamo ora il valore di N q :



X ∞
X ∞
X µ ¶s+i
1 λ
Nq = (n − s)pn = ips+i = i p0
n=s i=0 i=0
s!si µ
X∞ µ ¶s µ ¶i µ ¶s ∞
X
1 λ λ 1 λ
= i p0 = p0 iρi
i=0
s! µ sµ s! µ i=0
µ ¶s ∞
X µ ¶s ∞
X
1 λ 1 λ dρi
= p0 ρ iρi−1 = p0 ρ
s! µ i=0
s! µ i=0

µ ¶s ∞ µ ¶s µ ¶
1 λ d X 1 λ d 1
= p0 ρ ρi = p0 ρ
s! µ dρ i=0 s! µ dρ 1−ρ
µ ¶s
1 λ ρ
= p0 .
s! µ (1 − ρ)2

Applicando il Teorema di Little si ricavano i valori di T q , T e N . Quindi per un


sistema di code M/M/s multiservente si hanno le seguenti misure di prestazione:

µ ¶s
1 λ ρ
Nq = p0
s! µ (1 − ρ)2
Nq
Tq =
λ
1
T = Tq +
µ
λ
N = λT = N q + .
µ

Anche nel caso di sistema M/M/s multiservente è possibile ricavare la distribuzione


di probabilità del tempo di permanenza nel sistema tw e del tempo di attesa nella
coda tq . Si riportano questi risultati senza dimostrazione. Risulta
" Ã !#
w −µt 1 + (λ/µ)s p0 1 − e−µt(s−1−λ/µ)
P (t > t) = e
s!(1 − ρ) s − 1 − λ/µ
58 TEORIA DELLE CODE

³ −µt(s−1−λ/µ)
´
sostituendo 1−es−1−λ/µ con µt nel caso in cui il denominatore si annulli,
ovvero se s − 1 − λ/µ = 0, ed inoltre

P (tq > t) = (1 − P (tq = 0)) e−s(µ−λ)t (1.5.16)


s−1
X
dove P (tq = 0) = pn .
n=0

È 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
1 λ 1 1 λ 1
= p = p0
s! µ λ 0 s! µ 1−ρ
1−

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 );

è necessario, quindi, calcolare i valori di pn per n = 0, 1, 2, 3, 4, 5 che possono essere


facilemente ottenuti dalla (1.5.15). Risulta quindi 1−(p0 +p1 +p2 +p3 +p4 +p5 ) = 0.3653;
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 59

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.

Esempio 1.5.9 In un pronto soccorso di un ospedale si vuole migliorare il servizio offerto.


Sulla base dei dati disponibili, si stima che arriva in media un paziente ogni 30 minuti e che, in
media, per le cure richieste sono necessari 20 minuti per ogni paziente. Uno studio preliminare
ha evidenziato che gli arrivi sono casuali (distribuiti secondo Poisson) e i tempi impiegati per le
cure sono approssimativamente distribuiti secondo la distribuzione esponenziale. Costruire un
modello di code analizzando le due possibili alternative di continuare ad operare con un solo
medico oppure aggiungere un secondo medico.
Prendiamo come unità di tempo l’ora. Risulta λ = 2 e µ = 3.
• Per s = 1 si ottiene: ρ = 2/3, N q = 4/3, N = 2, T q = 2/3 di ora e T = 1 ora.
• Per s = 2 si ottiene: ρ = 1/3, N q = 1/12, N = 3/4, T q = 1/24 di ora e T = 3/8 di ora.
Si lascia allo studente il calcolo di pn , P (tq > t), P (tw > t) ed i casi particolari P (tq > 0),
P (tq > 1) nel due casi di singolo servente e di due serventi. Confrontanto i risultati ottenuti
appare chiaro che l’utilizzo di un solo medico è del tutto inadeguato.

Esercizio 1.5.10 In un ufficio arriva, in media, un cliente ogni 2 minuti. Attualmente in


questo ufficio c’è un solo addetto che esegue il servizio richiesto da ciascun cliente, in media, in
15 secondi. Si assuma che gli arrivi siano poissoniani e che i tempi di servizio siano distribuiti
esponenzialmente. Si consideri un modello di code M/M/s verificando se è preferibile cambiare
l’addetto con un altro due volte più veloce oppure aggiungere all’addetto attualmente utilizzato
un altro addetto che lavora alla stessa velocità di quello attuale.

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

f) determinare il tempo medio di permanenza nel sistema e il tempo medio di attesa in


coda.
g) calcolare il numero medio di processi presenti nel sistema e il numero medio dei processi
presenti in attesa di essere lavorati;
h) determinare la probabilità che un processo arrivi nel sistema e venga lavora immediata-
mente senza attesa;
i) determinare come è distribuito il numero dei processi presenti nel sistema.
Per la modalità operativa 3:
l) descrivere un sistema a coda che può rappresentare la situazione descritta;
m) determinare il tempo medio di permanenza nel sistema e il tempo medio di attesa in
coda.
n) calcolare il numero medio di processi presenti nel sistema e il numero medio dei processi
presenti in attesa di essere lavorati;
o) determinare come è distribuito il tempo di attesa in coda;
p) descrivere come si riconduce questo sistema ad un processo di nascita e morte.
Dall’analisi delle 3 modalità
q) concludere qual è la modalità più conveniente e la meno conveniente in termini di tempi
di risposta del sistema, ovvero di tempi di permanenza media dei processi nel sistema.

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

1.5.3 Sistemi M/M/s/K

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 ).

Osservazione 1.5.13 Per quanto riguarda il raggiungimento delle condizioni di


stazionarietà, come abbiamo già detto, non è richiesto che ρ = λ/µ < 1. Il fatto
che in un sistema con capacità limitata la frequenza media degli arrivi (λ) possa
superare la frequenza media di completamento dei servizi (ovvero λ > µ) è dovuto
ad una proprietà detta di autoregolazione di un sistema che, escludendo un certo
numero di clienti, porta la frequenza effettiva degli arrivi ad essere minore di
quella del completamento dei servizi.

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

Sistemi M/M/s/K multiservente


Sistemi Consideriamo ora un sistema M/M/s/K multiservente, ovvero s > 1, supponendo
M/M/s/K che risulti s ≤ K. Questo caso si tratta in maniera analoga al caso M/M/s già
visto ponendo
½
λ per n = 0, 1, . . . , K − 1
λn =
0 per n ≥ K,

½
nµ per n = 1, 2, . . . , s − 1
µn =
sµ per s ≤ n ≤ K.

Si ottengono quindi i seguenti valori per Πn :

 µ ¶

 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.

dal quale si ottiene

 µ ¶
 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.

dove il valore di p0 discende immediatamente dal caso già trattato di sistemi


M/M/s tenendo conto che Πn = 0 per n > K e quindi

1
p0 = s−1 µ ¶n µ ¶ K µ ¶n−s .
X 1 λ 1 λ sX λ
+
n=0
n! µ s! µ n=s sµ

Analogamente al caso di un sistema di code M/M/s, si può ottenere la seguente


espressione per N q :
µ ¶s h i
q ρ λ
N = p0 1 − ρK−s − (K − s)ρK−s (1 − ρ) .
s!(1 − ρ)2 µ
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 65

Come nel caso M/M/1/K, applicando il Teorema di Little si possono ottenere


i valori di T q , T ad N . Alternativamente, N può essere anche ottenuto come
segue. Poiché dalla (1.2.22) si ha
∞ ∞
à s−1
!
X X X
q
N = (n − s)pn = npn − s 1 − pn ,
n=s n=s n=0

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

Concludiamo il paragrafo considerando il caso in cui risulta K = s, ovvero la


capacità massima del sistema uguaglia il numero dei serventi e quindi la coda ha
capacità nulla. Questo significa che, non esistendo la coda, un utente che arriva
quando tutti i serventi sono occupati non entra nel sistema ed è “perso”. Questo
modello è molto utilizzato nella telefonia; infatti se una rete telefonica ha s linee
ed un utente chiama quando tutte le linee sono occupate, riceve il segnale di
occupato e non può entrare nel sistema costituito dalla rete telefonica. Si tratta
di un sistema di code dove, di fatto, la coda non esiste ed è noto come Erlang Erlang loss
loss system perché studiato dal già citato A.K. Erlang. system
La probabilità che un utente che arriva trova tutti gli s serventi occupati e quindi K = s
è perso può essere facilmente calcolata in quanto essa è uguale alla probabilità
pK che nel sistema ci siano già K utenti, che è data da
µ ¶s
1 λ 1
pK = s µ ¶ .
s! µ X 1 λ n
n=0
n! µ

Questa formula è nota come formula di Erlang B.

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

1.5.4 Sistemi M/M/s/ · /U

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

µ µ µ µ

Fig. 1.5.2 Diagramma di transizione di stato per un sistema M/M/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.

Calcoliamo ora i valori delle misure di prestazione iniziando da N . Utilizzando


la (1.5.20) si ha

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

Ora, per applicare il Teorema di Little è necessario determinare il valore della


frequenza media effettiva degli arrivi λ data da

X U
X U
X U
X
λ̄ = λn pn = (U − n)λpn = λU pn − λ npn = λ(U − N )
n=0 n=0 n=0 n=0

e che analogamente al caso di sistemi M/M/1/K si può scrivere nella forma


µ(1 − p0 ). Quindi di ha
N N U 1
T = = = −
λ µ(1 − p0 ) µ(1 − p0 ) λ
µ µ+λ
Nq = N − (1 − p0 ) = U − (1 − p0 ) − (1 − p0 ) = U − (1 − p0 )
λ λ
1 U 1 1
Tq = T− = − − .
µ µ(1 − p0 ) λ µ

Sistemi M/M/s/·/U multiservente


Consideriamo, ora il caso di sistemi M/M/s/·/U multiservente, ovvero con s > 1. Sistemi
Anche in questo caso è possibile rappresentare il sistema con un processo di M/M/s/·/U
nascita e morte con i seguenti coefficienti di natalità e di mortalità:
½
(U − n)λ per n = 0, 1, . . . , U − 1
λn =
0 per n≥U

½
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 µ

Per quanto riguarda le misure di prestazione, risulta ovviamente


U
X
Nq = (n − s)pn
n=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.

Caso singolo servente


Iniziamo considerando un sistema di code con servente singolo. Supponiamo
dapprima che la sola velocità di servizio sia dipendente dallo stato. Per tener Velocità di
conto del fatto che tale velocità può cambiare al variare dello stato, denotiamo servizio
con µ1 la velocità media di servizio in condizioni normali, ovvero con un solo dipendente
utente nel sistema (coda vuota) e definiamo µn come segue: dallo stato
µn = nc µ1 , per n = 1, 2, . . . , (1.5.21)
dove c è una costante positiva.
Assumiamo che gli arrivi siano poissoniani di parametro λ e i tempi di servizio
siano distribuiti esponenzialmente di parametro µn dato dalla (1.5.21). Si possono
applicare i risultati sui processi di nascita e morte con λn = λ, tenendo conto che
la condizione per l’esistenza dello stato stazionario è soddisfatta per ogni c > 0.
Si ottiene µ ¶n
1 λ
Πn = c
, n = 1, 2, . . .
(n!) µ1
da cui si ha
µ ¶n
1 λ
pn = p0
(n!)c µ1

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

Riprenderemo in esame questo caso nel succesivo paragrafo 1.5.6.

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

dove λ0 è la frequenza media di arrivo in condizioni normali, ovvero con la coda


vuota, e b è una costante positiva. Analogamente al caso precedente della velocità
di servizio dipendente dallo stato, si possono applicare i risultati sui processi
di nascita e morte tenendo conto che la condizione per l’esistenza dello stato
stazionario è soddisfatta per ogni b > 0, ottenendo
µ ¶n
1 λ0
Πn = , n = 1, 2, . . .
(n!)b µ

da cui si ha
µ ¶n
1 λ0
pn = p0
(n!)b µ

con
1
p0 = ∞ µ ¶n
X 1 λ0
n=0
(n!)b µ

dalle quale si possono ottenere i valori delle misure di prestazione. Anche in


questo caso un interessante caso particolare si ha in corrispondenza della scelta
b = 1.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 73

Un modello generale si ottiene combinando i due modelli ora discussi ovvero


ponendo
λ0
λn =
(n + 1)b

µ n = na µ 1 .

Analogamente ai casi precedenti si ha


µ ¶n
1 λ0
Πn = , n = 1, 2, . . .
(n!)a+b µ1
da cui si ottiene
µ ¶n
1 λ0
pn = p0
(n!)a+b µ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.

Esempio 1.5.17 Si consideri di nuovo il problema della gestione di un pronto soccorso di un


ospedale esaminato nell’Esempio 1.5.9. Un modello più aderente alla realta di quelli visti fino
ad ora per questo problema dovrebbe infatti considerare il fatto che il tempo che un medico
impiega per curare un pazienze che arriva al pronto soccorso, potrebbe tendere realisticamente
a diminuire all’aumentare del numero dei pazienti che sono in fila di attesa. Questo perché in
situazioni di affollamento il medico incarica un infermiere di completare il trattamento e passa
ad un nuovo paziente. Supponiamo, in questa nuova ottica, che il tempo che il medico passa
in media a curare un paziente sia di 24 minuti se non c’è nessun altro paziente che aspetta,
mentre questo tempo diventa di 12 minuti se ci sono 5 o più pazienti in coda (ovvero 6 utenti
nel sistema). Quindi si ha µ1 = 5/2 e µ6 = 5. Da cui, poiché assumiamo µ6 = 6c µ1 si ha
c = 0.386. Poiché lo scopo è sempre quello di confrontare le due alternative date da un solo
medico (s = 1) e due medici (s = 2), vogliamo ricavare le misure di prestazione di questo sistema
in corrispondenza di questi due valori di s. Innanzitutto osserviamo che
n
λ0 0.8 per s=1
=
sµ1 0.4 per s = 2.

Dai valori tabulati o dai grafici si ricavano i seguenti valori per p0 e N :


• per s = 1, p0 = 0.367 e N = 1.251;
• per s = 2, p0 = 0.440 e N = 0.864.
Calcoliamo i valori di N q , T e T q nei due casi:
• per s = 1 si ottiene N q = N −(1−p0 ) = 0.618, T = N λ = 0.6255 ore e T q = N q /λ = 0.309
ore;
• per s = 2 si ottiene p1 = (λ0 /µ1 )p0 = 0.352, N q = N − p1 − 2(1 − p0 − p1 ) = 0.096,
T = N/λ = 0.432 ore e T q = N q /λ = 0.048 ore.
Si può inoltre calcolare la probabilità di attendere in coda un tempo non nullo, ovvero P (T q > 0);
• per s = 1 si ha P (T q > 0) = 1 − p0 = 0.633;
• per s = 2 si ha P (T q > 0) = 1 − p0 − p1 = 0.208.
Anche dall’analisi dei risultati ottenuti con questo nuovo modello si deduce che l’utilizzo di un
solo medico non permette di avere un servizio efficiente nel pronto soccorso.
SISTEMI A CODA BASATI SU PROCESSI DI NASCITA E MORTE 75

1.5.6 Sistemi M/M/∞

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! µ

Quindi, in condizioni di stazionarietà, il numero degli utenti presenti nel sistema


è distribuito secondo Poisson di parametro λ/µ e quindi risulta
λ
N=
µ
ed inoltre, ovviamente, N q = 0 e T q = 0, in quanto non sono previste attese in
coda. Segue che
1 1
T = Tq + = ,
µ µ
ovvero il valor medio del tempo di permanenza nel sistema coincide con il valore
atteso del tempo di servizio 1/µ.
76 TEORIA DELLE CODE

1.6 SISTEMI A CODA CON DISTRIBUZIONI NON ESPONENZIALI

Fino ad ora abbiamo considerato modelli di code basati su processi di nascita e


morte, con tempi di interarrivo e tempi di servizio distribuiti esponenzialmente e
abbiamo analizzato le importanti proprietà di tali modelli e il loro efficace uso nel
rappresentare situazioni reali. Tuttavia, esistono casi reali in cui le assunzioni fino
ad ora fatte non sono soddisfatte. Ad esempio, sappiamo che gli arrivi secondo
Poisson approssimano bene gli arrivi casuali che rappresentano una ragionevole
assunzione in moltissime situazioni; tuttavia in alcuni casi, si possono invece
avere situazioni di arrivi programmati e non più casuali. Analogamente, non sono
infrequenti situazioni in cui i tempi di servizio sono regolati da schemi prestabiliti
che non sono approssimati bene da una distribuzione esponenziale.
Per queste ragioni, in questo paragrafo verrano esaminati modelli di code che
utilizzano distribuzioni diverse da quella esponenziale. L’analisi di questi modelli
risulta, in genere, molto più difficile dell’analisi compiuta fino ad ora sui sistemi
basati su distribuzioni esponenziali in quanto il processo corrispondente ad un
tale modello non è più, in generale, un processo di nascite e morte.
Inizieremo questa trattazione rimuovendo la sola assunzione di avere una dis-
tribuzione esponenziale dei tempi di servizio e quindi considerando modelli gen-
erali M/G/s e la loro particolarizzazione ai modelli M/D/s e M/Ek /s. Successi-
vamente considereremo modelli che non abbiano arrivi poissoniani.

1.6.1 Sistemi M/G/1

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

Teorema 1.6.1 Si consideri un sistema M/G/1 in condizioni di stazionarietà.


Sia λ la frequenza media degli arrivi e siano 1/µ e σ 2 rispettivamente la media
e la varianza dei tempi di servizio. Allora si ha

σ 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

Prendendo il valore atteso6 ad entrambi i membri della (1.6.2), si ha


1
E(tqi ) = E(Ri ) + E(tsj )E(nqi ) = E(Ri ) + E(nqi ). (1.6.3)
µ
Si osservi che la Ri e la nqi sono quantità viste dall’utente che arriva, ma, poiché
gli arrivi sono poissoniani, tali quantità coincidono con le corripsondenti quantità
viste da un osservatore esterno che osserva il sistema in un istante arbitrario.
Passando al limite per i → ∞ nella (1.6.3), assumendo che questi limiti esistano,
si ha
1
T q = R + N q, (1.6.4)
µ
dove R è il tempo residuo medio (a regime) definito da R = lim E(Ri ). Ora,
i→∞
poiché risulta N q = λT q , dalla (1.6.4) si ha
λ q
Tq = R + T
µ
da cui si ottiene
R
Tq = . (1.6.5)
1−ρ

6 Si utilizza un noto risultato di teoria della probabilità secondo il quale, avendo X , . . . , X


1 m variabili
aleatorie indipendendenti, identicamente distribuite, con media comune E(X) ed m è una variabile
aleatoria che può assumere valori 0, 1, . . ., allora
E(X1 + · · · + Xm ) = E(X)E(m)
78 TEORIA DELLE CODE

R(τ )

t1s t 2s
τ
t1s t 2s t

Fig. 1.6.1 Grafico del tempo residuo

Per completare la dimostrazione rimane da calcolare il valore di R. Effettueremo


questo calcolo con l’ausilio di un grafico. Riportiamo, infatti, in Figura 1.6.1 il
grafico del tempo residuo del servizio R(τ ) in funzione del tempo τ , ovvero il
tempo che rimane per il completamento del servizio del cliente che sta usufru-
endo del servizio al tempo τ , assumendo R(0) = 0. Ovviamente, quando un
nuovo servizio di durata tsi inizia, R(τ ) ha valore tsi , poi decresce linearmente.
Consideriamo, ora, un istante di tempo t per il quale risulti R(t) = 0 e indichi-
amo con D(t) il numero di arrivi (ovvero di partenze) nell’intervallo [0, t]. La
media temporale di R(τ ) nell’intervallo [0, t] è data da
Z t
1
R(τ )dτ.
t 0
Z t
Poiché R(τ )dτ rappresenta l’area della superficie racchiusa tra la funzione
0
R(τ ) e l’asse delle ascisse, tale area è anche uguale alla somma delle aree dei
D(t)
X 1
triangoli, ovvero da (tsi )2 . Risulta quindi
i=1
2

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

Ora, moltiplicando e dividendo per D(t) al secondo membro della (1.6.6) si ha


D(t)
X
Z (tsi )2
1 t 1 D(t) i=1
R(τ )dτ = (1.6.7)
t 0 2 t D(t)
e passando al limite per t → ∞ nella (1.6.7) (assumendo che i limiti esistano) si
ha
D(t)
X
Z (tsi )2
1 t 1 D(t)
lim R(τ )dτ = lim lim i=1 . (1.6.8)
t→∞ t 0 2 t→∞ t t→∞ D(t)
Ora, poiché per t sufficientemente grande vale l’uguaglianza tra media temporale
e valore atteso, si ha
Z t
1
lim R(τ )dτ = lim E(Ri ) = R,
t→∞ t 0 i→∞

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.

Osservazione 1.6.1 Abbiamo derivato la formula di Pollaczek–Kintchine as-


sumendo che la disciplina della coda sia di tipo FIFO, ma la formula rimane
valida in generale comunque si scelga la disciplina della coda purché essa sia in-
dipendente dal tempo di servizio richiesto. Non è invece valida se l’ordine con
cui si accede al servizio dipende dal tempo si servizio.

Una volta determinato il valore di T q dalla formula di Pollaczek–Kintchine, si


possono determinare i valori delle altre misure di prestazione, ovvero
λ2 σ 2 + ρ2
N q = λT q =
2(1 − ρ)
λ2 σ 2 + ρ2
N = Nq + ρ = +ρ
2(1 − ρ)
N λσ 2 + λ/µ2 1
T = = + .
λ 2(1 − ρ) µ
80 TEORIA DELLE CODE

Osservazione 1.6.2 Se consideriamo un sistema di code M/M/1 come caso par-


ticolare di un sistema M/G/1, si ha σ 2 = 1/µ2 e quindi l’applicazione della
formula di Pollaczek–Kintchine fornisce per T q il valore T q = λ/[µ(µ − λ)] che
naturalmente coincide con l’espressione di T q già determinata nel caso di sistema
M/M/1.

Osservazione 1.6.3 Osservando l’espressione di T q , N q ed N si vede che a


parità di λ e µ, queste grandezze aumentano all’aumentare della varianza del
tempo di servizio σ 2 . Da questo punto di vista, la situazione ideale (ovvero
quella che minimizza queste grandezze) si otterrebbe con σ 2 = 0 che si ha con
tempi di servizio costanti, ovvero per sistemi di tipo M/D/1. Si tenga presente
che, a parità di valore atteso, si può intervenire sui tempi di servizio per renderli
più regolari possibile (ovvero rendendo la varianza piccola). Questo è molto
importante perché mostra che la “regolarità” del servizio assume una grande
importanza da questo punto di vista, e che quindi non è sufficiente considerare
la velocità media del servizio.

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

(dove σ 2 = 1/µ2 ). Questo evidenzia il fatto che una diminuzione di σ 2 porta ad


un notevole miglioramento (diminuzione) di T q e di N q .
Per quanto riguarda il caso multiservente, (s > 1) esiste un metodo per deter-
minare la distribuzione di probabilità del numero degli utenti nel sistema, in
condizioni di stazionarietà, ma esso esula dallo scopo di queste note perché molto
tecnico e particolare. Esistono anche in questo caso risultati tabulati e grafici
dell’andamento di N in funzione di ρ = λ/(sµ).

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µ).

1.6.2 Sistemi con arrivi non poissoniani

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:

• GI/M/s : non impongono restrizioni sul processo degli arrivi;

• D/M/s : gli arrivi sono ad intervalli regolari;

• Ek /M/s : gli arrivi seguono la distribuzione di Erlang Ek .

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

1.7 MODELLI DI CODE CON DISCIPLINA DELLA CODA BASATA SU


CRITERI DI PRIORITÀ

Nella realtà si possono presentare situazioni in cui in un sistema di servizio la


disciplina della coda è basata su criteri di priorità, ovvero l’ordine rispetto al quale
gli utenti in coda vengono selezionati è basato sulla priorità ad essi assegnata.
Situazioni reali in cui questo può accadere sono molteplici: si pensi, ad esempio,
all’esigenza in un pronto soccorso di intervenire prima sui pazienti più gravi,
oppure a situazioni in cui utenti “importanti” hanno la precedenza su altri.
L’analisi è piuttosto complicata e in questo paragrafo ci limiteremo a consider-
are modelli nei quali si assume che, per ogni classe di priorità, gli arrivi siano
poissoniani e che i tempi di servizio siano esponenziali; inoltre, per semplicità,
assumeremo che il valore atteso del tempo di servizio è lo stesso per ogni classe
di priorità, mentre la frequenza media degli arrivi può differire a seconda delle
classi di priorità. Indicheremo, inoltre, con nc il numero delle classi di priorità,
intendendo che la classe 1 è quella con la più alta priorità; la selezione dalla coda
avviene scegliendo un utente nella classe di priorità più alta e, all’interno della
classe, con il criterio FIFO.
Esistono due tipologie di questi sistemi di code:

• 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à.

Sistemi con priorità senza interruzione del servizio


Consideriamo il caso in cui non sono consentite interruzioni di un servizio. In
MODELLI DI CODE CON DISCIPLINA DELLA CODA BASATA SU CRITERI DI PRIORITÀ 85

questo caso, l’espressione per Tkq è la seguente


1
Tkq = , k = 1, . . . , nc,
abk−1 bk
dove
X 1 µ λ ¶j
sµ − λ s−1
a = s! µ ¶s + sµ,
λ j! µ
j=0
µ
k
X
λi
i=1
b0 = 1, bk = 1 − . (1.7.1)

Ad ogni singola classe di priorità si applica il Teorema di Little e si ha

Nkq = λk Tkq , k = 1, . . . , nc.

Risulta inoltre
1
Tk = Tkq +
µ
Nk = λk Tk .

Sistemi con priorità con interruzione del servizio


Consideriamo ora un sistema in cui si prevede l’interruzione di un servizio per
l’arrivo di un utente con priorità più alta di quella dell’utente che sta usufruendo
del servizio.
Nel caso si singolo servente, ovvero s = 1, si ha la seguente espressione per Tk :
1
µ
Tk = , k = 1, . . . , nc,
bk−1 bk
dove le bk sono già state definite in (1.7.1).
Nel caso multiservente, ovvero s > 1, per determinare Tk si usa una procedura
iterativa che illustriamo di seguito. Tale procedura è basata sul fatto che i tempi
di permanenza nel sistema per gli utenti di una certa classe di priorità non sono
influenzati dalla presenza di utenti nelle classi di priorità più basse. Quindi il
valore di T1 sarà lo stesso per ogni valore di λ2 , λ3 , . . . , λnc , e quindi anche per
λ2 = λ3 = · · · = λnc = 0. Questo vuol dire che T1 deve essere uguale al valore
T corrispondente ad una sola classe per un sistema M/M/s con λ = λ1 e quindi
si può calcolare facilmente. Calcolato T1 , si prendono in considerazione le prime
due classi di priorità, la prima e la seconda. Anche in questo caso i tempi di
permanenza nel sistema dei clienti di queste due classi non sono influenzati dagli
86 TEORIA DELLE CODE

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 RETI DI CODE

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.

Le reti di code si dividono in


• reti aperte in cui sono possibili ingressi di utenti alla rete dall’esterno e
uscite degli utenti dalla rete verso l’esterno;
• reti chiuse in cui il numero degli utenti all’interno della rete è fissato e gli
utenti circolano all’interno della rete senza che ci sia possibilità di ingressi
dall’esterno o uscite verso l’esterno.
Per caratterizzare completamente una rete di code devono essere assegnati:
• la topologia della rete
• le distribuzioni di probabilità dei tempi di interarrivo degli utenti presso i
nodi che prevedono ingresso di utenti
• le distribuzioni di probabilità dei tempi di servizio presso ciascun nodo
costituente la rete
• le regole di istradamento.
Lo stato n della rete è definito dal vettore n = (n1 , . . . , nm ), dove le ni , i =
1, . . . , m rappresentano il numero di utenti del sistema i−esimo.
88 TEORIA DELLE CODE

Fig. 1.8.1 Esempio di rete aperta

1.8.2 Il processo delle partenze per i sistemi M/M/s

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.

Teorema 1.8.1 Si consideri un sistema M/M/s con s ≥ 1 (incluso s = ∞)


con frequenza media di arrivo pari a λ in condizioni di stazionarietà. Allora

i) il processo della partenze dal sistema è un processo di Poisson di


parametro λ;

ii) ad ogni istante di tempo t, il numero di utenti presenti nel sistema è


indipendente dalla sequenza dei tempi di partenza prima di t.
RETI DI CODE 89

Fig. 1.8.2 Esempio di rete chiusa

Quindi in un sistema a coda con arrivi poissoniani e tempi di servizio distribuiti


esponenzialmente, anche il processo delle partenze dal sistema è un processo di
Poisson, ovvero il processo delle partenze ha le stesse caratteristiche del processo
degli arrivi, nonostante il servizio che è avenuto e il relativo tempo. Si osservi
inoltre che questo risultato è indipendente anche dalla disciplina della coda.
L’utilità di questo risultato all’interno della teoria delle code è evidente: se gli
utenti che escono dal un sistema M/M/s entrano in un altro sistema a coda, gli
arrivi a questo secondo sistema saranno ancora poissoniani. Quindi, assumendo
che i tempi di servizio del secondo sistema siano distribuiti esponenzialmente,
il sistema a coda del secondo nodo si comporta come un sistema M/M/s e può
essere studiato indipendentemente dal primo nodo. Quindi in virtù del teorema di
Burke, possiamo collegare in una rete sistemi a coda M/M/s e, purchè non ci siano
cicli, ovvero purché gli utenti non possano rivisitare nodi già precedentemente reti feed-
visitati (reti feedforward ), si può analizzare la rete decomponendola nodo a nodo. forward
L’assenza di cicli è necessaria altrimenti si potrebbe perdere la natura poissoniana
dei flussi in ingresso ai nodi. La dimostrazione di questo teorema si basa su una
proprietà detta reversibilità dei processi di nascita e morte che permette di vedere
i processi delle partenze corrispondenti agli arrivi del processo invertito.
Senza entrare nel dettaglio, notiamo solamente che oltre le equazioni di bilancio
globale date dalle (1.4.6) e (1.4.7), nei processi di nascita e morte, si possono anche
90 TEORIA DELLE CODE

λ n −1
λ n

n−1 n n+1
µ n
µ n +1

t 1 t 2

Fig. 1.8.3 Diagramma degli stati

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−1 pn−1 = µn pn , (1.8.1)

mentre relativamente al taglio t2 si deve avere

λn pn = µn+1 pn+1 .

Ovviamente, sottraendo membro a membro queste due equazioni si ottengono le


equazioni di bilancio globale (1.4.6). Queste due equazioni di bilancio del flusso
ora ottenute tra stati adiacenti mettono in evidenza la proprietà dei processi di
nascita e morte che va sotto in nome di reversibilità che è alla base del Teorema
di Burke.

1.8.3 Serie di code

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

Fig. 1.8.4 Esempio di serie di code

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 (n1 , n2 ) = pn1 pn2 = ρn1 1 (1 − ρ1 ) ρn2 2 (1 − ρ2 ),

con ρ1 = λ/µ1 < 1 e ρ2 = λ/µ2 < 1.


Infatti, per la prima parte del Teorema di Burke il processo delle partenze dal
secondo sistema è di Poisson e per l’indipendenza dei tempi di servizio il secondo
sistema può essere visto come un singolo sistema M/M/1, e quindi si ha

pn1 = ρn1 1 (1 − ρ1 ), pn2 = ρn2 2 (1 − ρ2 ).

Per la seconda parte del Teorema di Burke, in un qualsiasi istante t il numero


degli utenti presenti nel primo sistema è indipendente dalla sequenza degli arrivi
al secondo sistema prima di t e quindi anche dal numero degli utenti nel secondo
sistema. Quindi si ha

P (n1 , n2 ) = ρn1 1 (1 − ρ1 ) ρn2 2 (1 − ρ2 ).

Questo si estende ad una serie di un numero finito di sistemi a coda in serie.


Quindi la probabilità congiunta che una rete costituita da m sistemi a coda in
serie sia allo stato n = (n1 , . . . , nm ) si può scrivere nella forma

P (n) = P (n1 , n2 , . . . , nm ) = pn1 pn2 · · · pnm = ρn1 1 (1−ρ1 )ρn2 2 (1−ρ2 ) · · · ρnmm (1−ρm ),

dove ρj = λ/µj < 1, j = 1, . . . , m. Questa rappresenta la cosiddetta soluzione in


forma prodotto.
Il tempo medio totale di permanenza nell’intero sistema, ovvero nella rete, e il
numero medio di utenti presenti nella rete si possono calcolare semplicemente
sommando le corrispondenti quantità calcolate in riferimento ai singoli sistemi.
Si osservi che le considerazioni fino ad ora riportate non valgono se la capacità
dei singoli sistemi a coda componenti la rete fosse finita.
92 TEORIA DELLE CODE

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

1.8.4 Reti di Jackson aperte

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

i) gli arrivi dall’esterno della rete ad un nodo i della rete (i = 1, . . . , m)


sono poissoniani di parametro γi , con γi > 0 per almeno un i;

ii) i tempi di servizio di ciascun servente degli si serventi presenti ad ogni


nodo i sono indipendenti e distribuiti esponenzialmente di parametro µi ;

iii) le probabilità che un utente che ha completato il servizio al nodo i si rechi


presso il successivo nodo j (i, j = 1, . . . , n) (probabilità di routing) è pari
a pij ed è indipendente dallo stato del sistema.

Assumeremo, inoltre, che i sistemi a coda componenti la rete siano a capacità


illimitata (ovvero coda infinita). Naturalmente può accadere che γi = 0 per
qualche i, ovvero che non ci siano arrivi dall’esterno al nodo i−esimo, ma si
richiede che γi > 0 per almeno un i.
Dopo che un utente viene servito presso il nodo i, esso può procedere verso un
P
nodo j con probabilità pij o può uscire dalla rete con probabilità 1 − m
j=1 pij . Le
probabilità pij possono essere schematizzate in una matrice quadrata di ordine
m
 
p11 p12 ··· p1m


.. .. 

. .
P =
 .. .. 

 . . 
pm1 pm2 ··· pmm

che viene chiamata matrice di routing.

È 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.

Teorema 1.8.2 – Teorema di Jackson. Sia data una rete aperta di


Jackson composta da m nodi ciascuno dei quali è a singolo servente. Al-
lora la distribuzione di probabilità congiunta che la rete di trovi allo stato
n = (n1 , . . . , nm ) si fattorizza nel prodotto delle distribuzioni di probabulità
marginali, ovvero

P (n) = P (n1 , . . . , nm ) = pn1 pn2 · · · pnm (1.8.3)

dove
n
pnj = ρj j (1 − ρj ).
RETI DI CODE 95

Dimostrazione: Consideriamo inizialmente il solo nodo j−esimo della rete, sup-


ponendo che negli altri nodi non avvenga alcuna transizione di stato. Relati-
vamente a questo nodo l’equazione di bilancio (1.8.1) nel passaggio dallo stato
nj − 1 allo stato nj oppure dallo stato nj allo stato nj−1 , si può riscrivere
λnj pnj −1 = µnj pnj . (1.8.4)
Ma sia λnj , sia µnj sono costanti e non dipendono dallo stato nj , pertanto la
(1.8.4) si può riscrivere
λj pnj −1 = µj pnj . (1.8.5)
Avendo assunto che negli altri nodi diversi dal j−esimo non ci sono transizioni
di stato, la (1.8.5) si può riscrivere
λj P (n1 , . . . , nj − 1, . . . , nm ) = µj P (n1 , . . . , nj , . . . , nm ).
ovvero
P (n1 , . . . , nj , . . . , nm ) = ρj P (n1 , . . . , nj − 1, . . . , nm ).
Applicando nj volte questa relazione si ottiene
n
P (n1 , . . . , nj , . . . , nm ) = ρj j P (n1 , . . . , nj−1 , 0, nj+1 , . . . , nm ).
Ripetendo il procedimento per ogni j = 1, . . . , m si ha
m
Y nj
P (n1 , . . . , nm ) = ρj P (0, . . . , 0). (1.8.6)
j=1
Rimane da calcolare il valore di P (0, . . . , 0) che è la probabilità che tutti i nodi
siano allo stato zero, ovvero senza alcun utente presente. Per ottenere tale valore
è sufficiente sommare tutte le probablità di stato P (n1 , . . . , nm ) date dalla (1.8.6)
e imporre che si ottenga 1, ovvero
∞ X
X ∞ ∞ Y
X m
nj
··· ρj P (0, . . . , 0) = 1
n1 =0 n2 =0 nm =0 j=1

da cui, nell’ipotesi che le serie presenti convergano (ρj < 1, j = 1, . . . m), si ha

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

Il Teorema di Jackson fornisce la soluzione in forma prodotto in quanto la proba-


bilità che la rete si trovi allo stato n = (n1 , . . . , nm ) risulta pari al prodotto delle
proabilità che i singoli nodi si trovino rispettivamente negli stati nj indipenden-
temente dagli altri nodi.
In virtù di questo teorema la rete può essere analizzata scomponendola in m
sistemi a coda M/M/1 indipendenti, ovvero la rete si comporta come se ciascun
nodo fosse un nodo isolato indipendente M/M/1 con frequenza media di arrivo
λj e tempi medi di servizio pari a µj , in quanto le pnj nella (1.8.3) sono proprio
le probabilità che nj utenti sono presenti nel nodo j−esimo considerato come
sistema M/M/1. Si ribadisce che questo risultato è vero nonstante il fatto che il
flusso entrante ad un generico nodo j−esimo non è necessariamente poissoninano
di paramero λj .
La condizione sotto la quale una rete di code ammette distribuzione stazionaria
è che la “capacità del servizio” di ogni singolo nodo sia strettamente maggiore
della frequenza media effettiva degli arrivi, ovvero ρj = λj /µj < 1, j = 1, . . . , m.
Quindi, in virtù del Teorema di Jackson, per studiare una rete di code aperta
di Jackson nel caso monoservente è sufficiente determinare le frequenze medie
effettive degli arrivi a ciascun nodo j date da λj e analizzare indipendente ogni
singolo nodo. Quindi si verifica che risulti ρj = λj /µj < 1 e si determinano
le misure di prestazione ad ogni singolo nodo. Queste verranno poi aggregate
opportunamente per avere indicazioni sulla rete. Quindi per ottenere il numero
medio di utenti nella rete N , si sommano tutti i valori Nj di ogni singolo nodo,
ovvero
m
X
N= Nj ,
j=1

dove Nj = λj /(µj − λj ) è il numero medio di utenti nel nodo j−esimo. Per


determinare il tempo medio di permanenza nella rete si usa il Teorema di Little
e quindi
Xm
N
T = , dove λ= γi .
λ i=1

Se inoltre volessimo determinare il tempo medio di permanenza in un nodo j, si


deve porre attenzione al fatto che esso, in generale, non è pari a Tj = 1/(µj − λj ),
Questo perché le Tj rappresentano il tempo medio di permanenza nel nodo j
ogni volta che l’utente viene processato nel nodo j−esimo e quindi coincide con
il valore che stiamo cercando solo se l’utente visita il nodo j una sola volta,
Visit count altrimenti andrà moltiplicato per il valore atteso del numero delle visite di un
utente al nodo j (visit count) che indichiamo con νj . Il calcolo di tale numero
P
è molto semplice: si consideri, infatti, il rapporto γj / m i=1 γi = γj /λ che è la
frazione di utenti che, proveniendo dall’esterno, visitano come primo nodo il nodo
RETI DI CODE 97

j−esimo e quindi rappresenta la probabilità che la prima visita di un utente sia


al nodo j−esimo. Inoltre una frazione pij di utenti visitano il nodo j−esimo
proveniendo dal nodo i−esimo. Quindi si ha
m
γj X
νj = + pij νi
λ i=1

che ammette come soluzione (confrontare la (1.8.2))


λj
νj = . (1.8.7)
λ
Note le µj , j = 1, . . . , m, alternativamente si può calcolare T nella forma7
m
X
T = νj Tj .
j=1

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.

Fig. 1.8.5 Rete dell’Esempio 1.8.3

Calcoliamo innanzitutto le frequenze medie effettive (λ1 e λ2 ). Dalla (1.8.2) si ha il seguente


sistema n
λ1 = 10 + 0.1λ2
λ2 = λ1
dal quale si ricava
λ1 = λ2 = 11.111.
Le condizioni per l’esistenza della distribuzione stazionaria sono ovviamente verificate in quanto
risulta ρ1 = λ1 /µ1 < 1 e ρ2 = λ2 /µ2 < 1. Si ricavano
ρ1 ρ2
N1 = = 12.5, N2 = = 2.85, N = N1 + N2 = 15.35 pezzi,
1 − ρ1 1 − ρ2

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

da cui T = N/λ = 1.535 ore.


Per quanto riguarda il valore atteso del numero delle visite risulta
λ1 λ2
ν1 = = 1.111, ν2 = = 1.111.
λ λ
Si ha inoltre
1 1
T1 = = 1.125 ore, T2 = = 0.257 ore,
µ1 − λ1 µ2 − λ2
e quidi alternativamente si può calcolare

T = 1.111 · 1.125 + 1.111 · 0.257 = 1.535 ore.

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.

Teorema 1.8.3 – Tereoma di Jackson. La distribuzione di probabilità con-


giunta che la rete si trovi allo stato n = (n1 , . . . , nm ) si fattorizza nel prodotto
di tutte le distribuzioni marginali, ovvero

P (n) = P (n1 , . . . , nm ) = pn1 pn2 · · · pnm ,

dove  Ã !nj

 1 λj

 p0j , per nj < sj
n ! µ
j j
pnj = Ã !nj

 1 λj

 p0j , per nj ≥ sj
 nj −sj
s!s µj

Di questo teorema non forniamo per brevità la dimostrazione.


RETI DI CODE 99

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.

Fig. 1.8.6 Rete dell’Esempio 1.8.5

Risulta s1 = 1, s2 = 3, s3 = 7 e µ1 = 120, µ2 = 10, µ3 = 3. Inoltre si ha γ1 = 35 e γ2 = γ3 = 0.


La matrice di routing è Ã !
0 0.55 0.45
0 0 0.02
0 0.01 0
100 TEORIA DELLE CODE

Calcoliamo la frequenza effettiva utilizzando il sistema (1.8.2):


(
λ1 = 35
λ2 = 35 · 0.55 + λ3 · 0.01
λ3 = 35 · 0.45 + λ2 · 0.02
dal quale si ricavano
λ1 = 35, λ2 = 19, 411, λ3 = 16.138.
Si verifica immediatamente che risulta ρj = λj /(sj µj ) < 1 per j = 1, 2, 3 e quindi esiste una
distribuzione stazionaria per la rete in esame. A questo punto è sufficiente ricavare
• per il primo sistema, dal modello M/M/1 con λ1 = 35 e µ1 = 120, N1q = 0.120 e
N1 = 0.412;
• per il secondo sistema, dal modello M/M/3 con λ2 = 19, 411 e µ2 = 10, N2q = 0.765 e
N2 = 2.706;
• per il terzo sistema, dal modello M/M/7 con λ3 = 16.138 e µ3 = 3, N3q = 1.402 e
N3 = 6.781.
Si ottiene immediatamente N = N1 + N2 + N3 = 9.899 e quindi
N N 9.899
T = = = = 0.283 ore,
λ γ1 + γ2 + γ3 35
ovvero T = 17 minuti circa.

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

1.8.5 Reti di Jackson chiuse

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

che quindi ora è un sistema omogeneo che in forma matriciale si scrive

(I − P T )Λ = 0,

dove Λ = (λ1 , . . . , λm )T e P è la matrice di routing. Ora, poiché nessun utente


può lasciare la rete deve risultare
m
X
pij = 1,
j=1

e quindi la matrice (I −P ) non è a rango pieno e il sistema ha almeno un’equazione


ridondante, ovvero le m equazioni del sistema non sono indipendenti. Suppo-
nendo che il rango della matrice (I − P ) sia pari a m − 1, il sistema ammette
infinite soluzioni. Quindi usando le m − 1 equazioni indipendenti del sistema si
possono determinare le λj , j = 1, . . . , m a meno di una costante moltiplicativa.
102 TEORIA DELLE CODE

Siano {λ̄j , j = 1, . . . , m} una soluzione positiva del sistema (1.8.8) e µj la


velocità media di servizio nel j−esimo nodo.
Esaminiamo inizialmente il caso monoservente, supponendo quindi che il sistema
presente in ciascun nodo sia monoservente e sia ρj = λ̄j /µj . Possiamo ora enun-
ciare l’equivalente del Teorema di Jackson per reti chiuse.

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

Dimostrazione: La dimostrazione è analoga a quella del Teorema di Jackson per


reti aperte e, in questo caso, si ottiene
m
Y nj
P (n1 , . . . , nm ) = ρj C,
j=1

dove C è una costante che possiamo determinare imponendo che


X m
Y nj
C ρj = 1
n1 ,n2 ,...,nm j=1
n1 +n2 +···nm =N

dalla quale si ottiene


1
C= X .
ρn1 1 ρn2 2 · · · ρnmm
n1 ,n2 ,...,nm
n1 +n2 +···nm =N

Il teorema si estende anche al caso multiservente. Supponiamo quindi che in ogni


nodo siano presenti sj serventi e si introduca la quantità
νj
Xj =
µj
che rappresenta il tempo medio che un utente passa in servizio presso il nodo
j−esimo e dove νj è il valore atteso del numero delle visite al nodo j−esimo che
soddisfa l’equazione
m
X
νj = pij νj .
i=1
RETI DI CODE 103

Allora vale il seguente teorema.

Teorema 1.8.5 – Teorema di Gordon–Newell. La distribuzione con-


giunta che la rete si trova nello stato n = (n1 , . . . , nm ) è data da
m
1 Y
P (n) = P (n1 , . . . , nm ) = p̂n ,
G(N ) j=1 j

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

È evidente l’analogia formale tra il Teorema di Jackson per le reti aperte e il


Teorema di Gordon–Newell. Il coefficiente G(N ) è solamente un fattore di nor-
malizzazione che garantisce che la somma di tutte le probabilità sia pari a 1. La
determinazione di tale fattore di normalizzazione G(N ) può essere non banale
per il fatto che la somma che lo definisce è estesa a tutti gli stati possibili della
rete e tale numero può risultare molto elevato. Per ovviare a tale inconveniente
sono stati definiti algoritmi ricorsivi la cui trattazione esula dallo scopo di queste
note.
104 TEORIA DELLE CODE

1.9 RIFERIMENTI DEL CAPITOLO 1

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à.

Bhat, U. (2008). An Intoduction to Queueing Theory. Birkhauser, Boston.


Bertsekas, D., Gallager, R. (1991). Data Networks. Prentice Hall,
Upper Saddle River, NJ, second edition.
Billingsley, P. (1979). Probability and mesaure. Wiley and Sons, New
York.
Cooper, R. (1981). Introduction to queueing theory. North Holland, New
York.
Gross, D., Harris, C. (1998). Fundamental of queueing theory. Wiley and
Sons, New York, third edition.
Kleinrock, L. (1975). Queueing systems, vol. I: Theory. Wiley, New York.
Disponibile nella traduzione italiana: Sistemi a coda, Introduzione alla teoria
delle code, Hoepli, 1992.
Kleinrock, L. (1976). Queueing systems, vol. II: Computer Applications.
Wiley, New York.
Hillier, F., Lieberman, G. (2001). Introduction to operations research.
McGraw – Hill, New York.
Ross, S. (2003). Introduction to probability models. Academic Press, San
Diego.
ESERCIZI DI RIEPILOGO 105

1.10 ESERCIZI DI RIEPILOGO

Esercizio 1.10.1 Dato un processo di nascita e morte con

λk = αk λ k ≥ 0, 0≤α<1
µk = µ k≥1

Ricavare l’espressione delle probabilità pk (in funzione di p0 ).

Esercizio 1.10.2 Si consideri un sistema M/M/1 con parametri λ e µ assegnati.


− αk
Si supponga che all’arrivo gli utenti entrano nel sistema con probabilità e µ ,
dove k è il numero degli utenti presenti nel sistema e α ≥ 0.
a) Ricondurre il sistema ad un processo di nascita e morte.
b) Determinare sotto quali condizioni il sistema è stabile.
c) Ricavare l’espressione per le probabilità pk (in funzione di p0 ).

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.

Esercizio 1.10.4 Un addetto al reparto spedizioni di un’industria manufatturi-


era riceve ordini e li evade; egli è in grado di evadere, in media, 15 ordini al
giorno e i tempi necessari per elaborare gli ordini sono esponenziali. In media,
ogni giorno, vengono ricevuti in maniera casuale (arrivi poissoniani), 12 ordini da
evadere; tali ordini si dividono in 3 categorie di importanza che nell’ordine sono:
1. riordini: ordini da evadere non appena l’addetto è libero, ovvero non appena
ha terminato le operazioni di spedizioni dell’ordine che sta elaborando;
2. ordini normali: ordine di minore importanza rispetto ai riordini che però è
bene evadere al più presto;
106 TEORIA DELLE CODE

3. ordini secondari: ordini destinati ad un magazzino e che quindi possono


attendere anche un tempo lungo per essere evasi.

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

a) il tempo medio di permanenza nel reparto spedizioni;

b) il tempo medio di attesa che passa tra la ricezione dell’ordine da parte del
reparto e l’inizio della sua elaborazione;

c) il numero medio di ordini che sono presso tale reparto spedizioni;

d) il numero medio di ordini che sono presso tale reparto spedizioni in attesa
di essere elaborati.

Determinare, inoltre, come cambiano i tempi di permanenza nel reparto spedi-


zioni se si assume che l’arrivo di un’ordine di importanza maggiore implica la sua
elaborazione immediata e quindi una eventuale interruzione dell’elaborazione di
un altro ordine.

Esercizio 1.10.5 Un piccolo albergo dispone di 5 camere e vuole effettuare


un’analisi sul servizio prestato alla clientela. Da un’indagine su dati che si
riferiscono ad anni passati si è dedotto che i clienti arrivano casualmente (ar-
rivi poissoniani) in media 3 al giorno e che la loro permanenza media nell’albergo
è di un giorno ed è distribuita esponenzialmente. Naturalmente, un cliente che
arriva e trova l’albergo pieno, si rivolgerà ad un altro albergo.

1. Descrivere un modello di code che permette di rappresentare il sistema ora


descritto.

2. Determinare la probabilità che nell’albergo non vi sia nessun cliente.

3. Determinare la probabilità che un cliente arriva e trova l’albergo pieno.

4. Determinare il numero medio di clienti presenti nell’albergo.

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

ma non è nota la distribuzione di probabilità secondo la quale esse vengono real-


izzate. Si dispone tuttavia, dei dati relativi al numero dei giorni impiegati l’anno
precedente per costruire le case che sono state realizzate durante l’anno; essi sono
pari a 30, 32, 29, 34, 27, 29, 29, 33, 30 e 31 giorni (utilizzando questi dati è possi-
bile calcolare la varianza della distribuzione, assumendo che un anno si compone
di 365 giorni).
1. Descrivere un sistema di code che permetta di studiare questo problema.
2. Determinare il tempo medio che trascorre tra la stipula del contratto e
l’effettiva entrata in possesso della casa da parte dell’acquirente.
3. Determinare il numero medio di contratti attivi, ovvero stipulati ma senza
aver effettuato ancora la consegna della casa all’acquirente.
4. Determinare come cambiano le due misure di prestazione calcolate ai due
punti precedenti se si assume che i tempi di costruzione delle case sono
distribuiti esponenzialmente.
5. Descrivere come è possibile intervenire sui tempi di costruzione delle case
per minimizzare il tempo necessario per la consegna delle case agli ac-
quirenti, determinando come cambiano, in questo caso, le due misure di
prestazione già calcolate.

Esercizio 1.10.7 Presso un parrucchiere arriva, in media, un cliente ogni 30


minuti e si assume che tali arrivi siano distribuiti esponenzialmente. Il parruc-
chiere ha tempi di servizio che possiamo assumere anch’essi distribuiti esponen-
zialmente e in media impega 20 minuti per servire un cliente. Calcolare:
a) La probabilità che il parrucchiere non sia impegnato a servire un cliente.
b) La probabilità che presso il negozio del parrucchiere siano presenti più di
tre clienti (tra quelli in coda e quello che sta usufruendo del servizio).
c) Il numero medio di clienti presenti presso il parrucchiere.
d) Il tempo medio che un cliente passa in attesa prima di essere servito e il
tempo medio di permanenza presso il negozio del parruchiere.
e) Il numero medio di clienti che sono in coda in attesa di essere serviti.
Supponiamo, ora che presso il parruchiere possano esserci al più tre clienti: due in
attesa e uno che è servito. Per motivi di spazio, gli eventuali ulteriori clienti non
possono entrare quando presso il parruchiere è già presente il massimo numero di
clienti. Calcolare, in questo caso:
a) La probabilità che il negozio del parrucchiere è pieno (ovvero tre utenti sono
presenti nel negozio).
108 TEORIA DELLE CODE

b) La frequenza media effettiva di arrivo.

c) La lunghezza media della fila d’attesa (ovvero il numero medio di clienti


che è in attesa) e il tempo medio passato da un utente in coda.

d) Il numero medio di clienti presenti presso il parruchiere (ovvero nel negozio).

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.

Esercizio 1.10.8 In un’industria manifatturiera un operaio dispone di un’officina


ed è responsabile della manutenzione di 4 macchine utensili. Le macchine lavo-
rano, in media, per 15 minuti e poi richiedono 5 minuti di manutenzione in offic-
ina. Sia i tempi di lavoro delle macchine prima dell’effettuazione della manuten-
zione, sia i tempi richiesti per la manutenzione sono distribuiti esponenzialmente.

a) Descrivere un sistema di code che rappresenta bene la situazione descritta.

b) Calcolare la probabilità che nell’officina non sia presente nessuna macchina.

c) Calcolare il numero medio di macchine presenti nell’officina in attesa di


effettuare la manutenzione.

d) Calcolare il tempo medio di attesa in coda nell’officina da parte delle mac-


chine prima della manutenzione

Esercizio 1.10.9 Un impiegato di un ufficio addetto al rilascio di autorizzazioni,


deve esaminare, per ciascuna persona che la richiede, alcuni moduli e impiega in
media 8 minuti a rilasciare un’autorizzazione. Arrivano, in media, 6 persona
l’ora ad effettuare tale richiesta. Il tempo impiegato per esaminare i moduli e
rilasciare l’autorizzazione è distribuito esponenzialmente e gli arrivi delle persone
sono poissoniani.

a) Descrivere il sistema di code che rappresenta bene la situazione descritta.

b) Calcolare la probabilità che l’impiegato non sia impegnato.

c) Calcolare il numero medio di persone che sono in coda in attesa di essere


servite.

d) Calcolare il numero medio di presone presenti presenti nell’ufficio.

e) Calcolare il tempo medio che una persona passa in attesa prima di essere
servita.

f) Calcolare il tempo medio di permanenza presso l’ufficio.


ESERCIZI DI RIEPILOGO 109

g) Calcolare la probabilità che nell’ufficio siano presenti 5 persone.


Supponiamo, ora che per motivi di spazio, il numero delle persone che possano
essere contenute nell’ufficio sia limitato e pari a 4. Calcolare, in questo caso:
h) La probabilità che l’impiegato non sia impegnato.
i) La frequenza media effettiva di arrivo.
l) La lunghezza media della fila d’attesa (ovvero il numero medio di persone
che è in attesa)
m) Il tempo medio passato da una persona in coda.

Esercizio 1.10.10 Un’industria dispone di un magazzino dove gli operai possono


reperire gli attrezzi di cui hanno bisogno. Nel magazzino può entrare un operaio
alla volta ed impiega, in media, 12 minuti per trovare quello che gli occorre. Se
arriva un altro operaio e trova il magazzino già occupato aspetta che l’operaio
che è attualmente nel magazzino esca prima di entrare. Gli operai sono 5 e
cercano, in media un attrezzo ogni 15 minuti. Si suppone che gli arrivi degli
operai al magazzino siano poissoniani e che i tempi per la ricerca degli attrezzi
siano distributi esponenzialmente.
a) Descrivere un sistema di code che rappresenta bene la situazione descritta.
b) Calcolare la probabilità che nel magazzino non sia presente nessun operaio.
c) Calcolare la probabilità che tutti i 5 operai siano contemporaneamente
presso il magazzino (uno all’interno, gli altri in attesa).
d) Calcolare il numero medio di operai in attesa di entrare nel magazzino.

Esercizio 1.10.11 In una stazione di servizio ci sono quattro postazioni per


l’autolavaggio, identiche, indipendenti e che lavorano in parallelo. Le auto ar-
rivano alla stazione di servizio casualmente (arrivi poissoniani) in media 34 l’ora.
Il tempo del lavaggio è uguale in ciascuna postazione ed è distribuito esponen-
zialmente e in media vengono lavate 10 auto l’ora. Un auto che arriva e trova
tutte le quattro postazioni occupate aspetta in fila il suo turno (le auto vengono
lavate sulla base del primo arrivato, primo servito)
a) Descrivere un sistema di code che rappresenti la situazione descritta;
b) calcolare la probabilità che ci siano piú di 3 auto in attesa del lavaggio;
c) calcolare il numero medio di auto che sono in attesa del lavaggio;
d) spiegare che cosa accadrebbe al sistema di code se tre delle quattro postazioni
fossero non funzionanti, ovvero se la stazione di servizio fosse dotata di una
sola postazione.
110 TEORIA DELLE CODE

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.

e) Descrivere un sistema di code che rappresenti la situazione descritta;

f) calcolare la probabilità che le quattro postazioni siano tutte libere;

g) calcolare la probabilità che un’auto ha di dover rinunciare 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.

h) Descrivere un sistema di code che rappresenti questa prima variazione op-


erativa;

i) calcolare, in questo caso, la probabilità che un’auto ha di dover rinunciare


ad entrare nella stazione di servizio.

Un’altra variazione operativa rispetto al sistema descritto al punto e) consiste


nell’eliminare tre postazioni, lasciandone una solamente e raddoppiando lo spazio
del parcheggio per permettere l’attesa.

l) Descrivere un sistema di code che rappresenti questa seconda variazione


operativa;

m) calcolare la probabilità che un’auto ha di dover rinunciare ad entrare nella


stazione di servizio;

n) calcolare il numero medio di auto che sono in attesa del lavaggio;

o) calcolare il tempo che, in media, un auto trasorre presso la stazione di


servizio;

p) dire sotto quali condizioni c’è il raggiungimento delle condizioni stazionarie.


Appendice A:
Formulario – Sistemi a coda

A.1 MODELLI BASATI SU PROCESSI DI NASCITA E MORTE

A.1.1 Sistemi M/M/1

pn = (1 − ρ)ρn

λ
N =
µ−λ
λ2
Nq =
µ(µ − λ)
1
T =
µ−λ
λ
Tq =
µ(µ − λ)

111
112 FORMULARIO – SISTEMI A CODA

A.1.2 Sistemi M/M/s

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 − ρ

A.1.3 Sistemi M/M/1/K

(ρ 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

A.1.4 Sistemi M/M/s/K

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

A.1.5 Sistemi M/M/1/ · /U

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

A.1.6 Sistemi M/M/s/ · /U

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

A.1.7 Sistemi con λ e µ dipendenti dallo stato – singolo servente

µ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

A.1.8 Sistemi con λ e µ dipendenti dallo stato – multiservente


 λ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

A.1.9 Sistemi M/M/∞

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

A.2 MODELLI CON DISTRIBUZIONI NON ESPONENZIALI

A.2.1 Sistemi M/G/1

1
σ2 +
µ2
Tq = λ
2(1 − ρ)
λ σ 2 + ρ2
2
Nq =
2(1 − ρ)
λ2 σ 2 + ρ2
N = +ρ
2(1 − ρ)
λσ 2 + λ/µ2 1
T = +
2(1 − ρ) µ

A.2.2 Sistemi M/D/s

1 λ
Tq =
2 µ(µ − λ)
1 ρ2
Nq =
2 1−ρ
ρ2
N = +ρ
2(1 − ρ)
λ/µ2 1
T = + .
2(1 − ρ) µ

A.2.3 Sistemi M/Ek /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

A.3 MODELLI CON DISCIPLINA DELLA CODA BASATA SU CRITERI DI


PRIORITÀ

A.3.1 Priorità senza interruzione del servizio

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 −

A.3.2 Priorità con interruzione del servizio – singolo servente

1
µ
Tk = , k = 1, . . . , nc
bk−1 bk
2
Simulazione

Con il termine simulazione si intende la riproduzione del comportamento di un


sistema. In generale, si parla di simulazione sia nel caso in cui viene utilizzato
un modello concreto, sia nel caso in cui viene utilizzato un modello astratto che
riproduce la realtà mediante l’uso del computer. Un esempio di modello concreto
è il modello in scala di una nave che viene poi posto in un’apposita vasca per
effettuare prove simulate allo scopo di stimare opportune misure di prestazione. È
chiaro che esistono, leggi teoriche della fisica dalle quali ottenere informazioni sulle
prestazioni della nave, ma le analisi di queste leggi è spesso troppo complicata,
per essere effettuata; naturalmente, è anche impraticabile (o quanto meno non
conveniente) la costruzione reale della nave e la prova diretta in mare.
All’interno della Ricerca Operativa, la simulazione utilizza modelli astratti che
vengono costruiti al fine di “replicare” le caratteristiche di un sistema. Essa gioca
un ruolo molto importante soprattutto nel progettare un sistema stocastico e nel
definirne le procedure operative: il funzionamento di un sistema è “simulato” uti-
lizzando distribuzioni di probabilità per generare casualmente eventi del sistema
e dal sistema simulato si ottengono osservazioni statistiche sulle prestazioni dello
stesso. Naturalmente affinché ciò possa essere realizzato è necessario costruire un
modello di simulazione, che permetta di descrivere le operazioni di un sistema e
come esse devono essere simulate.
Gli aspetti rilevanti che fanno della simulazione uno strumento largamente uti-
lizzato sono legati al fatto che essa permette di

• rappresentare sistemi reali anche complessi tenendo conto anche delle sor-
genti di incertezza;
119
120 SIMULAZIONE

• riprodurre il comportamento di un sistema in riferimento a situazioni che


non sono sperimentabili direttamente.

D’altra parte deve essere sempre tenuto sempre ben presente il fatto che

• la simulazione fornisce indicazioni sul comportamento del sistema, ma non


“risposte” esatte;

• l’analisi dell’output di una simulazione potrebbe essere complessa e potrebbe


essere difficile individuare quale può essere la configurazione migliore;

• l’implementazione di un modello di simulazione potrebbe essere laboriosa


ed inoltre potrebbero essere necessari elevati tempi di calcolo per effettuare
una simulazione significativa.

2.1 GENERALITÀ SUI MODELLI DI SIMULAZIONE

Come abbiamo già osservato, per simulare il comportamento di un sistema è


necessario costruire un modello di simulazione. Il modello dovrà essere suffi-
cientementre complesso da rispondere alle esigenze dal caso, ma deve comunque
rimanere il più semplice possibile. Devono inotre essere chiari i limiti di utilizzo
del modello stesso.

2.1.1 Elementi di un modello di simulazione

Vediamo ora gli elementi che costituiscono un modello di simulazione.

• 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.

2.1.2 Classificazione dei modelli si simulazione

I modelli di simulazione si possono classificare in base a diversi criteri; una prima


distinzione già vista è tra
• modelli continui, in cui le variabili variano con continuità;

• 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;

• modelli dinamici, che rappresentano un sistema in evoluzione nel tempo.


Infine, si possono distinguere
• modelli deterministici, che non contengono componenti probabilistici;

• modelli stocastici, che presentano elementi soggetti ad aleatorietà.


In questa trattazione considereremo modelli di simulazione discreti, dinamici,
stocastici che vengono comunemente chiamati modelli di simulazione ad eventi
discreti. Molte applicazioni sono ben rappresentate da modelli di questo tipo
ed inoltre approssimando variazioni continue con variazioni discrete è possibile
utilizzare modelli ad eventi discreti anche per approssimare il comportamento di
sistemi continui semplificando quindi molto l’analisi.

2.1.3 Simulazione ad eventi discreti

Nella simulazione ad eventi discreti il sistema è rappresentato, nella sua evoluzione


nel tempo, con variabili che cambiano instantaneamente il loro valore in ben
definiti istanti di tempo appartenenti ad un insieme numerabile. Questi istanti
sono quelli nei quali accadono gli eventi. È chiaro che, essendo questi modelli
di natura dinamica, è necessario registrare, ovvero tenere memoria, del tempo
GENERALITÀ SUI MODELLI DI SIMULAZIONE 123

(simulato) che procede. In particolare sarà necessario definire un meccanismo di


avanzamento del tempo per far procedere il tempo simulato da un valore ad un
altro. La variabile che in un modello di simulazione fornisce il valore corrente del “Simulation
tempo simulato si chiama “simulation clock ”, ed esistono due modi per definire clock”
il suo avanzamento:
• avanzamento del tempo al prossimo evento,
• avanzamento del tempo ad incrementi prefissati.
Il primo è quello più diffuso ed è quello a cui faremo riferimento. In questo caso il
“simulation clock” è inizializzato a zero e viene avanzato al tempo dell’accadimento
del primo degli eventi futuri; poi il sistema viene aggiornato tenendo conto
dell’evento che è accaduto, si aggiornano i tempi degli eventi futuri e si itera
il procedimento. A differenza dell’avanzamento ad incrementi prefissati, i periodi
di inattività non vengono considerati.
Un esempio può essere visto considerando un sistema di code in cui gli eventi sono
l’arrivo di un cliente, la conclusione di un servizio; entrambi sono eventi perché
provocano il cambiamento di valore di qualche variabile di stato. Il meccanismo
di avanzamento del tempo segue in questo caso l’accadere di questi due eventi
nell’ordine cronologico in cui essi si verificano.

Un esempio di simulazione ad eventi discreti


Vediamo, ora, un semplice esempio di come si realizza un simulazione ad eventi
discreti. Consideriamo a tale scopo un sistema a coda costituito da una coda e
da un singolo servente e supponiamo che i tempi di interarrivo siano uniforme-
mente distribuiti tra 1 e 3 minuti e che anche i tempi di servizio siano uni-
formemente distribuiti tra 0.5 e 2 minuti. Vediamo, ora, come si può effettuare
una simulazione di questo sistema. Poiché si tratta di un sistema regolato da
due processi stocastici (gli arrivi e i servizi) per generare gli eventi è necessario
generare osservazioni casuali dalle due distribuzioni di probabilità che regolano
i due processi (come questo può essere effettuato sarà oggetto di considerazioni
successive nel paragrafo 2.4). Supponiamo di avere a disposizione le due liste
che forniscono, rispettivamente i tempi di interarrivo generati casualmente dalla
distribuzione corrispondente e i tempi di servizio anch’essi generati casualmente
dalla distribuzione corrispondente:

Tempi di interarrivo Tempi di servizio

1.9 1.7
1.3 1.8
1.1 1.5
1.0 0.9
.. ..
. .
124 SIMULAZIONE

Supponendo che al tempo t = 0 nessun utente è presente nel sistema. Osservando


i valori campionati riportati nelle due liste, si ricava facilmente la successione degli
eventi:

Tempo t Eventi

1.9 arriva un utente inizia il servizio


3.2 arriva un utente e si pone in coda
3.6 finisce un servizio e il primo utente in coda inizia il servizio
4.3 arriva un utente e si pone in coda
5.3 arriva un utente e si pone in coda
5.4 finisce un servizio e il primo utente in coda inizia il servizio
.. ..
. .

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.

2.1.4 Schema dello studio di un problema basato sulla simulazione

In questo paragrafo riportiamo uno schema che descrive la successione delle varie
fasi che caratterizzano uno studio basato sulla simulazione.

1. Analisi del problema


Consiste nel comprendere il problema cercando di capire quali sono gli scopi
dello studio e di identificare quali sono le componenti essenziali e quali sono
le misure di prestazione che interessano. Naturalmente, se una versione
del sistema è già operativa, si deve osservare tale sistema per dedurne le
caratteristiche fondamentali.

2. Formulazione del modello di simulazione


Poiché stiamo trattando sistemi stocastici, per formulare un modello di si-
GENERALITÀ SUI MODELLI DI SIMULAZIONE 125

mulazione è necessario conoscere le distribuzioni di probabilità delle quan-


tità di interesse. Infatti, per generare vari scenari rappresentativi di come
un sistema funziona, è essenziale che una simulazione generi osservazioni
casuali da queste distribuzioni. Ad esempio, nei sistemi a coda è necessaria
la distribuzione dei tempi di interarrivo e i tempi di servizio; nella gestio-
ne delle scorte è necessaria la distribuzione della richiesta dei prodotti e la
distribuzione del tempo tra un’ordine e il ricevimento della merce; nella ges-
tione dei sistemi di produzione con macchine che occasionalmente possono
guastarsi, sarà necessario conoscere la distribuzione del tempo fino a che
una macchina si guasta e la distribuzione dei tempi di riparazione. General-
mente è possibile solo stimare queste distribuzioni derivandole, ad esempio,
dall’osservazione di sistemi simili già esistenti. Se dall’analisi dei dati si vede
che la forma di questa distribuzione approssima una distribuzione tipo stan-
dard, si può utilizzare la distribuzione teorica standard effettuando un test
statistico per verificare se i dati possono essere rappresentati bene mediante
quella distribuzione di probabilità. Se non esistono sistemi simili dai quali
ottenere dati osservabili si deve far ricorso ad altre fonti di informazioni:
specifiche delle macchine, manuali di istruzioni delle stesse, studi sperimen-
tali, etc.
La costruzione di un modello di simulazione è un procedimento complesso.
In particolare, facendo riferimento alla simulazione ad eventi discreti, la
costruzione di un modello prevede le seguenti fasi:

(a) Definizione delle variabili di stato.


(b) Identificazione dei valori che possono essere assunti dalle variabili di
stato.
(c) Identificazione dei possibili eventi che fanno cambiare lo stato del sis-
tema.
(d) Realizzazione di una misura del tempo simulato, “simulation clock”,
che registra lo scorrimento del tempo simulato.
(e) Realizzazione di un metodo per generare casualmente gli eventi.
(f) Identificazione delle transizioni di stato generate dagli eventi.

3. Analisi del modello di simulazione


Nella fase di analisi del modello deve essere verificata l’accuratezza del mo-
dello realizzato con diverse modalità. Di solito ciò viene fatto attraverso
un’analisi concettuale del modello che può essere effettuata insieme agli
esperti del settore applicativo in modo da evidenziare eventuali errori e/o
omissioni.
126 SIMULAZIONE

4. Scelta del software e costruzione di un programma


Dopo aver costruito il modello, esso deve essere tradotto in un programma.
A tale scopo è possibile utilizzare diversi strumenti.

• Linguaggi “general purpose”.


Linguaggi come C++, FORTRAN, etc. Erano molto utilizzati alla
nascita della simulazione ma richiedono molto tempo di program-
mazione e quindi si preferisce, in genere, utilizzare linguaggi specifici
per la simulazione.
• Linguaggi di simulazione generali.
Forniscono molte caratteristiche necessarie per realizzare un modello
di simulazione riducendo cosı̀ il tempo di realizzazione; esempi sono
MODSIM, GPSS, SIMSCRIPT, etc. Anche se meno flessibili dei lin-
guaggi “general purpose” sono il modo più naturale per realizzare un
modello di simulazione.
• Simulatori.
Sono packages per la simulazione orientati alle applicazioni. Esistono
numerosi pacchetti software di tipo interattivo per la simulazione come
ARENA, WITNESS, EXTEND, MICRO SAINT. Alcuni sono abbastanza
generali anche se dedicati a specifici tipi di sistemi come impianti
industriali, sistemi di comunicazione, altri invece sono molto speci-
fici come, ad esempio, nel caso di simulatori di centrali nucleari o di
simulatori della fisiologia cardiovascolare. I simulatori permettono di
costruire un programma di simulazione utilizzando menù grafici senza
bisogno di programmare. Sono abbastanza facili da imparare e un in-
conveniente che molti di essi hanno è di essere limitati a modellare quei
sistemi previsti dalle loro caratteristiche standard. In ogni caso alcuni
simulatori prevedono la possibilità di incorporare routines scritte in un
linguaggio general purpose per trattare elementi non standard. Spesso
hanno anche capacità di animazione per mostrare la simulazione in
azione e questo permette di illustrare facilmente la simulazione anche
a persone non esperte.
• Fogli elettronici (spreadsheets).
Quando si hanno problemi di piccole dimensioni si possono anche uti-
lizzare fogli elettronici, come ad esempio Excel, per avere un’idea del
funzionamento di un sistema.

5. Validazione del modello di simulazione


Nella fase successiva è necessario verificare se il modello che è stato realiz-
zato fornisce risultati validi per il sistema in esame. Più in particolare si
deve verificare se le misure di prestazione del sistema reale sono bene ap-
prossimate dalle misure generate dal modello di simulazione. Ciò è molto
GENERALITÀ SUI MODELLI DI SIMULAZIONE 127

difficile da effettuare, specialmente in fase di progettazione quando il sis-


tema reale non esiste.

6. Progettazione della simulazione


Prima di passare all’esecuzione della simulazione è necessario decidere come
condurre la simulazione. Spesso una simulazione è un processo che evolve
durante la sua realizzazione e dove i risultati iniziali aiutano a condurre la
simulazione verso configurazioni più complesse. Ci sono inoltre problem-
atiche di tipo statistico:

• la determinazione della lunghezza del transitorio del sistema prima di


raggiungere condizioni di stazionarietà, momento dal quale si inizia
a raccogliere dati se si vogliono misure di prestazione del sistema a
regime;
• la determinazione della lunghezza della simulazione (durata) dopo che
il sistema ha raggiunto l’equilibrio. Infatti, si deve sempre tener pre-
sente che la simulazione non produce valori esatti delle misure di
prestazione di un sistema in quanto ogni singola simulazione può essere
vista come un “esperimento statistico” che genera osservazioni statis-
tiche sulle prestazioni del sistema. Queste osservazioni sono poi uti-
lizzate per produrre stime delle misure di prestazione e naturalmente
aumentando la durata della simulazione può aumentare la precisione
di queste stime.

7. Esecuzione della simulazione e analisi dei risultati


L’output della simulazione fornisce stime statistiche delle misure di presta-
zione di un sistema. Un punto fondamentale è che ogni misura sia accompa-
gnata dall’“intervallo di confidenza” all’interno del quale essa può variare.
Questi risultati potrebbero evidenziare subito una configurazione del sis-
tema migliore delle altre, ma più spesso verranno identificate più di una
configurazione candidata ad essere la migliore. In questo caso potrebbero
essere necessarie ulteriori indagini per confrontare queste configurazioni.

8. Presentazione delle conclusioni


In conclusione, è necessario redigere una relazione ed una presentazione
che riassuma lo studio effettuato, come è stato condotto e includendo la
documentazione necessaria. Includere nella presentazione un’animazione di
una simulazione è di solito molto efficace.

2.1.5 Applicazioni tipiche della 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

specifiche in cui la simulazione può essere utilizzata. Come esempi, riportiamo,


di seguito, solo alcune importanti tipiche categorie di applicazioni in cui si usa la
simulazione.

• Progettazione e definizione delle procedure operative di un sistema di servizio.

• Gestione di sistemi di scorte.

• Progetto e definizione delle procedure operative di sistemi di produzione.

• Progetto e funzionamento del sistemi di distribuzione.

• Analisi dei rischi finanziari.

• Gestione dei progetti.


ELEMENTI DI STATISTICA INFERENZIALE 129

2.2 ELEMENTI DI STATISTICA INFERENZIALE

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].

2.2.1 Statistiche campionarie e loro distribuzione

In generale, nello studio di un fenomeno riguardante un insieme di elementi (popo-


lazione) che presenta caratteristiche aleatorie, molto spesso si dispone solo di
informazioni su una parte di essi (campione) e si vogliono dedurre proprietà ge-
nerali riguardanti l’intera popolazione. L’inferenza statistica si occupa di questa
problematica e riveste un importante strumento di analisi.
Solitamente viene fatta l’assunzione che esiste una distribuzione di probabilità
della popolazione nel senso che se da essa vengono estratti casualmente alcuni
elementi, ad essi sono associate variabili aleatorie indipendenti identicamente
distribuite secondo tale distribuzione. In questo senso, un insieme di variabili
aleatorie X1 , . . . , Xn di variabili aleatorie indipendenti tutte con la stessa dis-
tribuzione si dice campione di questa distribuzione. L’interesse principale risiede
nella possibilità di dedurre caratteristiche della distribuzione non nota sulla base
dei dati a disposizione. Naturalmente ci sono casi in cui della distribuzione della
popolazione non si conosce nulla (se non il fatto che essa è discreta o continua),
mentre in altri casi la distribuzione è nota ma non sono noti alcuni suoi parametri.
Esamineremo entrambi i casi, introducendo, innanzitutto alcuni elementi che
riguardano le statistiche campionarie e la loro distribuzione.
130 SIMULAZIONE

Dato un campione X1 , . . . , Xn estratto da una popolazione, ogni funzione delle


osservazioni campionarie è chiamata statistica campionaria e i valori ottenuti da
una qualsiasi funzione dei soli valori osservati sono chiamati statistiche. I due
principali esempi di statistiche sono la media campionaria e la varianza campio-
naria.

Media campionaria e varianza campionaria


Sia dato un campione X1 , . . . , Xn estratto da una popolazione, ovvero le Xi sono
variabili aleatorie indipendenti identicamente distribuite, e sia µ e σ 2 rispetti-
vamente la loro media e la loro varianza (ovvero la media e la varianza della
popolazione).
Media cam- La media campionaria è data da
pionaria 1X n
X̄n = Xi .
n i=1

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

e si verifica facilmente che risulta E(s2n ) = σ 2 .

Distribuzione (approssimata) della media campionaria


La distribuzione della media campionaria può essere determinata grazie al Teo-
rema del limite centrale. Siano date le osservazioni X1 , . . . , Xn estratte da una
distribuzione di probabilità. Le Xi sono variabili aleatorie indipendenti identica-
mente distribuite e sia µ e σ 2 rispettivamente la loro media e la loro varianza.
Definendo la variabile aleatoria
X1 + · · · + Xn
−µ
Zn = n ,
σ

n
e la sua funzione di distribuzione Fn (z) = P (Zn ≤ z), il Teorema del Limite
Centrale afferma che
Z z
1 y2
lim Fn (z) = √ e− 2 dy, (2.2.1)
n→∞ 2π −∞
ovvero Fn (z) converge alla funzione di distribuzione della distribuzione Normale
standard. Questo risultato permette di ottenere l’importante proprietà riportata
nel seguente teorema riguardante la media campionaria X̄n .
ELEMENTI DI STATISTICA INFERENZIALE 131

Proposizione 2.2.1 Sia X1 , . . . , Xn un campione estratto da una dis-


tribuzione di probabilità a media µ e varianza σ 2 . Allora, per n sufficien-
temente grande,
X̄n − µ
σ (2.2.2)

n
è una variabile aleatoria distribuita approssimativamente secondo la distribu-
zione Normale standard.

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.

Distribuzioni delle statistiche di popolazioni normali


Assumiamo ora che la distribuzione della popolazione sia Normale a media µ e
varianza σ 2 e sia X1 , . . . , Xn un campione estratto da tale popolazione. In questo
caso ovviamente si ha che la variabile aleatoria (2.2.2) è una variabile Normale
standard per qualsiasi valore di n, ovvero vale il seguente risultato.

Proposizione 2.2.2 Sia X1 , . . . , Xn un campione estratto da una distribuzio-


ne di probabilità Normale a media µ e varianza σ 2 . Allora

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).

Si può inoltre dimostrare che vale il seguente importante risultato:

Teorema 2.2.1 Sia X1 , . . . , Xn un campione estratto da una distribuzione


Normale a media µ e varianza σ 2 . Allora

i) X̄n e s2n sono variabili aleatorie indipendenti;

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 ).

Questo teorema ha un’importante conseguenza che enunciamo nella seguente


proposizione.

Proposizione 2.2.3 Sia X1 , . . . , Xn un campione estratto da una distribuzio-


ne di probabilità Normale a media µ. Allora

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 ).

Confrontando la (2.2.3) e la (2.2.4) si nota che nella Proposizione 2.2.3 la variabile


aleatoria considerata differisce da quella considerata nella Proposizione 2.2.2 per
la presenza di sn al posto di σ. Quindi possiamo riepilogare i risultati fino ad ora
ottenuti dicendo che, data una popolazione Normale, se si normalizza la media
campionaria X̄n sottraendo la sua media µ e dividendo per la sua deviazione

standard σ/ n, si ottiene una variabile aleatoria Normale standard; se invece si

divide per sn / n, si ottiene una variabile aleatoria con distribuzione t di Student
con n − 1 gradi di libertà.
ELEMENTI DI STATISTICA INFERENZIALE 133

2.2.2 Stima di parametri

Supponiamo ora che la popolazione sia distribuita secondo una distribuzione di


probabilità nota, ma caratterizzata da uno o più parametri incogniti. Siamo
in questo caso interessati a determinare tali parametri incogniti sulla base di
un campione X1 , . . . , Xn . Si tratta di un problema di stima di parametri che
consiste nel determinare, sulla base del campione X1 , . . . , Xn , un valore per cias-
cuno dei parametri in modo che essi costituiscano la migliore approssimazione dei
parametri incogniti. Esistono diversi metodi di stima che non sono altro che tec-
niche per ricavare statistiche e che sono detti stimatori. Uno stimatore è quindi Stimatori e
una funzione h(X1 , . . . , Xn ) delle osservazioni campionarie e il valore che tale stime
funzione assume in corrispondenza di una particolare realizzazione del campione
è detto stima. Se θ è un parametro incognito, si indicherà con θb la stima di θ.
In alcuni casi si determina un unico valore θb come migliore approssimazione pos-
sibile del parametro θ e tale valore viene detto stima puntuale. In altri casi, può Stima
essere preferibile calcolare due valori dello stimatore ovvero θ1 = h1 (X1 , . . . , Xn ) puntuale
e θ2 = h2 (X1 , . . . , Xn ) che definiscono un intervallo [θ1 , θ2 ] tale che, in un cam-
pionamento ripetuto, il valore incognito θ apparterrà all’intervallo in una deter-
minata percentuale di casi che è detta confidenza dell’intervallo. In questo caso Stima per
si parla di stima per intevalli. intervalli

Proprietà degli stimatori


Continuando ad indicare con θ un parametro incognito, con θb una sua stima
e con h = h(X1 , . . . , Xn ) uno stimatore, riportiamo in questo paragrafo alcune
definizioni standard.

Definizione 2.2.4 Si definisce valore dell’errore di campionamento la dif-


ferenza θb − θ. Si chiama distorsione di uno stimatore h la differenza E(h) − θ.
L’ errore quadratico medio dello stimatore h è dato da EQM (h) = E(h − θ)2 .

Definizione 2.2.5 Uno stimatore h = h(X1 , . . . , Xn ) si dice stimatore cor-


retto del parametro θ se risulta E(h) = θ. Se invece si ha E(h) 6= θ si dice che
h è uno stimatore distorto per θ. Uno stimatore h = h(X1 , . . . , Xn ) si dice
stimatore efficiente del parametro θ se

i) E(h) = θ

ii) V ar(h) ≤ V ar(h1 ) per ogni h1 stimatore corretto di θ.


134 SIMULAZIONE

Stima di media e varianza


Supponiamo di avere un campione casuale X1 , . . . , Xn e di voler stimare stimare
la media µ e la varianza σ 2 della popolazione mediante questo campione, ovvero
supponiamo che X1 , . . . , Xn siano variabili aleatorie indipendenti identicamente
distribuite con E(Xi ) = µ e V ar(Xi ) = σ 2 , i = 1, . . . , n con µ e σ 2 non note.
Uno stimatore corretto per la media µ è dato dalla media campionaria
n
1X
µ
b = X̄n = Xi ,
n i=1

in quanto risulta E(X̄n ) = µ. Uno stimatore corretto per la varianza σ 2 è dato


dalla varianza campionaria
n
1 X ¡ ¢2
b 2 = s2n =
σ Xi − X̄n ,
n − 1 i=1

in quanto risulta E(s2n ) = σ 2 .

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

ovvero il logaritmo della funzione di verosimiglianza (log-likelihood function) che Log-


potrebbe essere più facile da massimizzare. Infatti, poichè la funzione logaritmo likelihood
è una funzione strettamente crescente, un valore θb massimizza L(θ) se e solo se θb function
massimizza `(θ). Si osservi, comunque, che l’operazione di massimizzazione non
è sempre facile e che potrebbe anche essere necessario ricorrere a metodi numerici
per risolvere l’equazione che si ottiene dall’annullamento della derivata.

Esempio 2.2.6 Date n osservazioni X1 , . . . , Xn dalla distribuzione esponenziale, determinare


con il metodo della massima verosimiglianza il parametro λ della distribuzione. La funzione di
verosimiglianza è data da
Pn
−λ Xi
L(λ) = (λe−λX1 )(λe−λX1 ) · · · (λe−λXn ) = λn e i=1 = λn e−λnX̄n .

Uguagliando a zero la derivata (rispetto a λ) si ha

dL(λ) ¡ ¢
= nλn−1 e−λnX̄n 1 − λX̄n = 0,

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

`(p) = ln L(p) = n ln p + Xi ln(1 − p).


i=1

Annulliamo quindi la derivata della `(p), ottenendo

X
n

Xi
d`(p) n i=1
= − = 0.
dp p 1−p
136 SIMULAZIONE

Risolvendo l’equazione si ottiene


1
p̂ =
1 + X̄n
e poiché risulta
d2 `(p̂)
< 0,
dp2
allora p̂ è un massimo per la `(p) e quindi anche per la funzione di massima verosimiglianza
L(p).

Esercizio 2.2.8 Siano date n osservazioni indipendenti X1 , . . . , Xn estratte dalla distribuzione


di Poisson di parametro λ. Determinare lo stimatore di massima verosimiglianza del parametro
λ.

Stime per intervalli


Nei metodi di stima puntuale è sempre presente un errore θ−θ b dovuto al fatto che
b
la stima θ in genere non coincide con il parametro θ. Sorge quindi l’esigenza di de-
terminare una misura dell’errore commesso. Inoltre, dato il campione X1 , . . . , Xn
estratto da una distribuzione di probabilità caratterizzata da un parametro inco-
gnito θ, qualunque sia lo stimatore h(X1 , . . . , Xn ) scelto per stimare θ, esso
dipende dal campione, ovvero lo stimatore fornirà stime diverse in corrispon-
denza di campioni diversi.
Queste due osservazioni fanno nascere l’esigenza di considerare stime per inter-
valli. Infatti, sulla base dei valori di θb ottenuti considerando un campione casuale
X1 , . . . , Xn , si può definire un intervallo in cui sono compresi i valori più probabili
per il parametro θ, secondo un “livello di confidenza” fissato. Per fare ciò si può
procedere indirettamente utilizzando una statistica campionaria g(X1 , . . . , Xn ) la
cui distribuzione sia nota e non dipendente da θ. Naturalmente, visto che la g è
nota, fissato un livello di confidenza (1 − α), è possibile determinare due valori
g1 e g2 , indipendenti da θ tali che, comunque scelto α ∈ (0, 1),

P (g1 ≤ g ≤ g2 ) = 1 − α.

Lo scopo è quello di tradurre una probabilità su un intervallo per g in una pro-


babilità su intervallo per θ in modo da poter avere

P (h1 ≤ θ ≤ h2 ) = 1 − α,

ovvero in modo tale che h1 e h2 rappresentino gli estremi dell’intervallo per θ.


Le distribuzioni note alle quali si fa di solito riferimento sono la distribuzione
Normale, la distribuzione t di Student e la distribuzione Chi–quadro.
Lo scopo sarà quello di avere un valore ben superiore a 0.5 in modo che la prob-
abilità che il parametro θ appartenga all’intervallo [h1 , h2 ] sia tale da assicurare
all’evento h1 ≤ θ ≤ h2 (evento che si verifica nel 100(1 − α)% dei casi) una carat-
teristica di “sistematicità”, mentre all’evento complementare (che si verifica nel
100α% dei casi) una caratteristica di “accidentalità”.
ELEMENTI DI STATISTICA INFERENZIALE 137

Formalmente si può fornire la seguente definizione.

Definizione 2.2.9 Intervallo di confidenza. Dato un campione


X1 , . . . , Xn , dato α ∈ (0, 1) e date le statistiche h1 = h1 (X1 , . . . , Xn ) e
h2 = h2 (X1 , . . . , Xn ) con h1 < h2 , per le quali

P (h1 ≤ θ ≤ h2 ) = 1 − α,

l’intervallo [h1 , h2 ] si dice intervallo di confidenza per θ con livello di confidenza


pari ad (1 − α).

Naturalmente tanto più è piccolo α, tanto più è ampio l’intervallo di confidenza


ad esso associato.

Stima per intervalli di una media


Siano date le osservazioni X1 , . . . , Xn estratte da una distribuzione di probabilità
a media µ e varianza σ 2 . Assumiamo inizialmente che la media µ sia incogni-
ta mentre la varianza sia nota. Dalla Proposizione 2.2.1 sappiamo che per n Caso
sufficientemente grande, la variabile aleatoria varianza
nota
X̄n − µ
Zn = σ (2.2.5)

n
è distribuita approssimativamente secondo la distribuzione Normale standard,
indipendentemente dalla distribuzione delle Xi . Quindi per n sufficientemente
grande risulta
³ ´ ³ X̄n − µ ´
P −z1− α2 ≤ Zn ≤ z1− α2 = P −z1− α2 ≤ σ ≤ z1− α2 ' 1 − α,

n
dove z1− α2 è il punto critico (1 − α2 ) per una distribuzione Normale standard e
può essere immediatamente determinato dai valori tabulati1
Segue che µ ¶
σ σ
P X̄n − z1− α2 √ ≤ µ ≤ X̄n + z1− α2 √ ' 1 − α.
n n
Quindi, per n sufficientemente grande, il valore incognito di µ si trova nell’intervallo
· ¸
σ σ
X̄n − z 1− α √ , X̄n + z1− α √
2 n 2 n

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

con un livello di confidenza pari a 1 − α. Si parla di intervallo di confidenza del


100(1 − α)%.
Ad esempio, per determinare un intervallo di confidenza al 95% per una media,
dato un campione X1 , . . . , Xn , si trova il punto critico z1− α2 = z0.975 = 1.96 dalle
tabelle della distribuzione Normale standard e facilmente si ricava tale intervallo
· ¸
σ σ
X̄n − 1.96 √ , X̄n + 1.96 √ .
n n
Si noti che l’intervallo di confidenza può contenere o meno il valore della media
µ. Questo implica che un singolo intervallo di confidenza, da un punto di vista
probabilistico, fornisce informazioni non complete. La corretta interpretazione
dell’intervallo di confidenza è la seguente: se si costruisce un numero molto elevato
di intervalli di confidenza al 100(1 − α)%, indipendenti e ciascuno basato su n
osservazioni, con n sufficientemente grande, una frazione di questi intervalli pari
ad 1 − α conterrà µ. Questa frazione si chiama copertura per l’intervallo di
confidenza. Quindi solamente una proporzione α di casi darà luogo ad intervalli
che non contengono µ.
Osservazione 2.2.10 Affermare che l’intervallo di confidenza, ad esempio per
una media µ è al 100(1 − α)% non significa che la probabilità che µ appartenga
a questo intervallo è pari a (1 − α)%; questo perché prima di osservare i dati si
può parlare di probabilità che l’intervallo che si otterrà contenga µ in quanto gli
estremi dell’intervallo sono variabili aleatorie. Dopo l’osservazione dei dati, ovvero
dopo aver determinato gli estremi dell’intervallo, si può solamente affermare che
l’intervallo trovato contiene µ con il 100(1 − α)% di confidenza in quanto non
si ha a che fare con nessuna variabile aletoria (µ è incognita, ma costante e gli
estremi dell’intervallo, una volta determinati sono valori numerici).

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

il Teorema del Limite Centrale continua a valere se nell’espressione (2.2.5) della


Zn sostituiamo σ 2 con la sua stima s2n . Questo significa che, per n sufficientemente
grande la variabile
X̄n − µ
Zen = sn ,

n
è approssimativamente distribuita secondo la distribuzione Normale standard.
Quindi di ha
µ ¶
sn sn
P X̄n − z1− α2 √ ≤ µ ≤ X̄n + z1− α2 √ ' 1 − α,
n n
ELEMENTI DI STATISTICA INFERENZIALE 139

dove z1− α2 è il punto critico (1 − α2 ) per una distribuzione normale standard.


Quindi, per n sufficientemente grande, con livello di confidenza 1 − α il valore
incognito di µ si trova nell’intervallo
· ¸
sn sn
X̄n − z1− α2 √ , X̄n + z1− α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].

La difficoltà nell’utilizzare questo tipo di intervallo di confidenza per µ sta nel


fatto che esso ha valore asintotico, ovvero per n sufficientemente grande e quindi
risulta approssimato. Inoltre il valore di n per cui la Fn (z) approssima bene
la funzione di distribuzione di una variabile Normale standard dipende dalla
distribuzione delle osservazioni Xi . Se si scelgono valori di n troppo piccoli si
ottiene una copertura di un intervallo di confidenza al 100(1 − α)% inferiore
a 1 − α. In questo caso, ovvero per valori piccoli di n si può utilizzare una
definizione alternativa dell’intervallo di confidenza che fa riferimento non più alla
distribuzione Normale standard, ma alla distribuzione t di Student a n − 1 gradi
di libertà. Dalla Proposizione 2.2.3 si ha che se le Xi sono variabili Normali, la
variabile
X̄n − µ
Zen = sn

n
ha distribuzione t di Student con n − 1 gradi di libertà per ogni n > 1. Quindi,
per ogni n > 1 un intervallo di confidenza esatto al 100(1 − α)% è dato da
· ¸
sn sn
X̄n − tn−1,1− α2 √ , X̄n + tn−1,1− α2 √ ,
n n
α
dove tn−1,1− α2 è il punto critico 1 − per una distribuzione t di Student ad n − 1 t intervallo
2
gradi di libertà2 . Questo intervallo si chiama t intervallo di confidenza. di confiden-
Poichè risulta tn−1,1− α2 > z1− α2 l’intervallo di confidenza definito in riferimento za
alla distribuzione t di Student è più ampio di quello definito in riferimento alla
distribuzione Normale standard.

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].

Tuttavia anche questo secondo tipo di intervallo di confidenza presenta aspetti


problematici; infatti, nella sua definizione si assume che le osservazioni Xi sono
estratte da una distribuzione Normale e poiché questa assuzione, in generale, non
è verificata, anche questo tipo di intervallo di confidenza è, di fatto, approssimato.
In conclusione, possiamo dire che l’intervallo di confidenza definito in riferimento
alla distribuzione Normale standard è basato sul Teorema del Limite Centrale
e la copertura dipende dalla scelta di n. L’intervallo di confidenza definito in
riferimento alla distribuzione t di Student è approssimato perché influenzato dalla
distribuzione delle Xi che in generale non sono Normali; tuttavia questo secondo
tipo di intervallo di confidenza ha maggiore copertura dell’altro.
ELEMENTI DI STATISTICA INFERENZIALE 141

2.2.3 Test delle ipotesi

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 è corretta e la differenza riscontrata è puramente ca-


suale;

• l’ipotesi specificata è errata e quindi non ci si può aspettare che i due valori
siano “vicini”.

Il procedimento consiste nel confrontare due ipotesi: l’ipotesi da sottoporre a ve-


rifica e il suo complemento. Si indica con H0 il sottoinsieme dei valori individuati
dall’ipotesi da sottoporre a verifica che viene detta ipotesi nulla, mentre il suo
complemento si indica con H1 e viene detto ipotesi alternativa. Si osservi che se
un test di ipotesi non scarta l’ipotesi H0 , questo non vuol dire che H0 è accettata
come vera, ma solamente che essa non deve essere scartata, ovvero che può essere
considerata possibile.

Si parla di errore di I specie se il test porta a rifiutare un’ipotesi H0 quando questa


è corretta e di errore di II specie se il test porta ad accettare H0 quando questa è
falsa. Si noti che l’obiettivo non è quello di dire se l’ipotesi fatta è vera o falsa, ma
piuttosto di verificare se l’ipotesi fatta sia compatibile con i dati. In genere, c’è
un ampio margine di tolleranza nell’accettare H0 , mentre per rifiutarla occorre
che i dati siano veramente poco probabili quando H0 dovesse essere corretta. Per
ottenere questo, si specifica un valore α, detto livello di significatività e si impone
che il test sia tale che, quando l’ipotesi H0 è corretta, la probabilità che essa venga
scartata è non superiore ad α. Quindi un test con livello di significatività pari
ad α deve essere tale che una probabilità di commettere un errore di I specie è
minore o uguale ad α.

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

l’ipotesi da sottoporre a verifica è la seguente:


n
H0 = X1 , . . . , Xn sono variabili aleatorie indipendenti,
o
identicamente distribuite con funzione di distribuzione Fb
Esistono diversi test di ipotesi; consideriamone brevemente nel seguito due, ri-
mandando alla letteratura specifica per una trattazione completa.

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

superiore a z. Il valore critico z può essere ottenuto utilizzando il fatto che, se


l’ipotesi H0 è vera, allora χ2 per n → ∞ converge alla distribuzione Chi–quadro
con k − 1 gradi di libertà. Perciò, per n grande, un test con livello di accuratezza
α è ottenuto scartando H0 se

χ2 > χ2k−1,1−α

dove χ2k−1,1−α è il punto critico 1 − α per la distribuzione Chi–quadro con k − 1


gradi di libertà3 .
Se invece, alcuni parametri fossero non noti, c’è da considerare il fatto che le pj Caso con
derivano dalla distribuzione ipotizzata, ma con parametri stimati. In particolare, parametri
supponendo che siano presenti m parametri non noti e che siano stimati con il non noti
metodo della massima verosimiglianza, si usano queste stime per calcolare
k
X (Nj − np̃j )2
χ2 = ,
j=1
np̃j

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à.

3 Sono disponibili tavole che riportano i valori di questi punti critici


144 SIMULAZIONE

Esercizio 2.2.13 Supponiamo di monitorare il numero di automobili che passano ad un casello


autostradale tra le 7.00 e le 7.05 di giorni feriali per 100 giorni, ottenendo il seguente risultato
(numero di auto/frequenza)

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.

Siano X1 , . . . , Xn variabili aleatorie indipendenti con funzione di distribuzione


F e siano dati i valori x1 , . . . , xn i valori osservati di X1 , . . . , Xn , ovvero siano
essi una realizzazione delle variabili aleatorie. Si può definire un’approssimazione
empirica Fe della F nel seguente modo:

|{i : xi ≤ x}| numero delle xi ≤ x


Fe (x) = = .
n n

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

In pratica, ordinando le xi per valori crescenti in modo che si abbia


x(1) ≤ x(2) ≤ · · · ≤ x(n) , risulta
0 se x < x(1)





 i
Fe (x) = se x(i) ≤ x ≤ x(i+1)



n



1 se x(n) ≤ x.

Se Fb (x) è la funzione di distribuzione ipotizzata, una valutazione naturale della


“bontà” dell’approssimazione è data da una qualche misura di “vicinanza” tra le
funzioni Fe e Fb . Una misura dello scostamento può essere definita da
n¯ ¯o
¯ ¯
D = max ¯Fe (x) − Fb (x)¯ .

D è detta statistica del test di Kolmogorov–Smirnov.


Considerando separatamente il caso in cui Fe (x) − Fb (x) ≥ 0 e il caso in cui
Fe (x) − Fb (x) ≤ 0, poiché Fb è una funzione non decrescente, si possono definire
le quantità D+ e D− e risulta
n o ½ ¾
+ b i b
D = max Fe (x) − F (x) = max − F (x(i) )
x 1≤i≤n n
n o ½ ¾
b b i−1
D− = max F (x) − Fe (x) = max F (x ) − .
(i)
x 1≤i≤n n
Quindi si ha
© ª
D = max D+ , D− .
Chiaramente, un valore grande di Dn indica che l’approssimazione non è molto
buona e quindi si scarta l’ipotesi H0 se

D > dn,1−α , (2.2.7)

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

1−α 0.85 0.90 0.95 0.975 0.99


c1−α 1.138 1.224 1.358 1.480 1.628

Tabella 2.2.1 Valori delle costanti c1−α nel caso in cui tutti i parametri sono noti

Esistono alcuni casi particolari in cui il test di Kolmogorov–Smirnov può essere


applicato anche se i parametri sono non noti, ovvero sono stimati. Due casi impor-
tanti in cui questo accade sono il caso in cui la distribuzione ipotizzata è Normale
con media µ e varianza σ 2 non note, ma entrambe stimate rispettivamente con
X̄n e s2n e il caso in cui la distribuzione ipotizzata è esponenziale di parametro
incognito λ essendo λ stimato con il metodo della massima verosimilianza ovvero
λ = 1/X̄n .

1) Nel caso in cui la distribuzione ipotizzata è Normale con media e varian-


za stimate rispettivamente con X̄n e s2n , si definisce la funzione Fb come
la funzione di distribuzione di una Normale a media X̄n e varianza s2n .
Utilizzando questa funzione Fb si procede analogamente al caso precedente
calcolando D; cambia però il test in quanto è stato visto che un buon livello
di accuratezza si ottiene scartando H0 se risulta
µ ¶
√ 0.85
n − 0.01 + √ D > c01−α
n

dove c01−α sono i valori riportati nella Tabella 2.2.2.

1−α 0.85 0.90 0.95 0.975 0.99


c01−α 0.775 0.819 0.895 0.955 1.035

Tabella 2.2.2 Valori delle costanti c01−α nel caso in cui la distribuzione ipotizzata è Normale

2) Nel caso in cui la distribuzione ipotizzata è esponenziale in cui il parametro


incognito λ è stimato con il metodo della massima verosimilianza ovvero
λ = 1/X̄n , si definisce la funzione Fb come la funzione di distribuzione della
distribuzione esponenziale di parametro 1/X̄n , ovvero Fb (x) = 1 − e−x/X̄n ,
x ≥ 0, e si calcola D. In questo caso il test prevede di scartare H0 se
µ ¶µ ¶
0.2 √ 0.5
D− n + 0.26 + √ > c001−α
n n

dove c001−α sono i valori riportati nella Tabella 2.2.3.


ELEMENTI DI STATISTICA INFERENZIALE 147

1−α 0.85 0.90 0.95 0.975 0.99


c001−α 0.926 0.990 1.094 1.190 1.308

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:

81, 72, 94, 66.

Utilizzare il test di Kolmogorov-Smirnov per verificare l’ipotesi che la distribuzione esponenziale


con media 100 approssima bene questi dati con un livello di significatività α pari al 2.5%.

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.3 SCELTA DELLE DISTRIBUZIONI DI INPUT

Per condurre una simulazione di un sistema che presenta elementi stocastici è


necessario specificare le distribuzioni di probabilità che regolano i processi che
caratterizzano il sistema. Ad esempio nei sistemi di code devono essere note le
distribuzioni di probabilità degi tempi di interarrivo e dei tempi di servizio. Una
volta stabilite tali distribuzioni la simulazione procede generando valori casuali da
queste distribuzioni. Se è possibile raccogliere dati reali sulle variabili aleatorie di
interesse, essi possono essere utilizzati per determinare una distribuzione secondo
tre metodi:

1. i dati sono usati direttamente nella simulazione (“trace driver simulation”).

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”).

Il primo approccio ha senso solamente quando si possono raccogliere grandi quan-


tità di dati rappresentativi del funzionamento del sistema; ha l’ovvio difetto di
rappresentare il “passato” ed è usato raramente; può essere utile per effettuare
una validazione del modello, ovvero per confrontare il modello con il sistema
reale, ma non permette un’analisi previsionale.
Il secondo approccio elimina questo inconveniente poiché, almeno per distribuzioni
continue, può essere ottenuto ogni valore compreso tra il minimo e il massimo
osservati.
Se si può determinare una distribuzione teorica che si adatta bene ai dati, il terzo
approccio è quello preferibile. I motivi per cui una distribuzione teorica in genere
è preferibile a una empirica sono i seguenti:

• le distribuzioni empiriche possono avere irregolarità (specialmente se i dati


sono scarsi) mentre le distribuzioni teoriche sono più “smooth”, nel senso
che tendono a regolarizzare i dati e rappresentano un comportamento ge-
nerale;

• le distribuzioni empiriche non permettono di generare valori al di fuori del


range di valori osservati, mentre le misure di prestazione possono, a volte,
dipendere anche da eventi “eccezionali” che corrispondono a valori fuori da
tale range;
SCELTA DELLE DISTRIBUZIONI DI INPUT 149

• le distribuzioni teoriche sono un modo compatto di rappresentare un in-


sieme di valori, mentre in una distribuzione empirica, se ci sono n dati
disponibili, si ha bisogno di 2n valori per rappresentarla: il dato e le cor-
rispondenti probabilità cumulative (si hanno quindi grandi quantità di dati
da memorizzare);
• le distribuzioni teoriche si possono variare più facilmente. Ad esempio se la
distribuzione esponenziale degli arrivi di un sistema di code ha media pari a
1/λ = 5, per effettuare una diminuzione del 20% sarà sufficiente considerare
1/λ = 4.9.
Tuttavia esistono situazioni in cui nessuna distribuzione teorica si adatta ai dati
osservati e allora in questo caso si deve usare una distribuzione empirica.
Un difetto dell’uso di distribuzioni teoriche sta nel fatto che esse possono generare
anche valori molto grandi (anche se con probabilità molto piccole), quando nella
pratica questi non vengono mai assunti realmente.

2.3.1 Distribuzioni empiriche

Supponiamo di disporre di n osservazioni X1 , . . . , Xn di una variabile aleatoria e


di voler costruire, a partire da esse, una distribuzione continua. Supponiamo di
aver ordinato le Xi per valori crescenti e sia X(i) l’i-esima osservazione in ordine
crescente, ovvero risulti
X(1) ≤ X(2) ≤ . . . ≤ X(n) .
Si può costruire la distribuzione empirica come una distribuzione continua lineare
a tratti, cosı̀ definita:



0 se x < X(1)





 i−1 x − X(i)

 + se X(i) ≤ x < X(i+1) ,
F (x) = n−1 (n − 1)(X(i+1) − X(i) )

 i = 1, . . . , n − 1








1 se X(n) ≤ x
i−1
Si osservi che per ogni i vale F (X(i) ) = che è approssimativamente (per n
n−1
grande) la proporzione delle Xi che sono minori di X(i) .

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

0.4 1 2 2.5 3 3.6 4

Fig. 2.3.1 Grafico della distribuzione empirica dell’Esempio 2.3.1

Analogamente si possono costruire distribuzioni empiriche per distribuzioni dis-


crete; infatti, è sufficiente per ogni x definire p(x) come “proporzione” delle Xi
che sono uguali ad x.

2.3.2 Distribuzioni teoriche

• 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:

· parametro di posizione: specifica un punto del range della distribuzione


e una sua variazione provoca solamente una traslazione;
· parametro di scala: specifica l’unità di misura dei valori,
SCELTA DELLE DISTRIBUZIONI DI INPUT 151

· parametro di forma: specifica l’andamento della distribuzione.

• 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.

Per una descrizione dettagliata di ogni singola distribuzione di probabilità e delle


caratteristiche specifiche, si rimanda ad un qualsiasi testo di Calcolo delle Prob-
abilità.

2.3.3 Scelta di una distribuzione teorica

Determinare quale distribuzione teorica è adatta a rappresentare dei dati è un


problema complesso. Un modo efficiente per effettuare questa scelta può essere
cosı̀ schematizzato:

Verifica dell段ndipendenza
delle osservazioni

Individuazione di una
famiglia di distribuzioni

Stima dei parametri


della distribuzione

Verifica della rappresentativit

Dopo una preliminare verifica dell’indipendenza delle osservazioni, si cerca di in-


dividuare una o più famiglie di distribuzioni candidate, stimando poi nella fase
successiva i parametri di queste distribuzioni. A questo punto è necessario effet-
tuare una verifica della rappresentatività dei dati reali da parte della distribuzioni
152 SIMULAZIONE

scelta. Se tale verifica non ha successo, è necessario individuare una differente


famiglia di distribuzioni ed eventualmente iterare il processo fino a che la verifica
è soddisfatta.

Indipendenza delle osservazioni


Preliminarmente è necessario verificare l’indipendenza delle osservazioni in quanto
questa è un’assunzione essenziale per l’utilizzo di tecniche statistiche quali la
stima della massima verosimiglianza o il test chi–quadro. Un primo strumento di
analisi è basato su una tecnica grafica. Siano X1 , . . . , Xn le osservazioni elencate
cosı̀ come sono state osservate nel tempo; un modo possibile per avere un’idea
informale sull’indipendenza consiste nel valutare la correlazione fra diverse osser-
vazioni. Sia

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.

Individuazione di una famiglia di distribuzioni


Una volta verificata l’indipendenza delle osservazioni, il passo successivo è quello
di individuare una distribuzione da scegliere come input della simulazione che
sia rappresentativa della variabile aleatoria in ingresso alla simulazione. In una
prima fase vorremmo individuare una famiglia generale senza occuparci, per ora,
dei suoi parametri. In alcuni casi, quando esiste una conoscenza “a priori” del
fenomeno che la variabile aleatoria rappresenta, essa può essere utilizzata per
ottenere la distribuzione. Ciò è fatto su base teorica e non richiede osservazioni.
Ad esempio, se supponiamo che dei clienti arrivano ad un sistema di servizio uno
alla volta e che il numero dei clienti che arrivano in intervalli disgiunti è indipen-
dente, allora ci sono motivi teorici per assumere che i tempi di interarrivo siano
variabili aleatorie indipendenti identicamente distribuite secondo la distribuzione
SCELTA DELLE DISTRIBUZIONI DI INPUT 153

esponenziale. Oppure, può anche accadere che la conoscenza “a priori” permetta


solo di escludere alcune distribuzioni. Tuttavia, nella pratica spesso queste infor-
mazioni “a priori” non sono disponibili, o comunque non sufficienti. Quello che
si fa più frequentemente è ricorrere a due strumenti di analisi statistica: le stati-
stiche riassuntive delle osservazioni e i grafici dell’andamento delle osservazioni.

• 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;

– la stima della varianza σ 2 data da


n
X
(Xi − X̄n )2
i=1
s2n = ;
n−1

– stime di misure di variabilità:



· nel caso continuo, la stima del rapporto cv = σ 2 /µ
p
v = s2n /X̄n
(coefficiente di variazione) data da cc

· nel caso discreto, la stima del rapporto τ = σ 2 /µ


data da τb = s2n /X̄n
E[(X − µ)3 ]
– la stima del grado di asimmetria ν =
(σ 2 )3/2
n
X
[(Xi − X̄n )3 ]/n
i=1
data da νb = .
(s2n )3/2
Un confronto tra media e mediana può farci capire se considerare la dis-
tribuzione simmetrica o no; questo perché nel caso di distribuzioni continue
simmetriche, media e mediana coincidono, come ad esempio nel caso della
distribuzione normale (nel caso di distribuzioni discrete questo è vero solo
se il numero dei valori distinti che possono essere assunti è pari, altrimenti
154 SIMULAZIONE

sono solo approssimativamente uguali). È importante tener presente che si


hanno solo le stime dei parametri, pertanto anche nel caso di distribuzioni
continue simmetriche, stima di media e mediana possono non essere esat-
tamente uguali.
Per quanto riguarda la misura di variabilità data nel caso continuo dal
rapporto cv, si ha che cv = 1 per la distribuzione esponenziale indipenden-
temente dal parametro; nel caso discreto si considera invece il rapporto τ e
si ha che τ = 1 per la distribuzione di Poisson e τ < 1 per la distribuzione
binomiale.
Il grado di asimmetria ν vale zero per distribuzioni simmetriche mentre se
ν > 0 la distribuzione ha asimmetria verso destra (ν = 2 per la distribuzione
esponenziale); se ν < 0 la distribuzione ha asimmetria verso sinistra.

• Uso di grafici (tecnica dell’istogramma)


Per distribuzioni continue è molto utile costruire un istogramma di valori
assunti dalla variabile aleatoria sulla base delle osservazioni che si hanno
a disposizione. Un istogramma può essere considerato una “stima grafica”
del grafico della densità di probabilità corrispondente alla distribuzione dei
dati X1 , . . . , Xn . Le funzioni densità di probabilità tipiche hanno forme
che in molti casi sono ben riconoscibili e quindi un istogramma può fornire
utili indicazioni. Ricordiamo che per costruire un istogramma si suddivide
l’intervallo formato dal minimo e dal massimo dei valori assunti dai dati, in
k intervalli disgiunti adiacenti

[b0 , b1 ), [b1 , b2 ), . . . , [bk−1 , bk )

di uguale ampiezza ∆b = bi − bi−1 . Per j = 1, 2, . . . , k si definisce hj il


numero delle osservazioni che cadono nel j-esimo intervallo diviso il numero
totale delle osservazioni, ovvero la proporzione delle Xi contenute nel j-
esimo intervallo [bj−1 , bj ). Si definisce la funzione


 0 se x < b0




h(x) = hj se bj−1 ≤ x < bj , j = 1, 2, . . . , k






0 se x ≥ bk .
Il grafico di h(x) è costante a tratti e può fornire una buona indicazione sul
tipo di distribuzione che ha la variabile aleatoria in questione, confrontan-
dolo con i grafici delle densità di probabilità ignorando, per il momento,
posizione e scala, ma considerando solo la forma.

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

scopo, sia X una variabile aleatoria con densità di probabilità data da f .


Allora per ogni j fissato (j = 1, 2, . . . , k), applicando il teorema della media
si ha
Z bj
P (bj−1 ≤ X ≤ bj ) = f (x)dx = ∆b f (y)
bj−1

per qualche y ∈ (bj−1 , bj ). D’altra parte hj approssima P (bj−1 ≤ X ≤ bj )


che è il valore di h(y) perché h(x) = hj per ogni x ∈ [bj−i , bj ); si ha dunque:
h(y) = hj ≈ ∆bf (y). Quindi, h(y) è approssimativamente proporzionale a
f (y), ovvero h e f hanno approssimativamente forma simile.
Una difficoltà è data dall’assenza di criteri generali per scegliere k. C’è una
regola detta regola di Sturges che suggerisce di scegliere k = b1 + log2 nc. Regola di
Tale regola non è però utile in generale e si raccomanda piuttosto di provare Sturges
differenti valori di ∆b e scegliere il più piccolo che fornisce un istogramma
“smooth”. La scelta di ∆b è problematica in genere; infatti se si sceglie
troppo piccolo, l’istogramma sarà molto poco uniforme (frastagliato); se si
sceglie troppo grande l’istogramma può avere una forma a blocchi e il vero
andamento della densità che stiamo cercando sarà mascherata in quanto i
dati sono sovraggregati.
Nel caso di variabili discrete si può ugualmente rappresentare la distribuzione
di probabilità usando un istogramma; per ogni valore xj che può essere as-
sunto dai dati, sia hj = nj /n dove nj è il numero delle occorrenze di tali
valori, ovvero hj è la proporzione delle Xi che sono uguali a xj . Si tracciano
poi le barre verticali di altezza hj in corrispondenza di xj .

Stima dei parametri


Dopo aver individuato una o più famiglie di distribuzioni candidate a rappre-
sentare i dati osservati, è necessario determinare i parametri di queste distribuzioni
in modo che siano completamente definite e utilizzabili in ingresso ad una simu-
lazione. Gli stessi dati utilizzati per individuare le famiglie di distribuzioni sono
utilizzati per stimare i loro parametri. La stima dei parametri è stata trattata nel
paragrafo 2.2.2 dove, tra tutti i possibili metodi per la stima, è stato considerato
lo stimatore di massima verosimiglianza (Maximum Likelihood Estimator) che è
molto utilizzato in pratica.
156 SIMULAZIONE

Verifica della rappresentatività della distribuzione di probabilità


Dopo aver individuato una o più distribuzioni di probabilità candidate e i relativi
parametri, si devono esaminare queste distribuzioni di probabilità per verificare
se esse rappresentano bene i dati osservati. A tale scopo, si utilizzano di solito
procedure euristiche basate su confronti grafici e test statistici.

• 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.

2.3.4 Scelta delle distribuzioni di input in assenza di dati

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

2.4 GENERAZIONE DI OSSERVAZIONI CASUALI

Una volta determinate le distribuzioni di input, la simulazione dovrà generare du-


rante ogni esecuzione osservazioni casuali di variabili aleatorie distribuite secondo
particolari distribuzioni di probabilità. Ad esempio, nel simulare un sistema di
code M/M/1 si avrà bisogno di generare i tempi di interarrivo in accordo alla dis-
tribuzione esponenziale e cosı̀ anche per i tempi di servizio. Un esempio banale
di ciò è stato mostrato alla pagina 123, dove nell’effettuare una semplice esem-
plificazione di una simulazione abbiamo avuto bisogno delle due liste di valori
generati casualmente dalle distribuzioni corrispondenti.
Ogni metodo per generare osservazioni casuali da distribuzioni fissate utilizza
variabili indipendenti identicamente distribuite secondo la distribuzione uniforme
in [0, 1) (che indichiamo con U (0, 1)), nel senso che costruisce le osservazioni ca-
suali desiderate a partire da numeri casuali generati uniformemente in [0, 1) at-
traverso opportune trasformazioni. Quindi preliminarmente analizziamo breve-
mente nel prossimo paragrafo la generazione di numeri casuali con distribuzione
uniforme e nel paragrafo successivo studieremo come generare osservazioni casuali
secondo distribuzioni fissate a partire dalla distribuzione U (0, 1).

2.4.1 Generazione di numeri pseudocasuali con distribuzione uniforme

In generale, per generare successioni di numeri casuali si potrebbero utilizzare


metodi quali il lancio dei dadi, l’estrazione da urne, ma ovviamente questi metodi
non sono utilizzabili nella simulazione dove è necessario generare lunghe succes-
sioni di numeri casuali in tempi molto brevi. Attualmente per generare successioni
di numeri casuali si ricorre all’uso del calcolatore e in realtà quello che si fa è la
generazione deterministica di successioni di numeri aventi proprietà statistiche
che approssimano molto bene quelle di successioni veramente casuali e che ad
un’analisi statistica risultano indistinguibili da successioni di numeri casuali. I Numeri
numeri determinati con questa procedura si chiamano numeri pseudocasuali. pseudo-
Per generare numeri pseudocasuali con distribuzione uniforme esistono diversi casuali
metodi; i più utilizzati sono i generatori congruenziali lineari. In questi metodi Generatori
una successione di numeri interi Zi viene definita dalla seguente formula ricorsiva congruen-
ziali lineari
Zi+1 = aZi + c ( mod m )

dove a si chiama moltiplicatore e c viene detto incremento 4 . Il termine Z0 si


chiama seme. Il generatore si dice moltiplicativo se c = 0. Quindi vengono
generati al più m numeri interi Zi distinti con 0 ≤ Zi ≤ m − 1. Per ottenere
numeri casuali Ui in [0, 1) è sufficiente definire Ui = Zi /m.

4 La notazione “ mod m ” indica la congruenza modulo m, ovvero il resto della divisione per m
158 SIMULAZIONE

Esempio 2.4.1 Vediamo un esempio di generatore moltiplicativo (c = 0). Prendiamo a = 3,


Z0 = 3 e m = 7. Si ottiene

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

Naturalmente la successione è periodica di periodo al più pari ad m. Se un


Periodo generatore ha periodo pari ad m, ovvero il periodo massimo, si dice che il gene-
pieno ratore ha periodo pieno e, in questo caso, ogni scelta del seme Z0 porterà alla
generazione dell’intero ciclo di valori da 0 a m − 1. Se invece un generatore non
ha periodo pieno allora la lunghezza del ciclo può dipendere dal particolare valore
del seme Z0 . È importante avere periodo lungo o, ancora meglio, periodo pieno in
modo che vengono generati tutti gli interi tra 0 e m−1 ed inoltre essi appariranno
esattamente una volta ogni ciclo e questo contribuisce all’uniformità delle Ui .
Il teorema che segue riporta le condizioni che devono essere soddisfatte dai
parametri m, a e c affinché il generatore abbia periodo pieno.

Teorema 2.4.1 Un generatore congruenziale lineare ha periodo pieno se e


solo se sono soddisfatte le seguenti condizioni:

i) m e c sono primi tra loro;

ii) se q è un numero primo che divide m, allora q divide a − 1;

iii) se 4 divide m, allora 4 divide a − 1.

È obiezione comune a tutti i generatori pseudo–random il fatto che le Zi non


sono realmente casuali, ma ogni Zi è completamente determinata dai quattro
parametri m, a, c e Z0 . Tuttavia, un’attenta scelta di questi parametri induce
le Zi ad assumere valori tali che le Ui corrispondenti siano indipendenti identica-
mente distribuite secondo la distribuzione uniforme in [0, 1). Un’altra obiezione
riguarda il fatto che, ovviamente ogni numero reale nell’intervallo [0, 1) dovrà
avere la stessa probabilità di essere generato, mentre le Ui assumono solamente
valori razionali. A questo inconveniente si può ovviare scegliendo m molto grande
(m ≥ 109 ) in modo che i numeri generati Ui costituiscono un sottoinsieme denso
dell’intervallo [0, 1).
Nei linguaggi di programmazione sono di solito disponibili generatori di numeri
pseudocasuali ed esistono metodi statistici per valutarne la qualità.
GENERAZIONE DI OSSERVAZIONI CASUALI 159

Tra tutti i generatori di numeri pseudocasuali basati su metodi congruenziali


moltiplicativi, nel caso di computer a 32 bit, il più utilizzato è il generatore di
Learmouth–Lewis dato da c = 0, a = 75 e m = 231 − 1.

2.4.2 Generazione di osservazioni casuali da una distribuzione di probabilità

Esaminiamo ora come, a partire da numeri casuali uniformemente distribuiti in


[0, 1) sia possibile generare osservazioni da una fissata distribuzione di probabilità.
Per questo scopo sono state introdotte molte tecniche. Ci limitiamo nel seguito
a considerarne due tra le più utilizzate: il metodo della trasformazione inversa e
il metodo dell’accettazione–reiezione.

Metodo della trasformazione inversa


È un metodo per generare osservazioni da una distribuzione di probabilità. Il
metodo si basa sul seguente risultato teorico [Ross, 2003a] valido nel caso di
distribuzioni continue:

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 .

Dimostrazione: Sia FX la funzione di distribuzione della variabile aleatoria X.


Quindi, per ogni y risulta
³ ´
FX (y) = P (X ≤ y) = P F −1 (U ) ≤ y .

Poiché F (x) è una funzione di distribuzione, essa è monotona crescente e quindi


si ha che F −1 (U ) ≤ y se e solo se U ≤ F (y). Quindi, poichè U ha distribuzione
uniforme, si ha
FX (y) = P (U ≤ F (y)) = F (y),
ovvero F è la funzione di distribuzione della X.

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 .

Osservazione 2.4.3 Nel caso in cui la funzione F non è strettamente monotona,


non è possibile definire la sua invera; in questi casi, si può utilizzare la funzione
160 SIMULAZIONE

pseudoinversa data da

F −1 (x) = inf {y ∈ IR | x ≤ F (y)} .

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.

Osservazione 2.4.5 È importante osservare che se una variabile aleatoria U ha


distribuzione uniforme in [0, 1), anche 1 − U ha distribuzione uniforme in [0, 1)
e quindi nella (2.4.1) si può sostituire nell’argomento del logaritmo (1 − U ) con
U . Tuttavia, come vedremo nel seguito nel paragrafo 2.6.1 sulle tecniche per la
riduzione della varianza, questo cambiamento potrebbe indurre un cambiamento
nella correlazione delle variabili X generate.

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

che è equivalente a " #


1 Y
k

x=− ln (1 − ui ) .

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

P (X = xi ) = P (F (xi−1 ) < U ≤ F (xi )) = F (xi ) − F (xi−1 ) = p(xi )

Il metodo della trasformazione inversa nel caso discreto ha una giustificazione


molto intuitiva: si divide l’intervallo [0, 1) in sottointervalli contigui di ampiezza
p(x1 ), p(x2 ), . . . e si assegna X a seconda del fatto che questi intervalli contengano
la U che è stata generata.

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

Passo 1: si genera un osservazione casuale della variabile aleatoria Y e si


genera un numero casuale U dalla distribuzione uniforme in [0, 1);
f (Y )
Passo 2: se U ≤ allora si pone X = Y e STOP
cg(Y )
altrimenti si torna al Passo 1.

Le generazione viene quindi effettuata mediante un algoritmo iterativo che ad


ogni passo genera un coppia di osservazioni casuali (Y, U ) e si arresta quando è
f (Y )
soddisfatta la diseguaglianza U ≤ , accettando il valore di Y come osser-
cg(Y )
vazione casuale della X.
Si può dimostrare [Ross, 2003a] che la variabile aleatoria X le cui osservazioni
casuali sono generate con il metodo accettazione–reiezione ha la densità di prob-
abilità voluta, ovvero vale la seguente proposizione.

Proposizione 2.4.7 La variabile aleatoria X generata con il metodo


accettazione–reiezione ha densità di probabilità f .

Esempio 2.4.8 Applichiamo il metodo dell’accettazione–reiezione per generare osservazioni


casuali da una variabile aleatoria avente densità di probabilità f (x) = 20x(1 − x)3 , 0 < x < 1 (si
tratta della distribuzione beta con parametri 2 e 4). Innanzitutto dobbiamo scegliere la funzione
g(x): in questo una scelta di una funzione molto semplice è g(x) = 1, 0 < x < 1, ovvero si sceglie
la distribuzione uniforme. Ora si deve determinare una costante c tale che risultif (x)/g(x) ≤ c
per ogni x. Naturalmente, in questo caso si può determinare facilmente c massimizzando la
funzione f (x)/g(x); poiché la derivata prima di f (x)/g(x) si annulla in x? = 1/4 e la derivata
seconda in questo punto è negativa, il punto x? è un punto di massimo per la funzione f (x)/g(x)
e risulta
f (x) 135
≤ = c,
g(x) 64
e quindi il test diventa U ≤ 256/27x(1 − x)3 .
Quindi il metodo in questo caso può essere cosı̀ realizzato:
Passo 1: si generano osservazioni casuali U1 e U2 dalla distribuzione uniforme in [0, 1);
256
Passo 2: se U2 ≤ U1 (1 − U1 )3 allora si pone X = U1 e STOP, altrimenti si torna al Passo 1.
27

Esistono inoltre tecniche speciali per generare osservazioni da variabili aleatorie


distribuite secondo distribuzioni particolari per le quali si rimanda alla letteratura
dedicata.
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 163

2.5 PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT

In questo paragrafo analizziamo uno degli aspetti fondamentali di una simu-


lazione, ovvero la progettazione della simulazione stessa e l’analisi statistica dei
risultati. L’errore tipico che si commette nell’effettuare una simulazione è quello
di eseguire un singolo “run” di lunghezza arbitraria e di prendere i risultati che
si ottengono come stime delle caratteristiche del vero modello. Poiché in una
simulazione si utilizzano osservazioni casuali da una o più distribuzioni di proba-
bilità, queste stime sono solamente realizzazioni particolari di variabili aleatorie
che possono anche avere varianza molto grande. Questo implica che, in un parti-
colare run di una simulazione, queste stime possono anche differire di molto dalle
corrispondenti reali caratteristiche del modello.
Affinché i risultati di uno studio effettuato attraverso la simulazione abbiano senso
è necessario l’uso di tecniche statistiche per progettare e analizzare gli esperimenti
di una simulazione. Nel fare ciò si manifesta subito il problema derivante dal
fatto che i processi di output della simulazione sono, in generale, autocorrelati
e non stazionari e questo rende inapplicabili direttamente le tecniche statistiche
classiche che sono invece basate su osservazioni indipendenti, identicamente dis-
tribuite.
Un altro problema esistente nell’ottenere stime precise delle caratteristiche del
vero modello è dato dal tempo di calcolo necessario per raccogliere la quan-
tità necessaria di dati di output per effettuare un’analisi statistica efficace, che
potrebbe essere anche molto elevato.

2.5.1 Dati di output

Siano Y1 , Y2 , . . . i dati di output di un singolo run di una simulazione; ciascuna


Yi può essere vista come una variabile aleatoria e quindi la collezione di variabili
aleatorie {Yi , i = 1, 2, . . .} è un processo stocastico. Ad esempio, in un sistema di
code, le Yi possono rappresentare il tempo di attesa in coda dell’i-esimo utente.
In generale, le variabile aleatorie Yi potrebbero non essere né indipendenti, né
identicamente distribuite e quindi nell’analisi di questi dati non possono essere
applicati direttamente i metodi di analisi statistica. Per ovviare a questo in-
conveniente, si effettuano più repliche della simulazione, ciascuna di lunghezza
m e si basa l’analisi sulle varie repliche. Formalmente, siano y11 , y12 , . . . y1m la
realizzazione delle variabili aleatorie Y1 , . . . , Ym ottenute con la prima replica.
Nella seconda replica si avranno differenti realizzazioni delle variabili aleatorie
Y1 , . . . , Ym ; siano esse y21 , y22 , . . . y2m . In generale, supponiamo di aver effettuato
164 SIMULAZIONE

n repliche indipendenti di lunghezza m, ottenendo cosı̀

y11 y12 ··· y1m


y21 y12 ··· y2m
.. .. .. (2.5.1)
. . .
yn1 yn2 · · · ynm

Le realizzazioni di una stessa replica non sono indipendenti, identicamente dis-


tribuite, ma se per ogni i = 1, . . . , m consideriamo le osservazioni y1i , y2i , . . . yni ,
ovvero l’i-esima colonna della (2.5.1) allora esse costituiscono osservazioni in-
dipendenti, identicamente distribuite della variabile aleatoria Yi . Quindi l’analisi
statistica è applicabile alle osservazioni y1i , y2i , . . . yni , per ogni fissato i = 1, . . . , n.

2.5.2 Transitorio e stato stazionario

Un altro problema importante nella progettazione e nell’analisi dell’output di


una simulazione è dato dalla scelta delle condizioni iniziali e dal fatto che in un
sistema si deve distinguere lo stato stazionario e il transitorio.
Sia {Yi , i = 1, 2, . . .} il processo stocastico di output e, per ogni i = 1, 2, . . ., sia

Fi (y | I) = P (Yi ≤ y | I) ,

dove y ∈ IR e I rappresenta le condizioni iniziali, ovvero le condizioni alle quali


inizia la simulazione al tempo 0; Fi (y | I) è quindi la probabilità condizionata
che l’evento {Yi ≤ y} accada, date le condizioni iniziali I. Ad esempio, in un
impianto di produzione, I potrebbe rappresentare il numero dei job presenti al
tempo 0, oppure in un sistema di trasporto potrebbe indicare la posizione dei
veicoli al tempo 0.
Distribuzio- La Fi (y | I) è la distribuzione transitoria del processo di output al tempo (dis-
ne transi- creto) i con condizioni iniziali I. In generale, la Fi (y | I) è diversa per differenti
toria valori di i e per ogni insieme di condizioni iniziali I.
Per y e I fissati, la successione {Fi (y | I)}i può essere convergente per i → ∞.
Se per ogni y e I esiste il limite

lim Fi (y | I) = F (y), (2.5.2)


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̄.

Osservazione 2.5.1 Ovviamente il raggiungimento dello stato stazionario non


equivale a dire che le variabili aleatorie Yk̄ , Yk̄+1 , . . . assumeranno tutte lo stesso
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 165

valore in una particolare replica, ma solamente che hanno (approssimativamente)


la stessa distribuzione

Osservazione 2.5.2 La distribuzione F (y) non dipende dalle condizioni iniziali


I, ma può dipendere dalle condizioni iniziali la rapidità di convergenza delle
distribuzioni Fi (y | I) a F (y).

2.5.3 Tipi di simulazioni

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

2.5.4 Simulazioni con terminazione: analisi del transitorio

Supponiamo di effettuare n repliche indipendenti di una simulazione con ter-


minazione dove ciascuna replica ha le medesime condizioni iniziali e finisce con
l’evento che determina il termine della replica. Per semplicità, assumiamo che ci
sia una singola misura di prestazione da considerare rappresentata dalla variabile
aleatoria X e sia Xi la realizzazione di questa variabile aleatoria ottenuta nella
i-esima replica. Per quanto visto nel paragrafo 2.5.1, le Xi sono variabili aleato-
rie indipendenti, identicamente distribuite e questo permette di determinare una
stima della media µ = E(X) e il relativo intervallo di confidenza dalle X1 , . . . , Xn .
Infatti si può definire lo stimatore (corretto) della media µ dato da
n
X
Xi
i=1
X̄n =
n
e lo stimatore (corretto) della varianza dato da
n
X
(Xi − X̄n )2
i=1
s2n = .
n−1
Inoltre, dato α ∈ (0, 1), un intervallo di confidenza approssimato al 100(1 − α)%
è dato da s
s2n
X̄n ± tn−1,1− α2 ,
n
dove tn−1,1− α2 è il punto critico (1 − α2 ) della distribuzione t student a n − 1 gradi
di libertà. Indicando con
s
s2n
δ(n, α) = tn−1,1− α2 (2.5.3)
n
la semiampiezza dell’intervallo di confidenza, si può scrivere l’intervallo di confi-
denza nella forma
£ ¤
X̄n − δ(n, α) , X̄n + δ(n, α) .

Se n fosse fissato “a priori” (fixed–sample–size), non ci sarebbe nessuna possibilità


di controllare la precisione della stima X̄n , ovvero l’ampiezza dell’intervallo di
confidenza. Quindi è necessario considerare la possibilità di decidere il numero
delle repliche da effettuare in modo da raggiungere una precisione desiderata.
Naturalmente esistono due modi di misurare l’errore che si commette:
¯ ¯
errore assoluto ¯X̄n − µ¯
¯ ¯
¯X̄n − µ¯
errore relativo
|µ|
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 167

Iniziamo ad esaminare il caso dell’errore assoluto. In genere si richiede di effet-


tuare un numero di repliche n in modo tale che risulti Errore
¡ ¢ assoluto
P |X̄n − µ| ≤ β ≥ 1 − α, α ∈ (0, 1), β > 0. (2.5.4)

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.

Procedura a due fasi


Con questa procedura è possibible determinare il numero delle repliche necessarie
per stimare il valore atteso µ = E(X) con una precisione fissata. Nella prima fase
vengono effettuate un numero fissato n0 di repliche e sulla base di queste si calcola
la stima della varianza s2n0 e l’intervallo di confidenza per µ. A questo punto, nella
seconda fase, assumendo che la stima della varianza non cambi significativamente
all’aumentare del numero delle repliche, si effettuano, eventualmente, ulteriori
repliche fino ad ottenere la precisione voluta. Considerando l’errore assoluto, il
numero totale delle repliche da effettuare per ottenere un errore assoluto pari al
più a β è dato da
 s 
 s2n0 
n?a = min i ≥ n0 | ti−1,1− α2 ≤β ,
 i 

ovvero si incrementa il numero delle repliche aggiuntive i di 1 fino a quando si


ottiene la disuguaglianza verificata. Ovviamente, se n?a > n0 , allora si dovranno
effettuare n?a − n0 repliche aggiuntive.
Analogamente, considerando l’errore relativo, supponendo di aver costruito un
intervallo di confidenza per µ basato su un numero fissato n0 di repliche, allora
si può verificare che il numero totale delle repliche da effettuare per ottenere un
errore relativo pari a γ è
 s 


 s2n0 



 ti−1,1− α2 

i γ
n?r = min i ≥ n0 | ≤ .

 |X̄n0 | 1 + γ


 
 

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:

Passo 0: si effettuano n0 repliche della simulazione e si pone n = n0 ;

Passo 1: si calcolano X̄n e δ(n, α) da X1 , . . . , Xn ;


δ(n, α) γ
Passo 2: se ≤ si usa X̄n come stima di µ e STOP;
|X̄n | 1+γ
altrimenti si effettua un’ulteriore replica, si pone n = n + 1 e si va al
Passo 1.

Da una sperimentazione diretta su un grande numero di modelli e di distribuzioni


di probabilità per le quali sono noti i valori di µ è stato verificato che la procedura
ora descritta fornisce una buona copertura dell’intervallo di confidenza al 90%
utilizzando n0 ≥ 10 e γ ≤ 0.15.

Naturalmente, la stessa procedura può essere utilizzata considerando l’errore asso-


luto al posto dell’errore relativo; tuttavia, il fatto che l’errore assoluto sia piccolo,
ovviamente è estremamente dipendente dal modello e molto sensibile alla scelta
di β e quindi, in generale, si preferisce una procedura basata sull’errore relativo.
170 SIMULAZIONE

2.5.5 Simulazioni senza terminazione: analisi dello stato stazionario

Sia {Yj , j = 1, 2, . . .} il processo di output di una simulazione senza terminazione,


e supponiamo che esista il limite (2.5.2). Supponiamo di voler stimare la media

µ = lim E(Yj ) = E(Y )


j→∞

della variabile aleatoria di interesse Y . Naturalmente, date m osservazione Y1 , . . . Ym ,


una stima di µ si può ottenere da

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−`

dove quindi ` è il numero delle osservazioni che vengono scartate. Ovviamente


c’è il problema di come scegliere `, ovvero il periodo di warming up, in modo che
E(Ȳ(m,`) ) ≈ µ. Se il valore di ` è troppo piccolo c’è il rischio che la stima risenta
delle condizioni iniziali, mentre se è troppo grande si potrebbe avere uno spreco
di tempo di calcolo.
Sono state proposte diverse regole per determinare `, nessuna delle quali parti-
colarmente soddisfacente. C’è, invece, una procedura basata su un’analisi grafica
che è efficace. Poiché si vuole determinare un valore ` tale che per i > ` risulti
E(Yi ) ≈ µ, graficamente questo si traduce nel determinare quando la curva E(Yi ),
i = 1, 2, . . . si “stabilizza” intorno al valore µ. Il problema è che, molto spesso,
si ha un andamento influenzato da un’alta varianza e quindi molto oscillante.
Procedura Per superare questo inconveniente, è stata introdotta una procedura nota come
di Welch procedura di Welch che, prima di effettuare l’analisi grafica prevede un “tratta-
mento” dei dati per ridurre la varianza. Uno schema della procedura di Welch è
il seguente:
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 171

Passo 1: Si effettuano n repliche ciascuna di lunghezza m:


Y11 Y12 ··· Y1m
Y21 Y12 ··· Y2m
.. .. ..
. . .
Yn1 Yn2 · · · Ynm .

Passo 2: Si costruisce la successione Ȳ1 , Ȳ2 , . . . Ȳm dove


n
X
Yij
i=1
Ȳj = .
n

Passo 3: Dato k ≤ bm/4c, si sostituisce ciascun termine della successione


Ȳ1 , Ȳ2 , . . . Ȳm con

 Xk



 Ȳj+h



 h=−k

 , j = k + 1, . . . , m − k

 2k + 1
Ȳj (k) = j−1

 X

 Ȳj+h





 h=−(j−1)

 , j = 1, . . . , k
 2j − 1

© ª
Passo 4: Si sceglie quel valore di ` oltre il quale la successione Ȳj (k) appare
giunta a convergenza.

Al Passo 2 si effettua la media fra i dati corrispondenti nelle diverse repliche,


costruendo cosı̀ le Ȳj . Poiché risulta E(Ȳj ) = E(Yj ) e V ar(Ȳj ) = V ar(Yj )/n,
si ha che la media è rimasta invariata, mentre la varianza è stata ridotta di un
fattore 1/n.

Al Passo 3, si sostituisce ciascuna Ȳj ottenuta al passo precedente con la media


tra essa e le Ȳj immediatamente precedenti e successive ovvero, se j non è troppo
vicino all’inizio della successione, Ȳj (k) non è altro che la media di 2k + 1 valori
delle Ȳj centrate alla j-esima. Il valore k che determina quanti termine inclu-
dere nelle media si chiama “time window”. Il valore Ȳj (k) è chiamato “moving
average”.

Ad esempio, per k = 2 si ha:


172 SIMULAZIONE

Ȳ1 (2) = Ȳ1


1¡ ¢
Ȳ2 (2) = Ȳ1 + Ȳ2 + Ȳ3
3
1¡ ¢
Ȳ3 (2) = Ȳ1 + Ȳ2 + Ȳ3 + Ȳ4 + Ȳ5
5
1¡ ¢
Ȳ4 (2) = Ȳ2 + Ȳ3 + Ȳ4 + Ȳ5 + Ȳ6
5
..
.
1¡ ¢
Ȳm−2 (2) = Ȳm−4 + Ȳm−3 + Ȳm−2 + Ȳm−1 + Ȳm .
5
Nella pratica, le linee guida che conviene seguire per la determinazione della
lunghezza del transitorio sono le seguenti: si disegna il grafico delle Ȳj (k) per
diversi valori di k e si sceglie il più piccolo valore di k (se esiste) per il quale il
grafico è “sufficientemente smooth”; si utilizza questo grafico per determinare la
lunghezza ` del periodo di warming up.
Per concludere, ribadiamo il fatto che è molto importante scgeliere in modo ap-
propriato i tre parametri fondamentali di una simulazione, m, n e k:

• 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 numero delle repliche n, è opportuno iniziare con


valori di n pari a 5 o 10 per poi aumentare il valore, se necessario;

• 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.

Stima della media basata sull’approccio “repliche–cancellazioni”


Supponiamo di aver effettuato n repliche di una simulazione, ciascuna di lunghezza
m (repliche pilota) e di aver determinato il valore della lunghezza del transitorio
`. L’analisi statistica da effettuare per il calcolo della media e dell’intervallo di
confidenza è del tutto analoga a quella già vista nel paragrafo 2.5.4 nel caso di
simulazioni con terminazione, con l’unica differenza che consiste nell’utilizzare,
in ciascuna replica, solamente le osservazioni successive alla `-esima.
Sia n0 il numero delle repliche ed m0 la lunghezza di ogni replica, assumendo che
m0 À ` e dove ` è stato determinato con la procedura di Welch. Per ogni replica
PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 173

i si definisce una variabile aleatoria


m 0
X
Yik
k=`+1
Xi = , i = 1, . . . n0 .
m0 − `
Si ha che le Xi sono indipendenti, identicamente distribuite con E(Xi ) ≈ µ e,
analogamente al caso dell’analisi del transitorio, si può definire
n0
X
Xi
i=1
X̄n0 =
n0
che è uno stimatore (approssimativamente corretto) della media µ; un intervallo
di confidenza approssimato del 100(1 − α)% per µ è
s
s2n0
X̄n0 ± tn0 −1,1− α2 .
n0
Nella maggior parte dei casi, per il basso costo del tempo di calcolo, non costitu-
isce un problema l’uso di n repliche pilota per determinare ` e poi l’uso delle sole
ultime m0 − ` osservazioni provenienti da n0 repliche differenti da quelle pilota.
Naturalmente continuano a valere tutte le considerazioni fatte nel paragrafo 2.5.4
per quanto riguarda la possibilità di ottenere una precisione desiderata.
174 SIMULAZIONE

2.6 TECNICHE PER LA RIDUZIONE DELLA VARIANZA

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.

2.6.1 Variabili antitetiche

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.

Proposizione 2.6.1 Se h(x1 , . . . , xm ) è una funzione monotona nelle


x1 , . . . , xm , allora, se U1 , . . . , Um è un insieme di numeri casuali uniforme-
mente distribuiti in [0, 1) allora

Cov (h(U1 , . . . , Um ), h(1 − U1 , . . . , 1 − Um )) ≤ 0.

Si procede, quindi, in questo modo: si effettuano n coppie di repliche di una


simulazione ottenendo le osservazioni
³ ´ ³ ´ ³ ´
(1) (2) (1) (2)
X1 , X1 , X2 , X2 , ... , Xn(1) , Xn(2)
(1)
dove la Xj è ottenuta dalla prima replica della j−esima coppia di repliche
(2)
utilizzando Uj e dove la Xj è ottenuta dalla seconda replica della j−esima
coppia di repliche utilizzando 1 − Uj . ³ ´
(1) (2)
Quindi, per ogni j = 1, . . . , n, si hanno coppie di osservazioni Xj , Xj e
quindi si può definire
(1) (2)
+ XjXj
Xj = , j = 1, . . . n,
2
e calcolare la stima della media
n
X
Xj
j=1
X̄n = .
n
Si ha
 
(1) (2)
V ar(Xj ) 1 Xj + Xj
V ar(X̄n ) = = V ar  =
n n 2
176 SIMULAZIONE

³ ´ ³ ´ ³ ´
(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

Un’altra tecnica di riduzione della varianza è basata sul condizionamento. Questa


tecnica è basata su alcuni noti risultati di Calcolo delle probabilità riguardanti
il valore atteso condizionato e la varianza condizionata. In particolare, si fa
riferimento ai risultati riportati nella seguente proposizione.

Proposizione 2.6.2 Siano X e Y due variabili aleatorie. Allora valgono le


seguenti relazioni:

i) E(X) = E (E(X/Y ))

ii) V ar(X) = E (V ar(X/Y )) + V ar (E(X/Y )).

Dimostrazione: [Questa dimostrazione non fa parte del programma di esame]


Dimostriamo queste relazioni nel caso in cui le variabili X e Y siano discrete (il
caso di variabili continue si tratta in maniera analoga).
Dato un qualsiasi valore y di Y si può calcolare E(X | Y = y) e risulta
X X P (X = x, Y = y)
E(X | Y = y) = xP (X = x | Y = y) = x ,
x x P (Y = 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

e questo dimostra la i). Per dimostrare la ii) si consideri che vale


³ ´
V ar(X/Y ) = E (X − E(X/Y ))2 /Y = E(X 2 /Y ) − (E(X/Y ))2 . (2.6.1)

Prendendo il valore atteso ad entrambi i membri della (2.6.1) si ha


³ ´ ³ ´
E (V ar(X/Y )) = E E(X 2 /Y ) − E (E(X/Y ))2
³ ´
= E(X 2 ) − E (E(X/Y ))2 . (2.6.2)

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)

Sommando la (2.6.2) e la (2.6.3) si ha

E (V ar(X/Y )) + V ar(E(X/Y )) = E(X 2 ) − (E(X))2 ,

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

V ar(X) ≥ V ar(E(X/Y )). (2.6.4)

Questo ci permette di affermare che se X è una variabile di output di una si-


mulazione e supponiamo di voler stimare il valore atteso θ = E(X), per la i), si
ha
θ = E(X) = E (E(X/Y )) ,
ovvero E(X/Y ) è uno stimatore corretto della media e, per la (2.6.4), si ha che
la sua varianza è inferiore. Quindi può essere più conveniente utilizzare E(X/Y )
come stima di θ.
In sintesi, lo spirito di questa tecnica è quello di sfruttare qualche proprietà
speciale di un modello di simulazione (ove esista), sostituendo una stima di una
quantità con il suo valore analitico esatto. Rimuovendo questa fonte di variabilità
si dovrebbe avere una variabile aleatoria di output più “stabile”, anche se non c’è
alcuna garanzia che questo sia verificato.
178 SIMULAZIONE

2.7 SOFTWARE DI SIMULAZIONE: ARENA

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.2 Un’impresa per la trasformazione di semilavorati deve processare l’arrivo di


100 semilavorati; inoltre questi ultimi dovranno passare attraverso 2 ulteriori processi di la-
vorazione: detti Machining Center ed Inspection Station. Dopo tali processi verrà effettuato
il controllo di qualità sul prodotto finito valutandone il grado di finitezza. I dati relativi al
problema sono:
• al primo processo produttivo i semilavorati arrivano uno alla volta con intertempo di
arrivo esponenziale (media pari ad 1 minuto);
• i tempi di processamento (espressi in minuti) al Machining Center sono uniformemente
distribuiti nell’intervallo [0.65, 0.70];
• i tempi di processamento (espressi in minuti) al Inspection Station sono uniformemente
distribuiti nell’intervallo [0.75, 0.80];
• con probabilità del 50% i pezzi controllati sono “perfect” ed escono dal sistema attraverso
un proprio canale;
• con probabilità del 20% i pezzi controllati sono “very good” ed escono dal sistema at-
traverso un proprio canale;
• con probabilità del 5% i pezzi controllati sono “good” ed escono dal sistema attraverso
un proprio canale;
• con probabilità del 25% i pezzi controllati rientrano nel sistema e vengono rilavorati sui
due processi.
Si costruisca con il simulatore ARENA il processo sopra descritto e se ne verifichi il funziona-
mento. Si provi a modificare poi il numero degli arrivi da 100 a 1000 e verificarne il differente
funzionamento. Infine si modifichi il sistema, agendo solo sui due processi, al fine di evitare il
problema che si crea passando da 100 a 1000 arrivi.
SOFTWARE DI SIMULAZIONE: ARENA 179

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

2.8 RIFERIMENTI DEL CAPITOLO 2

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].

Segnaliamo inoltre il sito Web dell’Informs College on Simulation


http://www.informs-cs.org
e il sito dei proceedings delle conferenze annuali “Winter Simulation Conference”
http://www.informs-cs.org/wscpapers.html
nel quale si possono trovare molti articoli e survey aggiornate su diversi aspetti
della simulazione e su applicazioni della simulazione.

Banks, J. (1998). Handbook on Simulation. Principles, Methodology, Ad-


vances, Applications, and Practice. Wiley and Sons, New York.

Banks, J., J.S.Carson, Nelson, B., Nicol, D. (2001). Discrete–event


system simulation. Prentice Hall.

Law, A., Kelton, W. (2000). Simulation modeling and analysis. McGraw


– Hill, New York, third edition.

Kelton, W., Sadowski, R., Sturrock, D. (2004). Simulation with


Arena. McGraw – Hill, New York, third edition.

Ross, S. (2002). Simulation. Academic Press, San Diego, third edition.

Ross, S. (2003a). Introduction to probability models. Academic Press, San


Diego.

Ross, S. (2003b). Probabilità e statistica. Apogeo, Milano.


ESERCIZI SULLA SIMULAZIONE 181

2.9 ESERCIZI SULLA SIMULAZIONE

Esercizio 2.9.1 Applicare il metodo della trasformazione inversa per generare


cinque osservazioni casuali dalla distribuzione esponenziale con media pari ad 1,
a partire dai seguenti cinque numeri casuali generati dalla distribuzione uniforme
in [0, 1)
0.495 0.335 0.791 0.469 0.279

Esercizio 2.9.2 Si vuole effettuare una simulazione di un sistema di code M/M/3


in cui la frequenza media di arrivo è pari a 20 e la velocità di servizio è pari a
10, essendo interessati a stimare il numero medio di utenti presenti nel sistema.
Supponiamo che siano state effettuate 5 repliche indipendenti dalle quali si sono
ottenuti i seguenti risultati:
1a replica: 3.28
2a replica: 2.57
3a replica: 3.01
4a replica: 2.93
5a replica: 2.55
Calcolare la stima della media e l’intervallo di confidenza al 95%. Facendo rifer-
imento a tale intervallo di confidenza, trascurando il problema dello start up e
supponendo di voler ottenere un errore assoluto sulla stima della media inferiore
a 0.2, determinare se le cinque repliche effettuate sono sufficienti ad ottenere tale
precisione. In caso negativo, applicando la procedura iterativa, determinare il nu-
mero delle repliche necessarie per ottenere la precisione voluta sapendo che nelle
eventuali successive cinque repliche si ottengono i seguenti valori:
6a replica: 2.69
7a replica: 2.61
8a replica: 2.85
9a replica: 2.91
10a replica: 2.88

Esercizio 2.9.3 Applicare la procedura di Welch, con un valore di time window


k = 2, al seguente output di una simulazione
1a replica: 3.72 2.90 3.32 2.50 2.12 3.90 3.10 2.60
2a replica: 2.37 3.80 4.00 3.75 2.90 3.12 2.30 2.70
3a replica: 3.12 2.05 2.90 2.55 2.95 3.30 3.00 2.80
4a replica: 2.98 3.90 3.54 3.10 2.78 2.10 1.90 2.35
5a replica: 2.50 1.90 3.10 2.60 2.20 3.00 2.70 2.85
Dei valori Ŷj (2) ottenuti dalla procedura, (trascurando il problema dello startup)
determinare media e t intervallo di confidenza al 95%.
3

3.1 ESERCIZI DI RIEPILOGO

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

• il numero medio di pezzi presenti nel sistema;


• il tempo medio di attesa di un pezzo in coda prima di essere lavorato;
• il tempo medio di permanenza nel sistema.
Senza effettuare il calcolo diretto, ma utilizzando i valori già calcolati, dedurre i
valori del tempo medio di attesa in coda e il numero medio di pezzi in coda nel
caso in cui i tempi di servizio fossero esponenziali.

Esercizio 3.1.4 Presso un ambulatorio medico arrivano i pazienti ad intervalli


medi di 20 minuti e sono necessari, in media 15 minuti per la visita medica. Si
assume che gli arrivi sono poissoniani e che i tempi di durata delle visite sono
esponenziali. Il medico desidera avere sufficienti posti a sedere tra la sala d’attesa
dell’ambulatorio e quello su cui siede il paziente durante la visita in modo che non
più dell’1% dei pazienti deve attendere in piedi. Quante sedie dovrà acquistare ?

Esercizio 3.1.5 Supponiamo che in 10 repliche indipendenti di una simulazione,


una variabile aleatoria assuma i seguenti valori Xj : 9.98, 10.07, 9.94, 10.22, 9.98,
10.01, 10.11, 10.01, 9.99, 9.92. Determinare la stima della media e l’intervallo t
di confidenza al 95%.

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

Banks, J. (1998). Handbook on Simulation. Principles, Methodology, Advances,


Applications, and Practice. Wiley and Sons, New York.

Banks, J., J.S.Carson, Nelson, B., Nicol, D. (2001). Discrete–event system


simulation. Prentice Hall.

Bertsekas, D., Gallager, R. (1991). Data Networks. Prentice Hall, Upper


Saddle River, NJ, second edition.

Bhat, U. (2008). An Introduction to Queueing Theory. Birkhauser, Boston.

Billingsley, P. (1979). Probability and mesaure. Wiley and Sons, New York.

Bratley, P., Fox, B., Schrage, L. (1987). A guide to simulation. Springer–


Verlag, New York, second edition.

Cooper, R. (1981). Introduction to queueing theory. North Holland, New York.

Gross, D., Harris, C. (1998). Fundamental of queueing theory. Wiley and


Sons, New York, third edition.

Hillier, F., Lieberman, G. (2001). Introduction to operations research. Mc-


Graw – Hill, New York.

Kelton, W., Sadowski, R., Sturrock, D. (2004). Simulation with Arena.


McGraw – Hill, New York, third edition.
186 BIBLIOGRAFIA

Kleinrock, L. (1975). Queueing systems, vol. I: Theory. Wiley, New York.


Disponibile nella traduzione italiana: Sistemi a coda, Introduzione alla teoria
delle code, Hoepli, 1992.

Kleinrock, L. (1976). Queueing systems, vol. II: Computer Applications. Wiley,


New York.

Law, A., Kelton, W. (2000). Simulation modeling and analysis. McGraw –


Hill, New York, third edition.

Ross, S. (2002). Simulation. Academic Press, San Diego, third edition.

Ross, S. (2003a). Introduction to probability models. Academic Press, San Diego.

Ross, S. (2003b). Probabilità e statistica. Apogeo, Milano.


Sommario

Prefazione iii
Introduzione v

1 Teoria delle code 1


1.1 Generalità 3
1.1.1 Esempi reali di sistemi di code 4
1.1.2 Componenti di un sistema di servizio 5
1.1.3 Notazione di Kendall 8
1.2 Problematiche di interesse e relazioni fondamentali 10
1.2.1 Definizioni e notazioni standard 10
1.2.2 Misure di prestazione 12
1.2.3 Relazioni fondamentali 15
1.3 Modelli stocastici dei processi di arrivo e di servizio 20
1.3.1 La distribuzione esponenziale e le sue proprietà 20
1.3.2 Il processo di Poisson 25
1.3.3 Altri modelli per processi di arrivo 30
1.4 Processi di nascita e morte 33
1.4.1 Caratterizzazione dei processi di nascita e morte 33
1.4.2 Le equazioni di Kolmogorov e la soluzione
stazionaria 37
1.4.3 Sistemi di code e processi di nascita e morte 45
187
188 SOMMARIO

1.5 Sistemi a coda basati su processi di nascita e morte 46


1.5.1 Sistemi con arrivi poissoniani: proprietà PASTA 47
1.5.2 Sistemi M/M/s 50
1.5.3 Sistemi M/M/s/K 61
1.5.4 Sistemi M/M/s/ · /U 67
1.5.5 Sistemi con velocità di servizio e frequenza di arrivo
dipendenti dallo stato 71
1.5.6 Sistemi M/M/∞ 75
1.6 Sistemi a coda con distribuzioni non esponenziali 76
1.6.1 Sistemi M/G/1 76
1.6.2 Sistemi con arrivi non poissoniani 82
1.7 Modelli di code con disciplina della coda basata su criteri
di priorità 83
1.8 Reti di code 87
1.8.1 Generalità 87
1.8.2 Il processo delle partenze per i sistemi M/M/s 88
1.8.3 Serie di code 90
1.8.4 Reti di Jackson aperte 93
1.8.5 Reti di Jackson chiuse 101
1.9 Riferimenti del Capitolo 1 104
1.10 Esercizi di riepilogo 105

Appendice A: Formulario – Sistemi a coda 111


A.1 Modelli basati su processi di nascita e morte 111
A.1.1 Sistemi M/M/1 111
A.1.2 Sistemi M/M/s 112
A.1.3 Sistemi M/M/1/K 112
A.1.4 Sistemi M/M/s/K 113
A.1.5 Sistemi M/M/1/ · /U 113
A.1.6 Sistemi M/M/s/ · /U 114
A.1.7 Sistemi con λ e µ dipendenti dallo stato – singolo
servente 114
A.1.8 Sistemi con λ e µ dipendenti dallo stato –
multiservente 115
A.1.9 Sistemi M/M/∞ 115
A.2 Modelli con distribuzioni non esponenziali 116
A.2.1 Sistemi M/G/1 116
SOMMARIO 189

A.2.2 Sistemi M/D/s 116


A.2.3 Sistemi M/Ek /1 116
A.3 Modelli con disciplina della coda basata su criteri di
priorità 117
A.3.1 Priorità senza interruzione del servizio 117
A.3.2 Priorità con interruzione del servizio – singolo
servente 117

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

2.6 Tecniche per la riduzione della varianza 174


2.6.1 Variabili antitetiche 174
2.6.2 Condizionamento 176
2.7 Software di simulazione: ARENA 178
2.8 Riferimenti del Capitolo 2 180
2.9 Esercizi sulla simulazione 181

3 183
3.1 Esercizi di riepilogo 183

Potrebbero piacerti anche