Ce projet est lié au PyProject n°1 Mesurer l'impact des retards sur les connexions multimodales
👉 Vous regardez actuellement le projet au stade de l'article du 23 juillet 2026.
Le but du projet est de mesurer l’impact que peut avoir les retards des trains sur l’occupation des bus desservant une certaine gare. En particulier, on cherchera à représenter graphiquement l’évolution des passagers de lignes de bus en fonction des retards dans une interface graphique détaillée.
À quoi le projet peut-il servir ?
- À comprendre la succession d’évènements qui pousse une ligne stable à saturation,
- À développer des moyens pouvant permettre la prise de mesures pour limiter la propagation des perturbations sur d’autres lignes
| Fichier | Contenu |
|---|---|
project.py |
contient toutes les fonctions modélisant un évènement en particulier dans notre simulation |
tkinterface.py |
contient toutes les fonctions permettant de construire l'interface graphique tkinter |
LICENSE |
la licence de ce projet : MIT |
README.md |
ce que vous êtes en train de lire :) |
.gitignore |
(les dev connaissent) |
Le fichier project.py contient
| Fonction | Ce qu'elle fait |
|---|---|
train_arrival() |
Renvoie le nombre de passagers descendant d'un train à quai |
goto_bus(pax) |
Renvoie le nombre de passagers descendus souhaitant prendre le bus. pax est le résultat de train_arrival() |
arrive_at_bus_stop(buspax,train_arrival_time,t0) |
Simule l'arrivée progressive des passagers à un arrêt de bus. Elle renvoie le nombre de personnes issues du train arrivé à train_arrival_time et venant d'arriver à l'arrêt à t0. |
allocate(buspax,nb_arrets) |
Renvoie la répartition des voyageurs sur les différents arrêts |
bus_departure(buspax,seats,stand_capacity) |
Renvoie
buspax correspond au nombre de passagers en attente à l'arrêt. |
lcg(seed,prc=0.5) |
Renvoie un nombre aléatoire compris entre 0 et 1 et qui va déterminer si le train arrivé à seed minutes sera en retard ou non. prc n'est pas utilisé dans cette version. |
add_late(train_arrival_time,late_rate=0.5) |
Renvoie un temps supplémentaire au train censé arrivé à train_arrival_time. late_rate n'est pas utilisé dans cette version. |
Le fichier tkinterface.py contient
| Fonction | Ce qu'elle fait |
|---|---|
| lignes 9 à 40 | des variables globales permettant de stocker l'interface graphique entière ou une partie, ainsi que les variables de la simulation (tps, trains,...) |
clock(values) |
Actualise le graphique sur l'interface graphique tkinter et arrête la simulation au bout de period secondes. freq_trains et freq_bus sont les intervalles constants séparant deux arrivées successives de trains/de bus. Prend en compte les retards. Cette partie est gérée par la sous-fonction step(). Tous les paramètres sont contenus dans le dictionnaire values. |
reset() |
réinitialise les paramètres afin de reprendre la simulation de zéro |
launch() |
lance la simulation à partir des données fournies par l'utilisateur |
initialisation() |
construit l'interface graphique |
Le projet fonctionne tout seul (ou presque, il faut quand même le lancer avec python via le terminal ou un IDE).
Une fois le projet lancé, l'interface graphique s'affichera avec des champs à compléter et un bouton pour lancer la simulation.
ATTENTION ! Les variables nb_trains, freq_trains et nb_lines doivent être modifiées à la main.
Accéder aux articles du PyProject : PyProject #1 (lien vers le blog)
Accéder aux versions précédentes :
- version du 10 juillet 2026
- version du 1er février 2026
- version du 15 janvier 2026
- version du 15 novembre 2025 (corrigée)
- version du 15 décembre 2025
Télécharger le dossier code source (y compris anciennes versions): Releases (GitHub)