Introduzione alla Simulazione Discreta



Documenti analoghi
Introduzione alla Simulazione Discreta

Automazione Industriale (scheduling+mms) scheduling+mms.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

1. Distribuzioni campionarie

Elementi di Psicometria con Laboratorio di SPSS 1

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1


Esercitazione #5 di Statistica. Test ed Intervalli di Confidenza (per una popolazione)

Corso di Informatica

Funzioni in C. Violetta Lonati

PROBABILITÀ - SCHEDA N. 2 LE VARIABILI ALEATORIE

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

TECNICHE DI SIMULAZIONE

Esempi di algoritmi. Lezione III

Introduzione al MATLAB c Parte 2

Capitolo 12 La regressione lineare semplice

Metodi statistici per le ricerche di mercato

10 - Programmare con gli Array

Slide Cerbara parte1 5. Le distribuzioni teoriche

Verifica di ipotesi

Prova di Laboratorio di Programmazione

Un po di statistica. Christian Ferrari. Laboratorio di Matematica

2. Leggi finanziarie di capitalizzazione

Tecniche di Simulazione: Introduzione. N. Del Buono:

1) Si consideri un esperimento che consiste nel lancio di 5 dadi. Lo spazio campionario:

Esercizio 1: trading on-line

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

PROVA FINALE V. AULETTA G. PERSIANO ALGORITMI II - -MAGIS INFO

Introduzione alla programmazione in C

4 3 4 = 4 x x x 10 0 aaa

PROGRAMMA SVOLTO NELLA SESSIONE N.

Note su quicksort per ASD (DRAFT)

Inizializzazione, Assegnamento e Distruzione di Classi

Lezioni di Matematica 1 - I modulo

Elementi di Psicometria con Laboratorio di SPSS 1

Esercizi su. Funzioni

E naturale chiedersi alcune cose sulla media campionaria x n

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Introduzione alla Simulazione Numerica

Capitolo 13: L offerta dell impresa e il surplus del produttore

Statistiche campionarie

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Domande a scelta multipla 1

Ing. Simone Giovannetti

risulta (x) = 1 se x < 0.

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Verifica e Validazione del Simulatore

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 11

Metodi Stocastici per la Finanza

CONTROLLO IN TENSIONE DI LED

Corso di Laurea in Matematica, Università di Roma La Sapienza Corso di ANALISI NUMERICA Esercitazioni in Laboratorio, 16 Maggio 2011

Elementi di Psicometria con Laboratorio di SPSS 1

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Test statistici di verifica di ipotesi

Relazioni statistiche: regressione e correlazione

LEZIONE n. 5 (a cura di Antonio Di Marco)

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Calcolatori Elettronici A a.a. 2008/2009

CAPITOLO 8 LA VERIFICA D IPOTESI. I FONDAMENTI

SPC e distribuzione normale con Access

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Sistemi di Servizio e Simulazione

Computational Game Theory

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Strutturazione logica dei dati: i file

Cluster. Vicino alla temperatura critica gli spin formano grandi gruppi (cluster)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

1.5. ISTOGRAMMA 17. Figura 1.3: Istogramma ottenuto mediante campionamento da VA Gaussiana (η x =0, σ 2 X =1).

Matematica in laboratorio

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Cosa dobbiamo già conoscere?

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Identificazione dei Parametri Caratteristici di un Plasma Circolare Tramite Rete Neuronale

Analisi di scenario File Nr. 10

Complessità Computazionale

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Matematica generale CTF

Il concetto di valore medio in generale

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Random number generators

VALORE DELLE MERCI SEQUESTRATE

Istruzioni (1): L elaborato verrà letto, compilato e fatto girare per verificare la correttezza della sintassi e delle operazioni svolte

LABORATORIO DI RETI. 02 La Multiplazione Statistica nelle Reti a Paccchetto

Registratori di Cassa

Corso di Calcolo Numerico

LE FUNZIONI A DUE VARIABILI

Basi di matematica per il corso di micro

Permutazione degli elementi di una lista

Statistica. Lezione 6

Metodi e Modelli Matematici di Probabilità per la Gestione

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Verifica di ipotesi e intervalli di confidenza nella regressione multipla

INCERTEZZA DI MISURA

Documentazione esterna al software matematico sviluppato con MatLab

CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique

Transcript:

Introduzione alla Simulazione Discreta Moreno Marzolla moreno.marzolla@pd.infn.it http://www.dsi.unive.it/~marzolla/ INFN Sezione di Padova 25 giugno 2008 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 1 / 73 Indice Introduzione Simulazione Discreta Generatori Pseudocasuali Analisi dell Output Conclusioni Bibliografia Appendice Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 3 / 73

