À propos de la page des transports

À propos de la page des transports

Mise à jour du 8 juin 2023. Cette page a été initialement rédigée début mars 2023, à une époque où le calculateur officiel de la région était tombé dans un état de déshérence avancée.
Or, le 25 mai 2023, « la Région Occitanie et liO [se sont dotées] d’un nouveau calculateur d’itinéraires web et d’une application mobile plus performants afin de mieux répondre aux besoins exprimés par les usagers » (source).
J'ai pu effectivement constater que le nouveau calculateur était beaucoup plus rapide, un peu plus simple à utiliser, et surtout, qu'il était redevenu multimodal. Cependant, en relançant mes tests de mars, je n'ai pas été entièrement convaincu. Les résultats se sont certes améliorés, mais laissent encore à désirer du point de vue de l'optimalité (doublons avec des trajets plus courts), de la complétude (trajets manquants) ou même parfois du bon sens (temps de marche excessif). J'ai inclus les résultats de ces tests sous forme de paragraphes de mise à jour.
J'avais prévu de garder le texte initial en l'état pour servir aux historiens futurs. Il est devenu obsolète dans ses détails, mais sa conclusion reste d'actualité : si vous habitez Vernet, vous avez toujours intérêt à utiliser mon calculateur plutôt que celui de la Région. Il est plus rapide, plus complet et plus fiable. Si vous n'avez pas accès à internet, privilégiez les fiches horaires.

   

Introduction

Pourquoi avoir développé un calculateur-maison (rouge) pour les itinéraires en car et en train ?

Clairement, pour une raison personnelle : n'ayant pas de voiture, lorsque je suis à Vernet je profite du formidable réseau de transports en commun qui dessert (presque) gratuitement toute l'Occitanie. J'ai donc besoin d'un calculateur d'itinéraires. Mais, me direz-vous, la Région ne propose-t-elle pas déjà une application spécialement dédiée ? Oui, c'est l'app et le site de Lio.

Image extraite de la vidéo promotionnelle de l'app Lio.

   

Recherche d'itinéraires

Cette solution est légèrement surdimensionnée pour moi : elle couvre toute l'Occitanie, alors que c'est autour de Vernet que je traîne le plus souvent. Sa richesse même complique la sélection des quelques arrêts qui m'intéressent : je dois taper les premières lettres de leurs noms, repérer ceux-ci parmi des dizaines de propositions classées par ordre alphabétique, les valider. Je dois choisir un jour, une heure et des minutes. Je dois enfin envoyer la requête au serveur et attendre sa réponse, ce qui peut être long, voire impossible si le réseau est capricieux (p. ex., en randonnée). Et comme seuls les premiers résultats sont affichés, je dois souvent faire plusieurs recherches pour dénicher le trajet qui me convient.

J'ai fini par penser que je pouvais essayer de mettre au point une interface plus simple, du moins plus adaptée à mes simples besoins.

   

Contrôle des résultats

Comme je m'en suis rapidement rendu compte, cela passait par le développement de mon propre moteur de recherche d'itinéraires. N'ayant pas trouvé de données ouvertes sur les horaires des transports en commun en Occitanie, j'ai écrit un programme pour les collecter à partir des PDF des fiches horaires et les combiner en trajets plus complexes.

Encore fallait-il qu'il soit fiable. Les trajets qu'il me proposait étaient-ils possibles ? Étaient-ils optimaux en terme de durée ? Pour répondre à ces questions, je les ai comparés, d'une part à ceux que je pouvais construire à la main à partir des fiches horaires, d'autre part à ceux calculés par l'app Lio.

Avertissement. Les tests présentés ici ont été menés fin février et début mars 2023. La prochaine mise à jour des horaires les rendra nécessairement obsolètes. Par ailleurs, tout laisse à penser que le calculateur Lio rend actuellement des résultats incomplets. Ce problème sera probablement réglé au moment où vous lirez ces lignes. J'ajouterai alors un mot en tête de page.

   

Comparaison avec le calculateur Lio

   

De Vernet à Perpignan le samedi 11 mars 2023

Commençons par un petit voyage entre Vernet et Perpignan le samedi. Le calculateur Lio trouve trois trajets :

Vernet > Perpignan le 11/3/23 selon l'app Lio. Copie d'écran annotée du 5/3/23.

