Mathematische Modelle dynamischer Systeme

Diskrete-Ereignis-Simulation mit Python

Diogo Costa (PhD, MSc)

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

Was ist ein mathematisches Modell?

Beschreibung eines natürlichen oder menschengemachten Systems mit mathematischen Konzepten und Sprache.

Modelle lassen sich einteilen in:

  • Dynamisch vs. nicht dynamisch
  • Diskret vs. kontinuierlich
  • Deterministisch vs. probabilistisch (stochastisch)
  • Linear vs. nichtlinear
  • Weitere

Mathematische Modelle können einfach oder komplex sein.

  • Digitale Annäherungen an die Realität
  • Unmöglich, alle Prozesse abzubilden

George Box: "Alle Modelle sind falsch, aber einige sind nützlich."

Foto eines Flusses, der durch felsiges Gelände fließt.

Diskrete-Ereignis-Simulation mit Python

Beispiel: Modell zur Vorhersage natürlicher Prozesse

Modell des Flussabflusses

Ein Diagramm mit beobachtetem und simuliertem Abfluss an der hydrologischen Station Goaya in China über die Zeit. Das Modell bildet die Beobachtungen gut ab. Der Abfluss variiert in beiden stark über die Zeit.

  • Dieses Modell sagt den Abfluss an der hydrologischen Station Goaya (China) voraus.

  • Die Vorhersage basiert auf Niederschlagsdaten als Modelleingabe.

Weitere Beispiele

  • Wettervorhersage
  • Vorhersage von Dünung
  • Wasserqualität in Seen
  • Städtische Überschwemmungen
  • und viele weitere Anwendungen
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
Diskrete-Ereignis-Simulation mit Python

Beispiel: Modell zur Vorhersage menschlicher Aktivitäten

Inflation vorhersagen

Ein Diagramm der britischen Inflationswerte (2002–2021) und der Prognose (2022) von BNP Paribas. Die Prognose zeigt 2022 eine Inflation von 7 %.

  • Inflationsprognosen sind zentral, um Wirtschaftskrisen zu vermeiden

Weitere Beispiele

  • Lieferkette
  • Fertigung
  • Logistik
  • Wirtschaftsprognosen
  • Verkehr
  • Weitere
1 https://www.ft.com/content/218d35ab-b044-467a-bb62-0d17547a4350
Diskrete-Ereignis-Simulation mit Python

Allgemeine Codebausteine und -struktur

  • 3 Hauptkomponenten
  • Eingabedaten und Modellparameter
# Define model parameters
processes = {"process_1": 5,
             "process_2": 2,
             "process_3": 3}
  • Laufkonfiguration
# Simulation period
simulation_time = 365

# Run model
discrete_model(processes, simulation_time)
  • Modell-Engine
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]
Diskrete-Ereignis-Simulation mit Python

Modellausgaben

Beispielausgabe eines diskreten Ereignismodells für eine Fertigungsaktivität

=> 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
Diskrete-Ereignis-Simulation mit Python

Visualisierung von Modellergebnissen

  • Grafische Darstellung der Modellergebnisse: hilft, Muster und Kipppunkte zu erkennen.

  • Visualisierung auf Simulationsziele zuschneiden.

  • Nützliche Pakete: matplotlib, seaborn, plotly.

Matplotlib-Bibliothekslogo. Seaborn-Bibliothekslogo. Plotly-Bibliothekslogo.

Beispiele

  • 2D-Linien- oder Streudiagramme der Modellwerte (y) gegen die Zeit (x)
plt.plot(x, y, color='green', marker='o', 
         markersize=12, linestyle='dashed', 
         linewidth=2)
  • Histogramm: Daten in x bündeln und Werte pro Bin zählen
plt.hist(x, 50, density=True, 
         facecolor='g', alpha=0.75)
Diskrete-Ereignis-Simulation mit Python

Lass uns üben!

Diskrete-Ereignis-Simulation mit Python

Preparing Video For Download...