Étude du besoin
Les entreprises de transport doivent affecter des véhicules à des services (heure de début, une heure de fin, une ligne, un dépôt et un type de véhicule). Par exemple, un service représente le fait que sur une Ligne 1 un bus de type standard doit être affecté depuis le dépôt A à partir de 7h00 et que ce véhicule rentrera à 17h00.
Ces affectations doivent prendre en compte de multiples contraintes :
- Faire rouler ou interdire certains véhicules sur certains parcours
- Affecter les véhicules avec flocages marketing en priorité
- Positionner les véhicules qui rentrent à une heure précise pour le nettoyage
- Prendre en compte les véhicules en maintenance
- ...
Le logiciel devait donc être en mesure de :
- Réaliser une affectation rapidement
- Prendre en compte toutes les contraintes avant affectation
- Permettre de toujours avoir la main par une modification manuelle simple
- Gérer les indisponibilités et le nettoyage
La conception
J’ai commencé ma phase de conception par interroger les différents acteurs qui allait interagir avec G.A.R.I. pour identifier les besoins et les problèmes qu’ils rencontraient et comment trouver la bonne solution.
Par exemple :
Quels sont les points d’entrées des données (services) ?
Quels sont les problèmes avec le système actuel ?
Est-ce que certaines contraintes sont plus importantes que d’autres ? Certaines contraintes peuvent-elles être enfreintes ?
Quelques diagrammes
Après cette phrase d’audit, j’ai pu commencer la conception avec des diagrammes de cas d’utilisation, des modélisations MCD et diagrammes de classe UML.
MCD des services et des liens avec les autres tables
MCD ligne et groupe de ligne
Maquette de l'interface
J’ai aussi dessiné des maquettes de l’interface sur papier.
Les choix techniques
J’ai choisi de réaliser une web-app, accessible sur le réseau de l’entreprise. L’avantage par rapport à une application de bureau, en Java par exemple, est que le logiciel n’a pas besoin d’être installé poste par poste par le service informatique. Toute personne connectée au réseau interne peut accéder via une adresse à entrer dans le navigateur à l’application.
Côté client, on retrouve les technologies classiques du web HTML5, CSS3 et le framework réactif Vue.js que j’ai commencé à utiliser progressivement (sans tout réécrire) à partir de la v1.5.
Côté serveur, j’ai opté pour un développement en Python 3, que ce soit pour la logique serveur ou pour les algorithmes d’affectations.
Python est un langage que j’apprécie beaucoup et que je trouve élégant . J’ai développé sous un environnement virtuel python sur lequel j’ai utilisé le framework Flask avec l’ORM SQLAlchemy et MySQL, le tout sur un serveur Linux, Ubuntu 16.06.
La version 1.0
C’est la première version qui a été utilisée en production pendant un peu moins d’un an. Elle a différents modules de gestion :
- Véhicules
- Coupures
- Indisponibilité
- Affectation
- Lignes
- Nettoyage
- Contraintes
- Équipements
- Dépôts
L’affectation est réalisée en environ une seconde pour 200 véhicules et environ 150 services.
Les évolutions, v1.5
La v1.0 a été développée en été 2016 et j’ai au début d’été 2017 développé une mise à jour v1.5 pour intégrer des améliorations de l’expérience utilisateur ainsi que de nouvelles fonctionnalités.
Parmi les nouveautés :
- Module feuille de travail pour éviter la double saisie d’informations avec d’autres applications/feuilles Excel
- Module d’insertion de services dans la base de données
- Résolutions des bugs
- Nouvelles options dans le nettoyage
- Gestion des bus affrétés à d’autres entreprises
- Multiples améliorations de l’interface
Interface de gestion des véhicules avec des onglets et un code couleur
Écran des coupures
Écran principal, l'affectation. Les dépôts peuvent être différenciés avec les couleurs différentes des lignes, les types de véhicules ont tous un code couleur
Quelques détails
Depuis la v1.5, les choix proposés dans les modals sont plus clairs pour que l'utilisateur ait une idée précise de l'action qu'il va effectuer, plus de "Ok" et "annuler" sans contexte.
Oui, supprimer ou Non, garder cette indisponibilité = un choix clair
Gestion des tramways, v2.0
La mise à jour en version 2.0 a apporté son lot de nouveautés et surtout la gestion des tramways. Les trams ont de nombreuses spécificités qui rendent leur affectation très différente des autres véhicules :
- Un remisage sur lequel ils sont placés les uns derrière les autres, on ne peut pas sortir n'importe quel véhicule pour l'affecter
- Des maintenances kilométriques obligatoires qui ne doivent pas tomber en même temps
- Des contraintes de nettoyages, équipements par périodes, voies spécifiques pour maintenance, etc.
Selection des dates de maintenance souhaitées
Les trams sur le remisage, avec des codes couleurs pour les réserves, indisponibles, etc
La problématique des trams est donc d'optimiser les affectations (sur des services plus long ou plus court) pour que les maintenances tombent au moment souhaité, tout en remisant bien les véhicules quand ils rentrent sur le dépôt le soir.
J'ai écrit les algorithmes d’affectation et de remisage des véhicules en me reposant sur des thèses mathématiques de chercheurs qui existaient pour les trains que j’ai transposés et appliqués au domaine des trams et des bus.
Des adaptations, v3.0
J'ai réalisé fin 2019 une mise à jour v3.0. Elle avait pour but d'ajouter une affectation kilométrique aux véhicules, de continuer à améliorer l'expérience utilisateur et d'ajouter une interface avec d'autres logiciels faisant partie du SI typique d'un réseau de transport (le SAEIV).
Introduction avec les informations essentielles
Détail par type de véhicule
Elle a aussi amélioré différents aspects :
- Gestion des véhicules de relèves et "autres véhicules"
- Date commune à toute l'application
- Nouveaux paramétrages administrateur : éditions des services, menus visibles, etc.
- Ajout et amélioration de différents exports Excel
- Services obligatoires/facultatifs
- Nombreuses petites améliorations (introduction à l'affectation, détail des indisponibilités, nombre total de véhicules, etc.)
Modification des services
Menu personalisable
Retours utilisateur
Les retours utilisateurs ont jusque là été très positifs. L’outil est agréable à utiliser, pratique et leur permet de gagner du temps.
Les améliorations sont bien accueillies au fil des ans et d’autres modifications sont déjà en train d’être étudiées pour une prochaine version.
N'hésitez pas à tester la démo sur le site de G.A.R.I.