Sei sulla pagina 1di 38

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” il funzionamento 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;

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERALITÀ SUI MODELLI DI SIMULAZIONE 127

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


128 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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERALITÀ SUI MODELLI DI SIMULAZIONE 129

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERALITÀ SUI MODELLI DI SIMULAZIONE 131

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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


132 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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERALITÀ SUI MODELLI DI SIMULAZIONE 133

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


ANALISI DELL’INPUT 135

2.2 ANALISI DELL’INPUT

2.2.1 Generalità

Per effettuare una simulazione di un sistema che presenta elementi stocastici


è necessario specificare le distribuzioni di probabilità che regolano i processi che
caratterizzano il sistema stesso. Ad esempio, nei sistemi a coda devono essere note
le distribuzioni di probabilità dei tempi di interarrivo e dei tempi di servizio. Se è
possibile raccogliere dati reali (osservazioni) sulle variabili aleatorie di interesse,
essi possono essere utilizzati per determinare queste distribuzioni facendo uso di
tecniche di inferenza statistica. Questa prima fase viene di solito chiamata analisi
dell’input e sarà oggetto di studio di questo paragrafo.
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à. Successivamente, vengono utilizzate tecniche statis-
tiche per interpretare i risultati ottenuti da una simulazione (analisi dell’output).
Questi ultimi due aspetti saranno trattati nei paragrafi successivi.
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. Esula dallo scopo di
queste note una trattazione degli elementi dell’inferenza statistica che verranno
assunti come noti. Una breve rassegna di alcuni importanti risultati è riportata
nell’Appendice. Richiamiamo di seguito solo alcune importanti osservazioni e le
ben note definizioni di media campionaria e varianza campionaria
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.
Formalmente, sia dato un campione X1 , . . . , Xn estratto da una popolazione,
ovvero le Xi sono variabili aleatorie indipendenti identicamente distribuite, e sia
µ e σ 2 rispettivamente la loro media e la loro varianza (ovvero la media e la
varianza della popolazione). La media campionaria è data da Media cam-
pionaria

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


136 SIMULAZIONE

1∑
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 ∑( )2
n
ria s2n = Xi − X̄n
n−1
i=1

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

2.2.2 Scelta delle distribuzioni di input

Se è possibile raccogliere dati reali sulle variabili aleatorie di interesse, essi possono
essere utilizzati per determinare una distribuzione di probabilità che meglio li
rappresenta 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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


ANALISI DELL’INPUT 137

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;

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


138 SIMULAZIONE

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

5/6

2/3

1/2

1/3

1/6

0.4 1 2 2.5 3 3.6 4

Fig. 2.2.1 Grafico della distribuzione empirica dell’Esempio 2.2.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) .
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.2.4 Distribuzioni teoriche

• Distribuzioni Continue
Le distribuzioni teoriche continue alle quali si può fare riferimento nella

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


ANALISI DELL’INPUT 139

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,
· 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.2.5 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:
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
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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


140 SIMULAZIONE

Verifica dell段ndipendenza
delle osservazioni

Individuazione di una
famiglia di distribuzioni

Stima dei parametri


della distribuzione

Verifica della rappresentativit

informale sull’indipendenza consiste nel valutare la correlazione fra diverse osser-


vazioni. Sia


n−j
(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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


ANALISI DELL’INPUT 141

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
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;
1∑
n
– 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
(Xi − X̄n )2
i=1
s2n = ;
n−1

– stime di misure di variabilità:



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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


142 SIMULAZIONE

· 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
[(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
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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


ANALISI DELL’INPUT 143


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

∫ 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 = ⌊1 + log2 n⌋. 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 .

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


144 SIMULAZIONE

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 è un argomento
vasto che si assume noto. Alcuni cenni riguardanti lo stimatore di massima
verosimiglianza (Maximum Likelihood Estimator) sono riportati nell’Appendice.

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 è noto, i test delle ipotesi possono essere utilizzati per verificare se le
osservazioni X1 , . . . , Xn sono un campione indipendente di una particolare
distribuzione di probabilità con funzione di distribuzione Fb. I due test piú
comuni sono i test Chi–quadro e Kolmogorov–Smirnov e sono adatti al caso
che stiamo esaminando anche se essi presentano le loro limitazioni intrin-
seche. Un’esposizione sintetica di questi due test è riportata nell’Appendice.

2.2.6 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
entrare nei dettagli, osserviamo solamente che sarà necessario far ricorso a proce-
dure 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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERAZIONE DI OSSERVAZIONI CASUALI 145

2.3 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 129, 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.3.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 1 . 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.

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


146 SIMULAZIONE

Esempio 2.3.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.3.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).

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERAZIONE DI OSSERVAZIONI CASUALI 147

Nei linguaggi di programmazione sono di solito disponibili generatori di numeri


pseudocasuali ed esistono metodi statistici per valutarne la qualità.
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.3.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.3.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 .

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


148 SIMULAZIONE

Osservazione 2.3.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
pseudoinversa data da

F −1 (x) = inf {y ∈ IR | x ≤ F (y)} .

Esempio 2.3.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.3.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.3.1) possiamo
ottenere una successione di numeri pseudocasuali con distribuzione esponenziale.

Osservazione 2.3.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.3.1) si può sostituire nell’argomento del logaritmo (1 − U ) con
U . Tuttavia, come vedremo nel seguito nel paragrafo 2.5.1 sulle tecniche per la
riduzione della varianza, questo cambiamento potrebbe indurre un cambiamento
nella correlazione delle variabili X generate.