Seul le deuxième est optimal (je l'ai marqué d'un « ✅ »). Les deux autres (marqués d'un « 🐌 ») sont plus lents que nécessaire : le premier pourrait arriver à 09:59, soit 40 mn plus tôt ; le dernier pourrait arriver à 17:59, soit 5 mn plus tôt. Enfin, deux départs sont manquants, à 10:31 et 16:31. Pour comparaison, les cinq trajets optimaux trouvés par mon calculateur, et vérifiés sur les fiches horaires :

Trajet Durée Mode
Vernet 08:35 > Perpignan 09:59 1h24 car 522 / train 877668
Vernet 10:31 > Perpignan 11:59 1h28 car 522 / train 877670
Vernet 13:24 > Perpignan 14:50 1h26 car 521
Vernet 16:31 > Perpignan 17:59 1h28 car 522 / train 877676
Vernet 18:31 > Perpignan 19:55 1h24 car 522 / train 877678
Vernet > Perpignan un samedi de période scolaire selon les fiches horaires et mon calculateur.

Màj du 8/7/23. Le nouveau calculateur Lio propose 8:35 > 10:01 (ok), 8:35 > 10:39 (lent), 10:31 > 12:01 (ok), 13:24 > 14:50 (ok), 16:31 > 18:01 (ok), 16:31 > 18:04 (inutile), 18:31 > 19:57 (ok). Bilan : 5 trajets optimaux, 2 trajets trop lents, 0 trajet manquant. Tout va bien jusqu'ici !

   

De Vernet à Collioure le mercredi 8 mars 2023

Passons à un itinéraire plus complexe, entre Vernet et Collioure, un mercredi. Le calculateur Lio trouve quatre trajets :

Vernet > Collioure le 8/3/23 selon l'app Lio. Copie d'écran annotée du 5/3/23.

Tous ces trajets demandent plus de 2h30. Cependant, ceux marqués « 🐌 » pourraient durer une heure de moins. Et il y a bien d'autres possibilités optimales : au total, pas moins de onze :

Trajet Durée Mode
Vernet 05:41 > Collioure 08:14 2h33 car 521 / car 540
Vernet 06:19 > Collioure 08:17 1h58 car 521 / train 86967
Vernet 06:49 > Collioure 09:14 2h25 car 521 / train 877652 / car 540
Vernet 07:31 > Collioure 09:15 1h44 car 522 / car 560 / train 86969
Vernet 08:35 > Collioure 11:17 2h42 car 522 / car 560 / train 86981
Vernet 09:31 > Collioure 12:14 2h43 car 522 / train 877656 / car 540
Vernet 11:31 > Collioure 14:14 2h43 car 522 / train 877658 / car 540
Vernet 14:21 > Collioure 17:14 2h53 car 521 / car 540
Vernet 15:31 > Collioure 17:44 2h13 car 522 / train 877662 / train 876143
Vernet 17:46 > Collioure 20:29 2h43 car 522 / train 877664 / car 540
Vernet 18:46 > Collioure 21:16 2h30 car 521 / train 876427
Vernet > Collioure un mercredi de période scolaire selon les fiches horaires et mon calculateur.

Màj du 8/7/23. Le nouveau calculateur Lio propose 5:41 > 8:14 (ok), 6:19 > 8:17 (ok), 6:49 > 9:14 (ok), 6:19 > 9:15 (lent), 7:31 > 10:16 (lent), 7:31 > 11:16 (lent), 8:35 > 12:16 (lent), 9:31 > 12:16 (ok), 9:31 > 13:16 (lent), 11:31 > 14:16 (ok), 12:28 > 16:16 (qui part en fait de Fuilla, soit 45 mn de marche !), 14:21 > 17:14 (ok), 15:31 > 17:50 (ok), 15:31 > 18:16 (lent), 17:46 > 20:31 (ok), 18:46 > 21:22 (ok). Bilan : 9 trajets optimaux, 6 sub-optimaux, 1 étrange, 2 manquants (ceux avec une correspondance avec la ligne 560).

   

La multimodalité en question

Les trajets omis par Lio ont un point commun : ils incluent tous au moins une correspondance avec un train. Leur absence est d'autant plus criante que, sur son site officiel, l'application est décrite en ces termes :

Présentation du caractère multimodal de l'application Lio. Article publié le 28/10/19, modifié le 24/1/20. Copie d'écran du 10/3/23. Version actuelle de la page.

En mars 2023, et ce depuis plusieurs semaines, les résultats semblent limités aux cars. On peut le vérifier sur un itinéraire sans correspondance, p. ex. le plus fréquenté du département : des huit trains quotidiens qui circulent de Perpignan à Prades en semaine, aucun n'est proposé.

Il n'en a pas toujours été ainsi : l'application Lio subit apparemment ce qu'on appelle en jargon informatique une régression, temporaire espérons-le.

Avant de rédiger cette page, j'ai tenté de voir si elle était liée à l'app pour smartphone, et si le site web était épargné1. Malheureusement, ces derniers jours, toutes mes recherches sur https://www.mestrajets.lio.laregion.fr échouent avec cette erreur :

Perpignan > Prades le 13/3/23 selon l'application web de Lio. Copie d'écran du 10/3/23.

J'ai appelé un agent du service de mobilité pour lui signaler les dysfonctionnements du calculateur. Il n'était pas au courant mais, d'entrée de jeu, m'a déconseillé de m'en servir. Il m'a même expliqué comment télécharger les fiches horaires (!), en m'assurant que lui-même n'utilisait que ça (les chauffeurs tiennent le même discours). Je lui ai fait remarquer que c'était dommage ; que construire soi-même son itinéraire à partir de plusieurs fiches était fastidieux et sujet à erreurs ; et que c'était précisément le genre de taches que l'on devait pouvoir avantageusement déléguer à une machine. Il en est convenu et m'a enjoint d'envoyer un mail au service compétent, ce que j'ai fait sur-le-champ. Je ne manquerai pas de mettre à jour cette page dès que j'aurai une réponse.

   

La menace australienne

Face à l'impossibilité de contrôler mes résultats avec l'application de service public mise à la disposition des usagers par la Région, je me suis tourné vers une application privée : Rome2rio. Il s'agit d'un calculateur d'itinéraires multimodaux rapide, intuitif, gratuit et sans inscription. Développé par une société australienne, il est capable de proposer des trajets internationaux, mais nous nous bornerons ici à lui soumettre notre micro-problème de transport public occitan.

Vernet > Collioure le 8/3/23 selon Rome2rio. Mosaïque de copies d'écran du 5/3/23.

On voit que Rome2rio est réellement multimodal, et ne propose pas moins de treize trajets, soit deux de plus que ceux listés plus haut. Cependant, plusieurs s'avèrent trop lents (07:31, 09:31 et 11:31) et/ou redondants (deux départs à 06:19, 06:49, 14:21 et 18:46). En outre, les trajets optimaux suivants sont manquants :

Trajet Durée Mode
Vernet 07:31 > Collioure 09:15 1h44 car 522 / car 560 / train 86969
Vernet 08:35 > Collioure 11:17 2h42 car 522 / car 560 / train 86981
Vernet 09:31 > Collioure 12:14 2h43 car 522 / train 877656 / car 540
Vernet 11:31 > Collioure 14:14 2h43 car 522 / train 877658 / car 540
Vernet 17:46 > Collioure 20:29 2h43 car 522 / train 877664 / car 540
Vernet > Collioure un mercredi de période scolaire selon les fiches horaires.

La cause de ces lacunes est plus difficile à cerner. On constate que les combinaisons de modes trouvées par Rome2rio sont soit car/car, soit car/train, soit car/train/train, mais jamais car/car/train ou car/train/car. Toutes les données semblent pourtant disponibles ; peut-être ne sont elles pas exploitées jusqu'au bout.

D'autres tests ont été effectués, avec des résultats encore plus surprenants. Rome2rio ne trouve qu'un seul des cinq trajets de Vernet à Perpignan le samedi, le car direct de 13:24 (voir plus haut). Mais dans l'autre sens, il combine parfaitement les deux modalités, et renvoie les mêmes trajets que mon calculateur.

En tout cas, l'affront fait à la France reste limité : je ne conseille donc pas d'engager dans l'immédiat une guerre totale avec l'Australie.

   

Conclusion

Comment vérifier les résultats produits par mon calculateur ? L'application de Lio est limitée aux cars (actuellement), celle de la SNCF aux trains (évidemment), celle de Rome2rio aux sous-marins nucléaires. Restent les fiches horaires, qui semblent constituer ici la source de vérité ultime et indépassable.

L'évaluation de la fiabilité de mon programme est donc assez laborieuse. Cependant :

  • en ce qui concerne la collecte des données, j'ai essayé d'éviter au maximum les saisies manuelles, principale source d'erreurs : les horaires, les jours et les numéros de circulation sont extraits automatiquement des fiches horaires, ainsi que les urls et les dates de validité desdites fiches ; il ne m'a pas été possible de le faire pour les périodes (scolaires ou de vacances), les notes et, dans les horaires de trains, l'alignement des colonnes incomplètes ;
  • en ce qui concerne les calculs, il y a moins de risque d'erreurs ponctuelles. La plupart des bogues ont un impact sur de nombreux trajets, ce qui permet de les détecter plus facilement. Notez qu'un important changement a été apporté depuis la version précédente : les calculs étaient alors effectués sur une base de données relationnelle, à l'aide d'une batterie de requêtes SQL spécialisées pour les différents cas ; ils se font maintenant sur une base orientée graphes, à l'aide d'une unique requête, plus générale, écrite en Cypher. Cela devrait améliorer la robustesse.

Bien entendu, des erreurs peuvent subsister, ou s'introduire à l'occasion d'une mise à jour des fiches horaires. Toute remontée d'anomalies est la bienvenue. Vous pouvez également consulter le code-source du programme (sous forme d'un notebook Jupyter), du fichier de configuration pour la lecture des fiches horaires et de la requête de construction des itinéraires. Le tout est placé sous licence MIT.


 1 En réalité j'ai assez peu de doutes à ce sujet. Le site web fait manifestement appel à la même API secrète (?) que l'app. Le problème tient certainement à l'interaction avec la base de données sous-jacente.