Ensemble di simulazioni: campionamento Monte Carlo

Simulazione a eventi discreti in Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Risposta del sistema a scenari diversi

  • Processi non deterministici causano variazioni nella risposta del sistema
  • Nel video precedente: come modellare processi non deterministici
  • Caratterizza la propagazione dell'incertezza nel modello
  • Studia la risposta del sistema a scenari diversi

Questo aiuta a

  • Pianificare espansioni aziendali
  • Eseguire stress test
  • Prepararsi a situazioni estreme
Simulazione a eventi discreti in Python

Campionamento Monte Carlo

  • Campionamento casuale ripetuto
  • Modella il sistema con piccole variazioni
  • Esamina la risposta del sistema al cambiamento

Spazio dei parametri con l’aumento dei campioni

Grafico con i risultati di 100 campioni Monte Carlo. I pattern dei risultati del modello non sono visibili.

Grafico con i risultati di 1500 campioni Monte Carlo. Alcuni pattern dei risultati del modello sono visibili ma ancora limitati.

Grafico con i risultati di 5000 campioni Monte Carlo. I risultati del modello mostrano pattern chiari, con una struttura a griglia.

Simulazione a eventi discreti in Python

Campionamento Monte Carlo: analisi dei processi

Esempio: esecuzione Monte Carlo per capire l’intervallo di output di un generatore di eventi basato su distribuzione normale (gaussiana)

import random as rd
import matplotlib.pyplot as plt

# Generating samples: Gaussian distribution
duration_sample = [rd.gauss(25, 5) 
for i in range(5000)]

# Plotting
plt.scatter(duration_sample, np.r_[0:5000], 
marker='.', c=duration_sample, cmap='CMRmap')
plt.xlabel("Duration [min]")
plt.ylabel("Monte Carlo Runs")

Visualizzazione dei risultati Grafico che mostra il campionamento Monte Carlo per durate generate con la Distribuzione Gaussiana.

Simulazione a eventi discreti in Python

Campionamento Monte Carlo: modelli a eventi discreti

Obiettivo principale

  • Esplorare l’incertezza del modello
  • Dovuta a processi non deterministici
  • Caratterizzare l’incertezza
  • Supportare le decisioni

Diagramma che mostra un sistema con quattro stati, dove i processi cambiano gli stati. Poiché la durata di ogni processo varia a ogni ripetizione, il numero di possibili stati del sistema aumenta nella sequenza di processi.

Simulazione a eventi discreti in Python

Campionamento Monte Carlo: modelli a eventi discreti

  • L'incertezza nella durata di ogni processo si propaga nel sistema

  • Produce traiettorie di modello diverse

  • Chiamata “Response Envelope”

Esempio:

n_trajectories = 50

process_1 = {"Name": "Raw_material", 
             "OperationTime": 20, 
             "MaxDelayTimePercent": 10}
process_2 = {"Name": "Unloading", 
            "OperationTime": 15, 
            "MaxDelayTimePercent": 5}

Grafico che mostra il “response envelope” di un’attività manifatturiera con una serie di processi sequenziali.

Simulazione a eventi discreti in Python

Passiamo alla pratica!

Simulazione a eventi discreti in Python

Preparing Video For Download...