Créer un modèle à évènements discrets avec SimPy

Simulation d’événements discrets en Python

Dr Diogo Costa

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

Avant de construire le modèle

  • Comprendre le système dynamique

  • Définir l’objectif/les objectifs du modèle à évènements discrets

  • Identifier les processus :

    • en parallèle
    • en séquence
  • Identifier les ressources SimPy adaptées (resource, container, store)

  • Définir l’architecture du modèle :

    • Identifier les variables d’état
    • Flux de travail du modèle
    • Générateurs
Simulation d’événements discrets en Python

Le système dynamique et les objectifs du modèle

Comprendre le système dynamique

  • Quels éléments modulent son comportement ?
  • Quels processus/évènements inclure ?

Objectifs du modèle

  • Souvent utilisé pour optimiser des systèmes
  • Quels aspects souhaitez-vous optimiser ?

    • Plus de clients
    • Temps de traitement plus courts
    • Optimiser l’allocation des ressources
  • Variables d’état pour suivre ces objectifs

Simulation d’événements discrets en Python

Identifier les ressources SimPy appropriées

Ressources partagées

simpy.Resource(env, capacity=4)
  • Ressources partagées entre processus

Exemples

  • Tables dans un restaurant
  • Machines dans une usine
  • Sièges dans un théâtre
  • Caissiers dans un magasin

Conteneurs

simpy.Container(env, capacity, 
init=initial_capacity)
  • Ressource se comportant comme un réservoir ou un panier

  • Ajouter/retirer une quantité :

.put() et .get()

Exemples

  • Réserves de carburant d’une station-service
  • Charbon dans une centrale au charbon
Simulation d’événements discrets en Python

Identifier les ressources SimPy appropriées

Store

simpy.Store(env, capacity=4)
  • Ressource type magasin avec plusieurs articles

  • Capacité illimitée (par défaut)

  • Emplacements pour stocker des objets arbitraires

  • Ajouter/retirer des articles :

.put() et .get()

Exemples

  • Magasins vendant plusieurs articles
  • Réserve/stockage
  • Atelier
  • Foyer
Simulation d’événements discrets en Python

Concaténer des évènements avec des opérateurs bit à bit

SimPy utilise des opérateurs bit à bit pour concaténer deux évènements

Types d’opérateurs en Python

  • Opérateurs arithmétiques, logiques et de comparaison

Opérateurs bit à bit

  • Calculs bit à bit sur des entiers
  • Attendent deux opérandes
    • Exemple : a & b, a >> b, a ^ b

Dans SimPy

  • Les opérateurs bit à bit génèrent un évènement conditionnel
  • Attendre les deux ou l’un des deux évènements/processus

Opérateurs bit à bit utiles pour SimPy

  • Attend les deux processus : __and__() ou &
  • Attend l’un des processus : __or__() ou |
Simulation d’événements discrets en Python

Passons à la pratique !

Simulation d’événements discrets en Python

Preparing Video For Download...