Simulation d'événements discrets en Python
Dr Diogo Costa
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Cadre de simulation à événements discrets basé sur le Python standard
Utilise des fonctions génératrices pour définir processus et événements (vu dans le cours préalable Toolbox)
Évolutif :
Fonction normale
def mygenerator():
return 10
return renvoie une valeur et met fin à l'exécution de la fonctionExécution de la fonction :
10
Fonction génératrice
def mygenerator():
yield 20
yield 12
yield renvoie une valeur et met l'exécution en pause tout en conservant les états internes.Exécution du générateur :
20
12
1) Créer un environnement SimPy
env = simpy.Environment()
2) Ajouter une fonction génératrice à un environnement SimPy
env.process()
3) Exécuter le modèle
env.run()
4) Laisser le temps s'écouler dans une simulation
env.timeout()
5) Obtenir l'heure courante de simulation
env.now
1) Importer le progiciel SimPy
import simpy
2) Créer une fonction génératrice contenant des processus
def traffic_light(env, name, timestep):
while True:
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Red light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Yellow Light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Green Light!")
3) Créer un environnement de simulation SimPy
env = simpy.Environment()
4) Ajouter le générateur à l'environnement SimPy
env.process(traffic_light(env, "Leslie St.", 15))
env.process(traffic_light(env, "Arlington Av.", 30))
5) Exécuter le modèle
env.run(until=90)
Sortie console du modèle :
Time 15 sec | Traffic light at Leslie St. | Red light!
Time 30 sec | Traffic light at Arlington Av. | Red light!
Time 30 sec | Traffic light at Leslie St. | Yellow Light!
Time 45 sec | Traffic light at Leslie St. | Green Light!
Time 60 sec | Traffic light at Arlington Av. | Yellow Light!
Time 60 sec | Traffic light at Leslie St. | Red light!
Time 75 sec | Traffic light at Leslie St. | Yellow Light!
Simulation d'événements discrets en Python