Metodi di Monte Carlo a cura di Michele Miccio rev. 2.1 del 13 giugno 2008 Introduzione Fu Enrico Fermi, a detta di Emilio Segré, ad inventare il metodo Monte Carlo (senza usare questo nome), quando studiava a Roma il moto dei neutroni all'inizio degli anni 30. Stanislaw Ulam usò il metodo Monte Carlo nel '46. Un modello di simulazione Monte Carlo può essere visto come un apparato sperimentale: • una singola simulazione con il metodo Monte Carlo corrisponde ad un esperimento • l’output della simulazione corrisponde ad una singola osservazione sperimentale Un problema deterministico può essere risolto con un metodo Monte Carlo se il problema formalmente può essere espresso come un problema stocastico. Introduzione ./. “Sono tanti ormai i campi in cui si utilizzano metodi statistici per ottenere informazioni e stime su fenomeni legati al caso. Non occorre che i dati siano raccolti durante un esperimento reale in cui tali fenomeni avvengono. Ciò potrebbe richiedere troppo tempo e, in ogni caso, non sempre la natura è disposta a fornirci situazioni aleatorie ... a comando. I dati possono allora provenire da simulazioni fatte per mezzo di un computer, in grado di generare sequenze di numeri casuali. Esse sono quindi utilizzate per simulare per migliaia di volte il fenomeno aleatorio, raccogliendo così rapidamente una serie di dati che, trattati con metodi statistici, forniscono stime che diventano tanto più attendibili quanto più è grande il numero delle prove fatte.” … da Cerasoli e De Petris (1994) Introduzione ./. FIELDS OF APPLICATION • Telecommunications networks • Financial markets • Revenue Management • Insurance • Weather forecasting • Engineering • Statistics … from “Monte Carlo Simulation” IEOR E4703 Fall, by Martin Haugh (2004) Monte Carlo Simulation Basics http://www.vertex42.com/ExcelArticles/ mc/MonteCarloSimulation.html Glossario Random number (numero casuale): A mathematically selected value which is generated by a formula or selected from a table to conform to a probability distribution. Generatore di numeri casuali (random number generator): Un metodo implementato in un programma su computer che è capace di generare una successione di numeri casuali, indipendenti tra di loro Seme (Seed Number): Il primo numero in una sequenza di numeri casuali. Uno stesso seme produce sempre la stessa sequenza di numeri casuali Simulatore Monte Carlo: Un sistema che utilizza opportunamente numeri casuali per misurare gli effetti dell’incertezza su un modello matematico deterministico Monte Carlo methods: They are a widely used class of computational algorithms for simulating the behavior of various physical and mathematical systems, and for other computations. They are distinguished from other simulation methods by being stochastic, that is nondeterministic in some manner – usually by using random numbers – as opposed to deterministic algorithms. Forecast retrieved from Wikipedia, the free encyclopedia A statistical summary of the mathematical combination of the assumptions in a model, output graphically or numerically. Forecasts are frequency distributions of possible results for the model. ELEMENTI ESSENZIALI per lo SVILUPPO di un METODO di MONTECARLO 1. DATI STATISTICI PREGRESSI O CONOSCENZE STATISTICHE SUGLI ASPETTI AFFETTI DA INCERTEZZA DEL PROCESSO /CASO/ FENOMENO OGGETTO DI SIMULAZIONE 2. GENERATORE DI N. CASUALI 3. MODELLO MAT. DEL PROCESSO /CASO/ FENOMENO OGGETTO DI SIMULAZIONE 4. PREDIZIONE ATTRAVERSO IL MODELLO MATEMATICO DEL RISULTATO DELLA SIMULAZIONE almeno 1 variabile aleatoria “di uscita” 5. TECNICHE E STRUMENTI PER LA RAPPRESENTAZIONE (TABELLARE, TESTUALE, GRAFICA) E LA VALUTAZIONE STATISTICA DEL RISULTATO 6. TECNICHE E STRUMENTI PER LA RIDUZIONE DELLA VARIANZA DEL RISULTATO Metodi di Monte Carlo ESEMPIO 1 (Haugh, 2004) Il magazzino di uno stabilimento petrolchimico mantiene, per le necessità dei vari impianti di processo delle acque, uno stoccaggio di fusti di additivo antischiuma deperibile. Il magazziniere emette un ordine per N nuovi fusti all’inizio di ogni nuova settimana. Ogni fusto utilizzato per il trattamento delle acque nella settimana consente un risparmio di gestione di 60 €. Ogni fusto non utilizzato comporta un costo di smaltimento a fine settimana di 40 €. La domanda settimanale, D, di fusti di additivo dagli impianti è uniformemente distribuita nell’intervallo [80, 140]. Quanti nuovi fusti per settimana dovrebbe il magazziniere ordinare per massimizzare il risparmio ? … adapted from “Monte Carlo Simulation”, IEOR E4703 Fall by Martin Haugh (2004) Metodi di Monte Carlo ESEMPIO 1 PROCEDURE (…from “VERTEX 42”) Step 1: Create a parametric model, y = f(x1, x2, ..., xq). (Haugh, 2004) I. Usa un modello o sviluppa un nuovo modello per il risparmio P II. Fissa un valore per N (ordine nuovi fusti all’inizio di settimana) Step 2: Generate a set of random inputs, xi1,..., xiq. Step 3: Evaluate the model and store the results as yi. Step 4: Repeat steps 2 and 3 for i = 1 to n. Step 5: Analyze the results using histograms, summary statistics, confidence intervals, etc. • Estrai n numeri per D (domanda settimanale, D, di fusti di additivo dagli impianti) • Calcola il risparmio P III. Calcola la media <P> del risparmio su n estrazioni IV. Determina un nuovo valore per N • Ripeti la sequenza … V. Scegli il valore di N la cui simulazione MonteCarlo ha fornito il risparmio medio <P> più alto Cristal Ball® software http://www.gmsl.it/prodotto.asp?id=9&pg=3 Cristal Ball® software http://www.gmsl.it/prodotto.asp?id=9&pg=3 Cosa si intende per "Simulazione?" Quando usiamo la parola simulazione, intendiamo a qualsiasi metodo analitico in grado di imitare un sistema reale, specialmente quando altre analisi sono troppo matematicamente complesse o difficili da riprodurre. Senza l'aiuto di una simulazione un modello spreadsheet potrà rivelare solamente un risultato singolo, tipicamente il valore medio dello scenario. Un tipo di simulazione spreadsheet è la Monte Carlo simulation, che genera valori casuali per le variabili incerte in un modello. Cosa fare delle variabili incerte in uno spreadsheet? e . Per ogni variabile incerta (che può assumere diversi intervalli di valori possibili), si definiscono i possibili valori con una distribuzione probability distribution. Il tipo di distribuzione selezionata è basata sulle condizioni note per la variabile. I tipi di distribuzione includono: Cosa succede durante una simulazione? Una simulazione calcola uno scenario multiplo di un modello ripetendo in modo ciclico il calcolo con nuovi valori di campionamento ricavati dalla curva di distribuzione. Durante un ciclo singolo, Crystal Ball seleziona in modo casuale un valore dalle possibilità definite (l'intervallo e la forma della distribuzione) per ogni variabile incerta e quindi ricalcola l'intero foglio dati (spreadsheet). Monte Carlo Simulation in Matlab® MATLAB Function Reference rand Description The rand function generates scalar or arrays of random numbers whose elements are uniformly distributed in the interval (0,1). rand Generates a random scalar number in the interval (0,1) from a (pseudo)-uniform distribution rand('state',0) Resets the generator to its initial state rand('state',s) Resets the state to its another specified state s