Modele matematice ale sistemelor dinamice

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Ce este un model matematic?

Descrierea unui sistem natural sau uman cu ajutorul conceptelor și limbajului matematic.

Modelele pot fi clasificate ca:

  • Dinamice vs. non-dinamice
  • Discrete vs. continue
  • Deterministe vs. probabiliste (stocastice)
  • Liniare vs. neliniare
  • Altele

Modelele matematice pot fi simple sau complexe.

  • Aproximări digitale ale realității
  • Imposibil de inclus toate procesele

George Box: „Toate modelele sunt greșite, dar unele sunt utile."

Fotografie a unui râu care curge printr-o zonă stâncoasă.

Simulare de evenimente discrete în Python

Exemplu: model pentru predicția proceselor naturale

Model al debitului unui râu

Grafic al debitului observat și simulat în timp la stația hidrologică Goaya, China. Modelul surprinde înregistrările observate. Debitul variază semnificativ în timp, atât în model, cât și în observații.

  • Acest model prognozează debitul la stația hidrologică Goaya, China.

  • Prognoza se bazează pe date pluviometrice utilizate ca intrare în model.

Alte exemple

  • Prognoze meteorologice
  • Prognoze ale valurilor oceanice
  • Calitatea apei în lacuri
  • Inundații urbane
  • Și multe alte aplicații
1 Chen, C., He, W., Zhou, H. et al. A comparative study among machine learning and numerical models for simulating groundwater dynamics in the Heihe River Basin, northwestern China. Sci Rep 10, 3904 (2020). https://doi.org/10.1038/s41598-020-60698-9
Simulare de evenimente discrete în Python

Exemplu: model pentru predicția activităților umane

Prognozarea inflației

Grafic al înregistrărilor inflației din Marea Britanie (2002–2021) și prognoza pentru 2022 realizată de BNP Paribas. Prognoza indică o inflație de 7% în 2022.

  • Prognozarea inflației este esențială pentru prevenirea crizelor economice

Alte exemple

  • Lanțuri de aprovizionare
  • Producție
  • Logistică
  • Prognoze economice
  • Transport
  • Altele
1 https://www.ft.com/content/218d35ab-b044-467a-bb62-0d17547a4350
Simulare de evenimente discrete în Python

Componente și structura generală a codului

  • 3 componente principale
  • Date de intrare și parametrii modelului
# Define model parameters
processes = {"process_1": 5,
             "process_2": 2,
             "process_3": 3}
  • Configurația rulării
# Simulation period
simulation_time = 365

# Run model
discrete_model(processes, simulation_time)
  • Motorul modelului
def discrete_model(processes, simulation_time):

  # 1) Run end-condition
  while (time < simulation_time):
      process_names = list(processes.keys())

# 2) Loop over all processes for p in range(len(process_names)): process_name_p = process_names[p]
# 3) Account for effect of each process time += processes[process_name_p]
Simulare de evenimente discrete în Python

Rezultatele modelului

Exemplu de rezultat al unui model cu evenimente discrete pentru o activitate de producție

=> START OF SIMULATION  (Time = 0 days) 
Time =    6.00 days  |  Process Complete: Transport of raw material
Time =    9.00 days  |  Process Complete: Building components
Time =   11.00 days  |  Process Complete: Assembling parts
Time =   14.00 days  |  Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #1 | Time = 15.5 days
Time =   21.50 days  |  Process Complete: Transport raw material
Time =   24.50 days  | Process Complete: Building components
Time =   26.50 days  |  Process Complete: Assembling parts
Time =   29.50 days  |  Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #2 | Time = 31.0 days
Simulare de evenimente discrete în Python

Vizualizarea rezultatelor modelului

  • Vizualizarea grafică a rezultatelor: utilă pentru identificarea tiparelor și a punctelor critice.

  • Vizualizarea trebuie adaptată obiectivelor simulării.

  • Pachete utile disponibile: matplotlib, seaborn, plotly.

Logo biblioteca Matplotlib. Logo biblioteca Seaborn. Logo biblioteca Plotly.

Exemple

  • Grafice 2D linie sau dispersie: date modelate (y) față de valorile temporale (x)
plt.plot(x, y, color='green', marker='o', 
         markersize=12, linestyle='dashed', 
         linewidth=2)
  • Histogramă pentru gruparea datelor din x și numărarea valorilor din fiecare interval
plt.hist(x, 50, density=True, 
         facecolor='g', alpha=0.75)
Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...