Introduzione Sistemi e Modelli! " # $ % &' ()*+,-!."/ 0/ 1 Si vuole analizzare un certo sistema fisico (es., una CPU, una rete di calcolatori, un sistema software...). Il sistema reale potrebbe essere troppo complesso da anlizzare nel dettaglio Potrebbe non esistere ancora Potrebbe non essere possibile o troppo oneroso condurre prove Si crea un modello del sistema come rappresentazione semplificata che includa le caratteristiche più importanti L analisi del modello deve fornire informazioni sul al comportamento del sistema reale Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 5 / 73 Variabili di Stato Introduzione Definizione Le Variabili di Stato rappresentano lo stato in cui si trova il sistema in un particolare istante di tempo. Esempio Supponiamo di voler simulare un server con una coda di richieste associate. In questo caso lo stato del sistema è identificato dal numero di utenti Q(t) nel centro di servizio (area tratteggiata) al tempo t. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 6 / 73

Introduzione Alcuni tipi di Simulazione Simulazione continua Nella simulazione continua lo stato del sistema evolve in modo continuo nel tempo. Simulazione MonteCarlo Le simulazioni di tipo MonteCarlo sono utilizzate per modellare fenomeni che non dipendono dal tempo. Simulazione discreta Nella simulazione discreta lo stato del sistema evolve solo a specifici istanti di tempo. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 7 / 73 Simulazione Continua Esempio Introduzione Equazione di trasferimento del calore ( u 2 ) t k u 2 x + 2 u 2 y + 2 u 2 = 0 z con u(x, y, z, t) temperatura in (x, y, z) al tempo t. Fonte: http://en.wikipedia.org/wiki/heat_equation Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 8 / 73

