Modèles mathématiques de systèmes dynamiques

Simulation d'événements discrets en Python

Diogo Costa (PhD, MSc)

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

Qu'est-ce qu'un modèle mathématique ?

Description d'un système naturel ou humain à l'aide de concepts et du langage mathématiques.

Les modèles se classent en :

  • Dynamiques vs non dynamiques
  • Discrets vs continus
  • Déterministes vs probabilistes (stochastiques)
  • Linéaires vs non linéaires
  • Autres

Les modèles mathématiques peuvent être simples ou complexes.

  • Approximation numérique de la réalité
  • Impossible de tout représenter

George Box : « All models are wrong, but some are useful. »

Photo d'une rivière qui traverse une zone rocheuse.

Simulation d'événements discrets en Python

Exemple : modèle pour prédire des processus naturels

Modèle d'écoulement d'une rivière

Un graphique du débit observé et simulé dans le temps à la station hydrologique Goaya, en Chine. Le modèle reproduit les observations. Le débit varie fortement dans le temps, tant dans le modèle que dans les observations.

  • Ce modèle prédit le débit à la station hydrologique de Goaya, en Chine.

  • La prédiction repose sur les précipitations utilisées comme intrants du modèle.

Autres exemples

  • Prévision météo
  • Prévision de la houle
  • Qualité de l'eau des lacs
  • Inondations urbaines
  • et bien d'autres applications
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
Simulation d'événements discrets en Python

Exemple : modèle pour prédire des activités humaines

Prédire l'inflation

Un graphique des données d'inflation du Royaume‑Uni (2002-2021) et d'une prévision (2022) par BNP Paribas. La prévision indique 7 % en 2022.

  • Prédire l'inflation est crucial pour éviter des crises économiques

Autres exemples

  • Chaîne d'approvisionnement
  • Fabrication
  • Logistique
  • Prévisions économiques
  • Transport
  • Autres
1 https://www.ft.com/content/218d35ab-b044-467a-bb62-0d17547a4350
Simulation d'événements discrets en Python

Composantes et structure générales du code

  • 3 composantes principales
  • Données d'entrée et paramètres du modèle
# Define model parameters
processes = {"process_1": 5,
             "process_2": 2,
             "process_3": 3}
  • Configuration d'exécution
# Simulation period
simulation_time = 365

# Run model
discrete_model(processes, simulation_time)
  • Moteur du modèle
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]
Simulation d'événements discrets en Python

Sorties du modèle

Exemple de sortie d'un modèle à événements discrets pour une activité manufacturière

=> 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
Simulation d'événements discrets en Python

Visualisation des résultats du modèle

  • Visualisation graphique des résultats : utile pour repérer des motifs et des seuils de basculement du système.

  • La visualisation doit être adaptée aux objectifs de simulation.

  • De nombreuses bibliothèques sont utiles : matplotlib, seaborn, plotly.

Logo de la bibliothèque Matplotlib. Logo de la bibliothèque Seaborn. Logo de la bibliothèque Plotly.

Exemples

  • Graphiques 2D en lignes ou en nuage de points des données modélisées (y) selon le temps correspondant (x)
plt.plot(x, y, color='green', marker='o', 
         markersize=12, linestyle='dashed', 
         linewidth=2)
  • Histogramme pour regrouper les données de x et compter le nombre de valeurs par classe
plt.hist(x, 50, density=True, 
         facecolor='g', alpha=0.75)
Simulation d'événements discrets en Python

Passons à la pratique !

Simulation d'événements discrets en Python

Preparing Video For Download...