Esempio 2.3.6 Utilizzando quanto ricavato nel precedente Esempio 2.3.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

∑k
ln(1 − ui )
x=
i=1
−kµ

che è equivalente a [ k ]
1 ∏
x=− ln (1 − ui ) .
kµ i=1

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERAZIONE DI OSSERVAZIONI CASUALI 149

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

F (x) = P (X ≤ x) = p(xi ),
xi ≤x

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


150 SIMULAZIONE

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:

Passo 1: si genera un osservazione casuale della variabile aleatoria Y ;

Passo 2: si genera un numero casuale U dalla distribuzione uniforme in [0, 1)


(indipendente da Y );
f (Y )
Passo 3: 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. Alla fine dell’algoritmo si avrà quindi che la variabile X
ha la distribuzione condizionata di Y dato l’evento “accettazione”, ovvero l’evento
{ }
f (Y )
U≤ .
cg(Y )
Si può dimostrare che la variabile aleatoria X le cui osservazioni casuali sono
generate con il metodo accettazione–reiezione ha la densità di probabilità voluta,
ovvero vale la seguente proposizione.

Proposizione 2.3.7 La variabile aleatoria X generata con il metodo


accettazione–reiezione ha densità di probabilità f .

Dimostrazione: Osserviamo innanzitutto che, poiché la posizione X = Y si ha


quando avviene l’“accettazione”, allora risulta
( )
f (Y )
P (X ≤ x) = P Y ≤ x/U ≤ .
cg(Y )
Inoltre, per l’indipendenza di Y da U si ha
( ) ( )
f (Y ) f (y) f (y)
P U≤ /Y = y = P U ≤ = (2.3.2)
cg(Y ) cg(y) cg(y)

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


GENERAZIONE DI OSSERVAZIONI CASUALI 151

Utilizzando la (2.3.2) si ottiene


( ) ∫ ∞ ( ) ∫ ∞
f (Y ) f (Y ) f (y) 1
P U≤ = P U≤ /Y = y g(y)dy = g(y)dy =
cg(Y ) −∞ cg(Y ) −∞ cg(y) c
perché f è una densità di probabilità. Utilizzando le relazioni già ottenute, pos-
siamo quindi calcolare
( )
( ) P Y ≤ x , U ≤ f (Y )
f (Y ) cg(Y )
P (X ≤ x) = P Y ≤ x/U ≤ = ( ) =
cg(Y ) f (Y )
P U ≤ cg(Y )
∫ x ( )
f (Y )
= c P U≤ /Y = y ≤ x g(y)dy
−∞ cg(Y )
∫ x ( )
f (Y )
= c P U≤ , Y = y g(y)dy
−∞ cg(Y )
∫ x ∫ x
f (y)
= c g(y)dy = f (y)dy = F (x).
−∞ cg(y) −∞

Esempio 2.3.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 genera un’osservazione casuale U1 e dalla distribuzione uniforme in [0, 1);

Passo 2: si genera un’osservazione casuale U2 dalla distribuzione uniforme in [0, 1);


256
Passo 3: 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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


152 SIMULAZIONE

2.4 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.4.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 a
coda, 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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 153

n repliche indipendenti di lunghezza m, ottenendo cosı̀

y11 y12 ··· y1m


y21 y12 ··· y2m
.. .. .. (2.4.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.4.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.4.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.
La Fi (y | I) è la distribuzione transitoria del processo di output al tempo (dis- Distribuzio-
creto) i con condizioni iniziali I. In generale, la Fi (y | I) è diversa per differenti ne transi-
valori di i e per ogni insieme di condizioni iniziali I. toria
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.4.2)


i→∞

allora F (y) è la distribuzione stazionaria del processo di output {Yi , i = 1, 2, . . .}. Distribuzio-
Lo stato stazionario si raggiunge, in teoria, al limite per i → ∞, ma, nella pratica, ne stazio-
molto spesso esiste un indice temporale finito k̄ tale che le distribuzioni da quel naria
punto in poi rimarrano approssimativamente coincidenti. Quando questo accade,
si assume che il sistema è nello stato stazionario a partire dal tempo k̄.

Osservazione 2.4.1 Ovviamente il raggiungimento dello stato stazionario non


equivale a dire che le variabili aleatorie Yk̄ , Yk̄+1 , . . . assumeranno tutte lo stesso

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


154 SIMULAZIONE

valore in una particolare replica, ma solamente che hanno (approssimativamente)