Introduzione Simulazione MonteCarlo La simulazione di tipo MonteCarlo viene utilizzata per modellare fenomeni probabilistici che non dipendono dal tempo. Esempio: Vogliamo calcolare l area del cerchio senza conoscere il valore di π. 1 1 1 (x i, y i ) 1. Generiamo n coppie di numeri (x i, y i ) uniformemente distribuiti in [ 1, 1] [ 1, 1] 2. Sia C i = { 1 se x 2 i + y 2 i 1 0 altrimenti i = 1, 2,..., n n 1 3. Area 4 1 n i=1 C i Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 9 / 73 Simulazione Discreta Esempio Introduzione Riprendiamo l esempio del server con la coda associate: t Evento Q(t) 0 Inizio 0 2 Arrivo 1 1 3 Arrivo 2 2 5 Complet 1 1 6 Complet 2 0 7 Arrivo 3 1 10 Arrivo 4 2 12 Arrivo 5 3......... Num. utenti Q(t) 4 Eventi 3 2 1 0 0 2 4 6 8 10 12 Tempo (t) Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 10 / 73

(Alcuni) Errori Comuni Introduzione Mancanza di uno scopo chiaro Livello di dettaglio inappropriato Mancata verifica del modello Mancata validazione del modello Condizioni iniziali gestite in modo inappropriato Generatori pseudocasuali inappropriati Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 11 / 73 Introduzione Mancanza di uno scopo chiaro Sviluppare una simulazione complessa richiede risorse e una notevole esperienza. È indispensabile avere le idee chiare prima di investire tempo Quale scopo si prefigge la simulazione? Cosa intendiamo studiare? Che risultati ci aspettiamo? A cosa serviranno i risultati che otterremo? Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 12 / 73

Introduzione Livello di Dettaglio Inappropriato Si è portati a ritenere che un modello di simulazione più dettagliato sia sempre preferibile ad un modello più semplice, perché si basa su meno assunzioni. Questo non è sempre vero: Modelli dettagliati richiedono tempi di sviluppo più lunghi È maggiore la probabilità di introdurre errori Possono richiedere un maggior dettaglio nei parametri di input, che potrebbe non essere disponibile Garbage In, Garbage Out 1 Suggerimento I. Asimov, La Macchina che Vinse la Guerra http://xoomer.alice.it/mstangal/macchina.html Partire con un modello semplice, e raffinarlo solo se necessario. 1 http://en.wikipedia.org/wiki/garbage_in,_garbage_out Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 13 / 73 Introduzione Mancata verifica del modello Le simulazioni sono generalmente programmi complessi e di grosse dimensioni, e come tali possono contenere errori nel codice. Suggerimenti Scrivere il codice in modo strutturato e modulare Scrivere unit test ove possibile Eseguire il codice su esempi semplici di cui si conosca (o si possa determinare facilmente) il risultato esatto Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 14 / 73

Introduzione Mancata validazione del modello Anche se il software non contiene errori, i risultati della simulazione potrebbero comunque essere non attendibili perché si basano su assunzioni sbagliate. Suggerimenti Intuito Confrontare i risultati della simulazione con misure condotte su sistemi reali Confrontare i risultati della simulazione con risultati ottenuti per via analitica (es, usando modelli a reti di code) 0 0.2 0.4 0.6 0.8 1 Throughput Before After Probability of packed loss Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 15 / 73 Introduzione Condizioni iniziali gestite in modo inappropriato Nella maggior parte delle simulazioni si è interessati a studiare il comportamento del sistema nello stato stazionario, ossia nello stato stabile raggiunto quando il sistema è in esecuzione per un tempo sufficientemente lungo. La parte iniziale della simulazione è chiamata transiente, e come vedremo in seguito non è in genere rappresentativa dello stato stazionario. Suggerimenti Effettuare simulazioni lunghe Inizializzare la simulazione in modo opportuno Rimuovere parte dei dati iniziali dell output Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 16 / 73

Introduzione Generatori Pseudocasuali inappropriati Le simulazioni necessitano di generatori pseudocasuali per ottenere parametri da utilizzare (es., tempi di risposta, tempi di arrivo delle richieste, ecc.). La qualità dei risultati ottenuti dipende in maniera fondamentale dalla qualità dei generatori pseudocasuali adottati. Suggerimenti Chiedersi sempre che tipo di generatore pseudocasuale si sta utilizzando, e che proprietà abbia Non inizializzare il generatore con semi casuali (ad es, ottenuti dall ora corrente). Le simulazioni devono essere ripetibili Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 17 / 73 Simulazione ad Eventi Simulazione Discreta Num. utenti Q(t) 4 3 2 1 Eventi In una simulazione ad eventi lo stato del sistema cambia solo in determinati istanti di tempo (eventi). 0 0 2 4 6 8 10 12 Tempo (t) Può essere implementata mediante una lista di eventi (Future Event List o FEL) mantenuta ordinata in base all istante di occorrenza. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 19 / 73

Simulazione Discreta Future Event List (FEL) E 1 @t 1 E 2 @t 2 E n @t n L evento E i viene eseguito al tempo t i. La lista viene mantenuta ordinata in senso non decrescente in base al timestamp di occorrenza degli eventi (t 1 t 2... t n ). Un evento può Modificare lo stato della simulazione Schedulare uno o più nuovi eventi per il futuro Rimuovere uno o più eventi già schedulati La simulazione consiste semplicemente nello scorrere la FEL ed eseguire gli eventi a partire dal primo. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 20 / 73 Esempio Simulazione Discreta t Evento FEL Dopo 0 Inizio A 1 @2 A 2 @3 A 3 @7 A 4 @10 A 5 @12 2 Arrivo 1 A 2 @3 C 1 @5 A 3 @7 A 4 @10 A 5 @12 3 Arrivo 2 C 1 @5 A 3 @7 A 4 @10 A 5 @12 5 Complet 1 C 2 @6 A 3 @7 A 4 @10 A 5 @12 6 Complet 2 A 3 @7 A 4 @10 A 5 @12 7 Arrivo 3............ Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 21 / 73

{ Simulazione Discreta Schema di un simulatore ad eventi 6 5+ } ~"n52'4( ) *4+ 78' )+ &%9:*;5<,&=?>@BA '(5)4*C+ D'&. 78' )+ 49E1%9F* ;B<,C=G>E&A',()*+ HB. IJ),=%J. "F 6 &+! #"$&%'()*,+-$&. /-"0&%1.32 '4(5)*+ KCL5MNOQPSRJT U5VONXWYOTZ&[\QP^]_]a` bccedfg OhC[ijO glk T UBVONXW^[mZnPo]p T UBVONXWqZ&mZnPo]p T U [CMrT&O k O g5srt [ MrT&OuP^]p O g5svt OwO xy [OuPo]p z ONO[O_O g p 9:I/I} <, 5+ ƒ4 CI )I} Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 22 / 73 Evento Simulazione Discreta class AbsEvent { public: //... virtual void execute( void ) = 0; double time( void ) const { return m_time; }; void settime( double t ) { m_time = t; }; protected: AbsEvent( ) : m_time( 0 ) { }; double m_time; // Istante in cui eseguire l evento }; Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 23 / 73

Simulazione Discreta FEL class Fel { public: //... // Schedula l evento ev al tempo now()+dt void schedule( AbsEvent* ev, double dt ); // Schedula l evento ev al tempo (assoluto) t void scheduleat( AbsEvent* ev, double t ); // Ritorna il tempo corrente della simulazione double time( void ) const { return m_time; }; void run(); protected: struct ev_compare { bool operator()( const AbsEvemt* e1, const AbsEvent* e2 ) const { return (e1->time() > e2->time()); }; }; std::priority_queue< AbsEvent*, std::vector< AbsEvent* >, Fel::ev_compare > m_fel; double m_time; }; Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 24 / 73 FEL Simulazione Discreta void Fel::run( void ) { while(!m_fel.empty() ) { AbsEvent* e( m_fel.top() ); m_fel.pop(); m_time = e->time( ); e->execute( ); delete e; } } void Fel::scheduleAt( AbsEvent* e, double t ) { e->settime( t ); m_fel.push( e ); } void Fel::schedule( AbsEvent* e, double dt ) { e->settime( time()+dt ); m_fel.push( e ); } Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 25 / 73

Simulazione Discreta Simulatore di Centro di Servizio Classe job typedef struct job { public: job( int i ) : id( i ), arrival_time(0), completion_time(0) { }; int id; double arrival_time; double completion_time; } job; Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 26 / 73 Simulazione Discreta Simulatore di Centro di Servizio Implementazione metodo evarrival::execute() void evarrival::execute( void ) { m_job->arrival_time = time(); if ( m_server->empty() ) { AbsEvent* ev( new evcomplete( m_fel, m_server ) ); double t=m_server->servtime(); m_fel->schedule( ev, t ); } m_server->addjob( m_job ); }; Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 27 / 73

Simulazione Discreta Simulatore di Centro di Servizio Implementazione metodo evcomplete::execute() void evcomplete::execute( void ) { job* j = m_server->removejob(); j->completion_time = time(); cout << j->completion_time - j->arrival_time << endl; delete j; if (!m_server->empty() ) { double t=m_server->servtime(); AbsEvent* ev( new evcomplete( m_fel, m_server ) ); m_fel->schedule( ev, t ); } } Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 28 / 73 Simulazione Discreta Simulatore di Centro di Servizio Avvio della Simulazione //... rng* arrival_time = new rngexp( "Arrival", 1.0/arr_rate ); double t = arrival_time->value(); // Genera 1000 arrivi for ( int i=0; i<n_arrivals; ++i ) { AbsEvent* ev = new evarrival( &the_fel, the_server, new job( i ) ); the_fel.scheduleat( ev, t ); t += arrival_time->value(); } the_fel.run(); Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 29 / 73

Generatori Pseudocasuali Generatori Pseudocasuali Uno degli ingredienti fondamentali di una simulazione è la possibilità di generare sequenze di numeri pseudocasuali con una distribuzione specificata. Per realizzare ciò, si procede in due passi: 1. Si genera una sequenza di numeri pseudocasuali uniformemente distribuiti nell intervallo [0, 1]; 2. La sequenza ottenuta al punto 1 è trasformata in modo da ottenere una nuova sequenza con la distribuzione richiesta. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 31 / 73 Terminologia Generatori Pseudocasuali Il modo più comune di definire numeri (pseudo)casuali è mediante relazioni ricorrenti che calcolano l n-esimo numero noti alcuni dei precedenti: x n = f (x n 1, x n 2,...) Esempio x n = 5x n 1 + 1 mod 16 (1) In questo caso x i {0, 1,... 15}, da cui x i /15 [0, 1]. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 32 / 73

Esempio Generatori Pseudocasuali Primi 48 numeri della sequenza, partendo da x 0 = 5 esempio_rng.m function x_n = esempio_rng( x_nm1 ) x_n = mod(5 * x_nm1 + 1, 16); endfunction x_nm1 = 5; for i=1:48 x_n = esempio_rng( x_nm1 ); printf("%d ",x_n); x_nm1 = x_n; endfor printf("\n"); Output 10 3 0 1 6 15 12 13 2 11 8 9 14 7 4 5 10 3 0 1 6 15 12 13 2 11 8 9 14 7 4 5 10 3 0 1 6 15 12 13 2 11 8 9 14 7 4 5 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 33 / 73 Definizioni Generatori Pseudocasuali Il valore iniziale x 0 da cui partire con la sequenza si chiama seme (seed) Dato il seme, il comportamento del generatore è totalmente deterministico. Si parla quindi di generatori pseudo-casuali. Il periodo un un RNG si compone di una parte iniziale detta coda seguita da un ciclo che si ripete.!" $#&% Nell esempio precedente la coda ha lunghezza 0, e il ciclo è lungo 16 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 34 / 73

Generatori Pseudocasuali Caratteristiche di un buon RNG 1. Deve essere facile da valutare. La funzione f () di cui sopra deve essere efficientemente calcolabile, visto che in genere in una simulazione possono essere richiesti molti numeri pseudocasuali. 2. Il periodo deve essere lungo. Un periodo breve fa sì che la sequenza si ripeta spesso, generando correlazione tra gli eventi della simulazione e quindi riducendone la durata massima. 3. I valori della sequenza devono essere indipendenti e uniformemente distribuiti. La correlazione tra numeri successivi nella sequenza deve essere piccola. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 35 / 73 Test di indipendenza Test Spettrale Generatori Pseudocasuali Esistono numerosi test statistici per decidere se i valori di una sequenza sono indipendenti e uniformemente distribuiti. Uno di questi è il Test Spettrale: in dimensione k richiede di calcolare in che modo le k-tuple di valori successivi (x n, x n+1,... x n+k 1 ), n = 0, 1,... (overlapping tuples) si dispongono nello spazio euclideo a k dimensioni. Un buon generatore dovrebbe produrre punti disposti uniformemente nello spazio a k dimensioni. Esempio Nel caso k = 2 si tratta di verificare in che modo i punti di coordinate (x n, x n+1 ), n = 0, 1,... si dispongono sul piano. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 36 / 73

Test Spettrale Generatori Pseudocasuali Plottiamo i primi 32 valori della sequenza, k = 2 Octave rand() GNU C library rand() 1 1 30 x n = 3x n 1 mod 31 0.8 0.8 25 0.6 0.6 20 xn+1 0.4 xn+1 0.4 xn+1 15 10 0.2 0.2 5 0 0 0.2 0.4 0.6 0.8 1 0 0 0.2 0.4 0.6 0.8 1 0 0 5 10 15 20 25 30 x n L implementazione di GNU Octave usa un generatore con periodo 2 19937 1 [4]. L implementazione usata nella GNU C library fa parte della famiglia dei Linear Congruential Generators (LCG); si veda http://www.mscs.dal.ca/~selinger/random/ per una descrizione comprensibile x n x n Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 37 / 73 Errori da evitare Generatori Pseudocasuali Errore Usare il timestamp come seme del generatore pseudocasuale Usare il timestamp rende le simulazioni non riproducibili!! Occorre fare in modo che ogni volta che si esegue la simulazione (anche su piattaforme diverse) si ottengano esattamente le stesse sequenze di numeri pseudocasuali. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 38 / 73

Errori da evitare Errore Generatori Pseudocasuali Usare l ultimo seme di un run come inizializzazione del run successivo in run che dovrebbero essere indipendenti Mai fare questo: Occorre preallocare sequenze di lunghezza uguale, e sufficiente ad includere la sequenza pi lunga richiesta da tutti i run: Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 39 / 73 Generatori Pseudocasuali Random Variate Generators Fin qui abbiamo visto come generare valori uniformemente distribuiti nell intervallo [0, 1]. Come generare valori distribuiti in altro modo? Definizione Una V.A. X ha una distribuzione F X se F X (x) = Pr(X x) per ogni x R Teorema Sia X una V.A. con distribuzione continua monotona crescente F X. Consideriamo la V.A. U = F X (X) avente distribuzione F U : allora U è uniformemente distribuita in [0, 1] Infatti si ha: F U (u) = Pr (U u) = Pr (F X (X) u) ( ) ( ) = Pr X F 1 X (u) = F X F 1 X (u) = u Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 40 / 73

Generatori Pseudocasuali Random Variate Generators Data una V.A. U con distribuzione uniforme in [0, 1], la V.A. X = F 1 X (U) ha distribuzione F X. Esempio: Una V.A. X è esponenzialmente distribuita con parametro λ se la sua distribuzione F X è { 1 e λx se x 0 F X (x) = 0 se x < 0 Posto 1 e λx = u si ha x = 1 λ ln(1 u). Quindi una sequenza di valori esponenzialmente distribuiti x 1, x 2,... può essere generata a partire da una sequenza di valori uniformemente distribuiti u 1, u 2,... applicando a ciascun u i la trasformazione x i = 1 λ ln(1 u i). Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 41 / 73 Coda M/M/1 Analisi dell Output Supponiamo di voler simulare questo sistema, con i parametri seguenti: Tasso di arrivo λ richieste/s Tasso di servizio µ richieste completate/s Tempo di interarrivo e tempo di servizio seguono una distribuzione esponenziale negativa di parametri λ e µ rispettivamente: { 1 e λx se x 0 F λ (x) = 0 se x < 0 (il valore medio è 1/λ). Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 44 / 73

Analisi dell Output Coda M/M/1 λ Response Time R µ In seguito, considereremo una coda M/M/1 con tasso di arrivo λ = 0.09 richieste/s e tasso di servizio µ = 0.1 richieste/s. Queueing Time Service Time 1/µ Obbiettivo: valutare tramite simulazione il tempo medio di risposta R Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 45 / 73 Analisi dell Output Intervallo di confidenza sulla media Vale solo per osservazioni non correlate Consideriamo n osservazioni non correlate X 1, X 2,... X n di una V.A. X. Posto: X = 1 n σ 2 (X) = n X i (2) i=1 1 n 1 n ( X X i ) 2 (3) Si ha che un intervallo di confidenza a livello 100(1 α)% per la media E[X] è: [ ] σ2 (X) X z 1 α/2 (4) n dove z 1 α/2 è il (1 α/2)-quantile della distribuzione normale standard. i=1 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 46 / 73

Analisi dell Output Intervallo di confidenza sulla media Definizione Dire che I = [a, b] è un intervallo di confidenza di livello 100(1 α)% per la media E[X] di una V.A. X, significa che Pr (a E[X] b) = 1 α Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 47 / 73 Analisi dell Output Output di una simulazione Idea: Generiamo n arrivi di job; Otteniamo quindi una sequenza di tempi di risposta X 1, X 2,... X n (osservazioni) Quindi: Tempo medio di Risposta 1 n n X i???? i=1 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 48 / 73

Dove sta il problema? Analisi dell Output Perché non si può semplicemente calcolare il valore medio come media delle osservazioni? 1. Le osservazioni X 1, X 2,..., X n sono in generale autocorrelate, e non indipendenti come sarebbe necessario per calcolare il valore medio come media aritmetica 2. Le osservazioni X 1, X 2,..., X n sono affette dal problema del transiente iniziale (initialization bias) Per queste due ragioni purtroppo risulta in generale che E[X] 1 n n i=1 X i Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 49 / 73 Transiente Analisi dell Output Normalmente le condizioni iniziali della simulazione non corrispondono con le condizioni del sistema a regime Es: all inizio della simulazione di una rete di code aperta tutti i centri di servizio sono vuoti. Questa condizione raramente si verifica a regime. I primi valori della sequenza di osservazioni X 1, X 2,... X n0 per un certo n 0 n vanno scartati: X 1,... X n0, X n0 +1,..., X n } {{ } Transiente Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 50 / 73

Analisi dell Output Transiente Esempio Tempo di risposta, media di m = 100 repliche indipendenti di n = 2000 osservazioni ciascuna. 140 120 Response time 100 80 60 40 20 0 0 1000 2000 3000 4000 5000 Observation No. MVA Avg. 100 replications Purtroppo non esiste una procedura universalmente valida per determinare la lunghezza n 0 del transiente [2, 1]. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 51 / 73 Analisi dell Output Come limitare l effetto del transiente? 1. Effettuare simulazioni molto lunghe L effetto del transiente diventa trascurabile al crescere della lunghezza complessiva del run di simulazione 2. Troncamento Rimuovere dalla sequenza di osservazioni la parte di transiente iniziale, e calcolare le misure di interesse su ciò che rimane 3. Inizializzazione appropriata Ad esempio, fare in modo che all avvio della simulazione ci sia già qualche utente in coda nel centro di servizio Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 52 / 73

Repliche Indipendenti Analisi dell Output Effettuiamo m run indipendenti di n osservazioni ciascuno. Cioè si ripete m volte la simulazione usando sequenze non sovrapposte di numeri casuali. Osservazioni Medie Run 1 X 11 X 12... X 1n X1, Run 2 X 21 X 22... X 2n X2,........ Run m X m1 X m2... X mn Xm, Medie X,1 X,2... X,n X i, = 1 n X ij i = 1, 2,..., m (5) n X,j = 1 m j=1 m X ij j = 1, 2,..., n (6) i=1 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 53 / 73 Analisi dell Output Repliche Indipendenti Tempo di risposta di un server M/M/1 con λ = 0.09 e µ = 0.1. Notare come all aumentare di m diminuisce la varianza della media delle osservazioni. 200 10 Replications 200 20 Replications Response time 150 100 50 Response time 150 100 50 MVA 0 0 1000 2000 3000 4000 5000 MVA 0 0 1000 2000 3000 4000 5000 200 50 Replications 200 100 Replications Response time 150 100 50 Response time 150 100 50 MVA 0 0 1000 2000 3000 4000 5000 MVA 0 0 1000 2000 3000 4000 5000 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 54 / 73

Analisi dell Output Stimare n 0 Marginal Confidence Rule [5, 6] La regola Marginal Confidence Rule (MCR) si basa sull idea che eliminando il transiente iniziale, la varianza della sequenza di osservazioni residue diminuisce (e quindi si restringe anche l intervallo di confidenza sulla media). Diversamente da [5, 6] noi applicheremo MCR sulla sequenza { X,1, X,2,..., X,n }, ossia sulle osservazioni mediate su m run indipendenti. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 55 / 73 Analisi dell Output Stimare n 0 Marginal Confidence Rule [5, 6] 1. Sia S i la sequenza { X,i, X,i+1,..., X,n }, i = 1, 2,... n 1 2. Sia σ 2 (S i ) la varianza della sequenza S i : σ 2 (S i ) = 1 n i n ( ) 2 X,i S i i = 1, 2,..., n 1 j=i X,k ove S i = 1 n n i+1 k=i 3. L intervallo di confidenza (4) per la media di S i è proporzionale a σ d i = 2 (S i ) (n i + 1) 4. Il valore di i che rende minimo d i darà la stima della lunghezza n 0 del transiente Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 56 / 73

Analisi dell Output Implementazione Octave di MCR MCR.m ## Detect the length of the transient period given observations d. d is ## a 1*n matrix of n observations. The length n_0 of the transient is ## returned as result function n0 = MCR( d ) n = size(d,2); v = zeros(1,n-1); for i=1:size(v,2) v(i) = sqrt( var( d(i:n) ) / (n-i+1) ); endfor [x,n0] = min( v ); endfunction Esempio di utilizzo # lambda=0.09, mu=0.1, n = 5000, m = 10 X = generate_response_time( 0.09, 0.1, 5000, 10 ); # Compute transient length on the averages tr = MCR( mean(x) ) ans = 378 Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 57 / 73 Analisi dell Output Esempio di applicazione di MCR Coda M/M/1, λ = 0.09, µ = 0.1, m = 100 repliche 120 100 80 Response time 60 40 End Transient 20 0 d i Avg. 100 replications MVA 0 500 1000 1500 2000 Moreno Marzolla (INFN Padova) Introduzione alla Observation SimulazioneNo. Discreta 25 giugno 2008 58 / 73

Calcolo della media Analisi dell Output m repliche indipendenti di n osservazioni ciascuna Date m sequenze di osservazioni indipendenti, possiamo considerare le medie X i, delle sequenze come se fossero indipendenti, anche se le osservazioni delle singole sequenze non lo sono. Si può quindi calcolare un intervallo di confidenza sulla media come segue: 1. Individuare n 0 usando l algoritmo appena visto 2. Definire Y j = 1 n n 0 n i=n 0 +1 X ij j = 1, 2,..., m 3. Calcolare la media e l intervallo di confidenza della sequenza Y 1, Y 2,..., Y m considerandole osservazioni indipendenti applicando (4) Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 59 / 73 Esempio Analisi dell Output Effetto del transiente sulla media Centro di servizio con λ = 0.09, µ = 0.1 m = 100 repliche di n = 2000 osservazioni ciascuna Calcoliamo l intervallo di confidenza sulle medie delle repliche usando l algoritmo di pag. 55 al variare del numero n 0 di osservazioni iniziali scartate. 120 100 Response time 80 60 40 End Transient 20 Avg. 100 replications MVA 90% conf. int 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Observation No. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 60 / 73

Esempio Analisi dell Output Effetto del numero m di repliche sulla media Centro di servizio con λ = 0.09, µ = 0.1 m repliche con n = 5000 osservazioni ciascuna Calcoliamo l intervallo di confidenza sulla media usando l algoritmo di pag. 55 al variare del numero di repliche m. 200 180 160 Response Time (Y j ) 140 120 100 80 60 40 Replication j Average 20 90% Conf. Interval MVA 0 0 20 40 60 80 100 Replication Number (j) Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 61 / 73 Conclusioni Conclusioni La simulazione discreta è un settore molto interessante sotto diversi punti di vista (programmazione, algoritmi, analisi numerica,...) Effettuare simulazioni ben fatte richiede molta attenzione a tanti piccoli dettagli È un settore ancora in evoluzione Parallel and Distributed Simulation Real-Time Simulation Massive Online Gaming Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 63 / 73

Bibliografia Riferimenti [1] Christos Alexopoulas and Andrew F. Seila. Advanced methods for simulation output analysis. In Proceedings of the 30th conference on Winter simulation, pages 113 120. IEEE Computer Society Press, 1998. [2] Jerry Banks, editor. Handbook of Simulation. Wiley Interscience, 1998. [3] Raj Jain. The Art of Computer Systems Performance Analysis Techniques for Experimental Design, Measurement, Simulation, and Modeling. Wiley-Interscience, 1991. [4] M. Matsumoto and T. Nishimura. Mersenne twister: A 623-dimensionally equidistributed uniform pseudorandom number generator. ACM Trans. on Modeling and Computer Simulation, 8(1):3 30, February 2008. [5] Jr. White, K.P. A simple rule for mitigating initialization bias in simulation output: comparative results. Systems, Man and Cybernetics, 1995. Intelligent Systems for the 21st Century., IEEE International Conference on, 1:206 211 vol.1, Oct 1995. [6] Jr. White, K.P. and M.A. Minnox. Minimizing initialization bias in simulation output using a simple heuristic. Systems, Man, and Cybernetics, 1994. Humans, Information and Technology., 1994 IEEE International Conference on, 1:215 220 vol.1, Oct 1994. Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 67 / 73 Appendice make_data.m ## This script produces the mm1_response_times.bin data file, which will ## be used by other scripts. This file contains a (m * n) matrix of n ## observations by m replications. element (i,j) is the j-th value from ## the i-th replication. rande( "state", [1:625] ); # init rng arrival_rate = 0.09; service_rate = 0.1; n = 5000; # Number of samples m = 100; # Number of replications d = generate_response_times(arrival_rate,service_rate,n,m); save("-binary", "mm1_response_times.bin", "d"); Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 69 / 73

Appendice generate_response_times.m ## Generates r sequences of n response times for a M/M/1 queue. Arrival ## rate and service rate are given as parameters. The result is a (r * ## n) matrix function result = generate_response_times( arrival_rate, service_rate, n, r ) result = zeros(r,n); for rep=1:r ## Generate interarrival times a = cumsum(exprnd( 1.0/arrival_rate, 1, n )); ## Generate service times s = exprnd( 1.0/service_rate, 1, n); t = 0; # Time the previous customer finished service for i=1:n t = max([t a(i)])+s(i); result(rep,i) = t - a(i); endfor endfor endfunction Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 70 / 73 Appendice conf_int.m ## Compute the 100(1-alpha)% confidence interval for the mean. d is a (m ## * n) matrix of n observation for m replications. The transient must ## already have been removed from d function [lower, upper] = conf_int( d, alpha ) [m,n] = size(d); X_bar = mean( d, 2 ); # X_bar(i) = mean( d(i,:) ); X_bar_bar = mean( X_bar ); var_x = var( X_bar ); lower = X_bar_bar - norminv( 1-alpha/2.0 )*sqrt( var_x/m ); upper = X_bar_bar + norminv( 1-alpha/2.0 )*sqrt( var_x/m ); endfunction Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 71 / 73

Appendice confidence_intervals.m function dump_conf_interval( f, t, d ) [m,n] = size(d); [l,u] = conf_int(d(:,t:n), 0.1); fprintf(f, "%d %f %f\n", t, l, u ); endfunction n = 2000; # Number of samples m = 100; load( "-binary", "mm1_response_times.bin", "d" ); ## resize d d = resize(d, [m,n]); tr = MCR( mean(d) ); f = fopen( "conf_interval_transient.gp", "w" ); fprintf(f, "tr = %d\n", tr ); fclose(f); f = fopen( "conf_interval_resp_times.dat", "w" ); fprintf(f, "%f\n", mean(d) ); fclose(f); f = fopen( "conf_intervals.dat", "w"); dump_conf_interval( f, 50, d ); dump_conf_interval( f, 100, d ); dump_conf_interval( f, 200, d ); dump_conf_interval( f, tr, d ); fclose(f); Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 72 / 73 Appendice independent_replications.m arrival_rate = 0.09; service_rate = 0.1; load( "-binary", "mm1_response_times.bin", "d" ); f = fopen( "mm1_rep10.dat", "w" ); fprintf(f, "%f\n", mean(d(1:10,:)) ); fclose(f); f = fopen( "mm1_rep20.dat", "w" ); fprintf(f, "%f\n", mean(d(1:20,:)) ); fclose(f); f = fopen( "mm1_rep50.dat", "w" ); fprintf(f, "%f\n", mean(d(1:50,:)) ); fclose(f); f = fopen( "mm1_rep100.dat", "w" ); fprintf(f, "%f\n", mean(d) ); fclose(f); ## Compute the "exact" response time using MVA lambda = arrival_rate; S = 1.0/service_rate; U = lambda*s; R = S/(1-U) Moreno Marzolla (INFN Padova) Introduzione alla Simulazione Discreta 25 giugno 2008 73 / 73