la stessa distribuzione

Osservazione 2.4.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.4.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.

Simulazione Formalmente distinguiamo i due casi parlando, nel primo caso, di simulazione con
con o senza terminazione (finita), quando esiste un evento naturale che specifica la lunghezza
termina- di ciascuna replica. In questo caso le condizioni iniziali influenzano le misure di
zione prestazione del sistema e verrà naturalmente effettuata un’analisi del transitorio.
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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 155

2.4.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.4.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
Xi
i=1
X̄n =
n
e lo stimatore (corretto) della varianza dato da


n
(Xi − X̄n )2
i=1
s2n = .
n−1
Inoltre, dato α ∈ (0, 1), un intervallo di confidenza approssimato al 100(1 − α)%
è dato da √
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

s2n
δ(n, α) = tn−1,1− α2 (2.4.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
|µ|

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


156 SIMULAZIONE

Iniziamo ad esaminare il caso dell’errore assoluto. In genere si richiede di effet-


Errore tuare un numero di repliche n in modo tale che risulti
assoluto ( )
P |X̄n − µ| ≤ β ≥ 1 − α, α ∈ (0, 1), β > 0. (2.4.4)

La (2.4.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.4.4) sia soddisfatta; una delle più semplici è
la seguente:
n⋆a = min {n ≥ 2 | δ(n, α) ≤ β} .

Errore Per quanto riguarda l’errore relativo, si richiede che il numero di repliche n da
relativo effettuare sia tale che risulti
( )
|X̄n − µ|
P ≤ γ ≥ 1 − α, α ∈ (0, 1), γ > 0. (2.4.5)
|µ|
Anche in questo caso esistono regole empiriche che forniscono il valore del numero
minimo n⋆r di repliche da effettuare affinché la (2.4.5) sia soddisfatta; una di queste
è la seguente: { }
δ(n, α) γ
nr = 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.4.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.4.5) si deve avere L/(1 − L) = γ, ovvero L = γ/(1 + γ).
Per applicare nella pratica quanto ora discusso sono state definite due strategie
generali:

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 157

• 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 2
n
n⋆a = min i ≥ n0 | ti−1,1− α2 0
≤β ,
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 γ è
 √ 
2

 s 

 ti−1,1− α2 n 0
γ 
nr = min i ≥ n0 |
⋆ i ≤ .

 |X̄i | 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.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


158 SIMULAZIONE

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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 159

2.4.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.4.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
Yj
j=1
Ȳm = . (2.4.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 ) ̸= µ per
ogni m.
Questo problema è detto problema del transitorio iniziale o problema dello startup. Problema
Per superare questo problema si utilizza una tecnica di cancellazione dei dati ini- dello
ziali detta anche “warming up” del modello che consiste nel non considerare nella “startup”
stima le prime osservazioni che sono quelle più influenzate dalle condizioni iniziali.
Quindi, invece di utilizzare la stima Ȳm data dalla (2.4.7), si considera


m
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.
Per superare questo inconveniente, è stata introdotta una procedura nota come Procedura
procedura di Welch che, prima di effettuare l’analisi grafica prevede un “tratta- di Welch
mento” dei dati per ridurre la varianza. Uno schema della procedura di Welch è
il seguente:

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


160 SIMULAZIONE

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
Yij
i=1
Ȳj = .
n

Passo 3: Dato k ≤ ⌊m/4⌋, si sostituisce ciascun termine della successione


Ȳ1 , Ȳ2 , . . . Ȳm con


 ∑
k




Ȳj+h

 h=−k

 j = k + 1, . . . , m − k

 2k + 1
,
Ȳj (k) =

 ∑
j−1




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

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


PROGETTAZIONE DI UNA SIMULAZIONE E ANALISI DELL’OUTPUT 161

Ȳ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.4.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 n′ il numero delle repliche ed m′ la lunghezza di ogni replica, assumendo che
m′ ≫ ℓ e dove ℓ è stato determinato con la procedura di Welch. Per ogni replica

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014


162 SIMULAZIONE

i si definisce una variabile aleatoria




m
Yik
i = 1, . . . n′ .
k=ℓ+1
Xi = ,
m′ − ℓ
Si ha che le Xi sono indipendenti, identicamente distribuite con E(Xi ) ≈ µ e,
analogamente al caso dell’analisi del transitorio, si può definire


n
Xi
i=1
X̄n′ =
n′
che è uno stimatore (approssimativamente corretto) della media µ; un intervallo
di confidenza approssimato del 100(1 − α)% per µ è

s2n′
X̄n′ ± tn′ −1,1− α2 .
n′
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 m′ − ℓ osservazioni provenienti da n′ repliche differenti da quelle pilota.
Naturalmente continuano a valere tutte le considerazioni fatte nel paragrafo 2.4.4
per quanto riguarda la possibilità di ottenere una precisione desiderata.

M. Roma – Sistemi di Servizio e Simulazione – SAPIENZA Università di Roma – a.a. 2013-2014

Potrebbero piacerti anche