Comments on Mon poussinet veut reverse-engineerer les tarifs de la SNCF

Touriste (2015-07-07T11:57:22Z)

"si B est entre A et C, alors le tarif de A→B ou B→C est toujours inférieur à celui de A→C"

Un nouveau contre-exemple, lié au cas particulier des trains SNCF France-Italie. Testé sur un départ de Lyon le 15 juillet 2015 à 8 heures 31 dans le TGV 9241 :

Lyon - Modane (tarif Loisir) : 33 euros, mais Lyon - Oulx (tarif Flexi) : 23 euros.

Touriste (2014-11-01T23:34:06Z)

"si B est entre A et C, alors le tarif de A→B ou B→C est toujours inférieur à celui de A→C"

Je reviens quatre ans plus tard ajouter un nouvel exemple, conjoncturel celui-là (détournement des trains de nuit vers le sud-ouest par Limoges suite à des travaux je ne sais où sur l'itinéraire habituel via Bordeaux).

Exemples de tarifs pro 2nde pour un voyage dimanche 23 novembre dans l'Intercité de nuit 4053, période de pointe (Paris 21h24, Tarbes 05h42, Dax 07h30) : Paris-Tarbes 144 euros, mais Paris-Dax 131 euros et on peut descendre à Tarbes…

SB (2013-01-25T19:41:05Z)

Sur le sujet:
http://sosconso.blog.lemonde.fr/2013/01/23/pourquoi-les-prix-des-trains-ou-des-avions-varient-dune-minute-a-lautre/
http://sosconso.blog.lemonde.fr/2013/01/24/pourquoi-les-prix-des-trains-et-des-avions-varient-dune-minute-a-lautre-suite/

Ilia (2012-11-27T09:51:33Z)

J'ai oublié de le dire : êtes-vous au courant qu'on peut trouver ces tarifs sur Internet ? (J'ai l'impression - mais je me trompe peut-être, auquel cas ce n'est sans doute pas une grande nouvelle… - que ce n'était pas le cas jusqu'à récemment.) Plus précisément : http://www.ratp.fr/tarifs/ et http://www.transilien.com/tarif/tarif/init .

Ruxor (2012-11-26T22:18:33Z)

@Ilia: Le poussinet a effectivement aussi étudié les prix des billets origine-destination de la RATP, mais apparemment il y a beaucoup d'informations qui sont cachées à des endroits introuvables dans les archives des décisions du STIF. J'attirerai son attention sur ce problème d'inégalité triangulaire — quand il aura soutenu sa thèse.

Ilia (2012-11-26T17:54:56Z)

Tiens, je serais curieux de voir la même chose pour les tarifs de la RATP/Transilien (je veux dire pour les billets "Origine-Destination"). Ca a l'air particulièrement grotesque ! Entre autres, j'ai un contre-exemple à l'inégalité triangulaire :
Paris - Charles de Gaulle : 9,25€
Paris - Parc des Expositions : 4,00€
Parc des Expositions - Charles de Gaulle : 3,95€
(Cela dit, les aéroports ont une tarification spéciale. Je serais curieux de savoir s'il y a d'autres contre-exemples sur le reste du réseau…)

Dans certains cas (par exemple, sur la partie sud du RER B), les tarifs ont l'air de suivre des règles très précises. Il semblerait qu'il y ait un système de zones, et que le prix dépend du nombre de "barrières" qu'on traverse (avec quelques cas exceptionnels), la limite de Paris ayant un statut à part. Ca ne correspond pas du tout aux zones du Pass Navigo : pour reprendre l'exemple du B, il y a une barrière juste avant Parc de Sceaux, une juste avant Massy-Verrières, une juste avant Lozère et une juste avant Bures-sur-Yvette.

Mais dans d'autre cas, je n'y comprends absolument rien. Par exemple, pour les trajets qui commencent dans la branche A2 et finissent dans la branche A4, le tableau des tarifs présente un mélange de régularité et de chaos très perturbant. J'aimerais bien en savoir plus !

tartaglia (2010-03-20T18:43:34Z)

Revenons aux fondamentaux.
La SNCF est une organisation (je pèse mes mots: on va me traiter de libéral si je dis entreprise, et de démagogue si je dis service public) qui vise à transporter, par les voies de chemin de fer, des voyageurs et des biens. Elle a bénéficié d'un statut monopolistique que la réglementation européenne voue à la caducité.
Cela mis à part, la SNCF utilise des voies détenues par le RFF qui les lui met à disposition contre une redevance.
Pour calculer de manière prospective le prix du billet pour aller à Bourg-Saint-Maurice ou à Bordeaux, il faudrait tenir compte de la compétition à laquelle vont se livrer les opérateurs pour se faire concéder des accès à un réseau qui, sauf exception, restera monopolistique. Et, éventuellement, de l'usure des voies selon qu'on est en plaine, en montagne, en agglomération urbaine avec des wagons très chargés ou en zone rurale avec moins de contraintes physiques sur les roues et les voies.
Prenez l'avion!

Touriste (2010-03-19T10:08:39Z)

"si B est entre A et C, alors le tarif de A→B ou B→C est toujours inférieur à celui de A→C"

C'est vrai en gros, mais avec des exceptions (assez rares, je le concède) ; outre les bizarreries de l'attribution d'un kilométrage à un trajet (cf. mon exemple plus haut de Lyon - Aix-les-Bains - Chambéry), il y a aussi l'effet des surtaxes temporaires qui semblent malheureusement en disparition rapide, plus que quatre à la page 97 des tarifs ah tout fout le camp.

Mais voici un exemple vérifié à l'instant sur voyages-sncf : pour une réservation dans le TGV 08515 de 10 heures 05 mardi 23 mars, en tarif Pro 2nde, un billet Paris - Biarritz coûte 91,20 euros mais un billet Paris - Saint-Jean-de-Luz ne coûte que 90 euros.

Conscrit neuneu (2010-03-19T04:53:37Z)

Couard Anonyme, Ruxor -> De fait les prix de base des TGV circulant sur ligne à grande vitesse sont des prix de marché, mais ils ne changent qu'une fois par an, sont donnés dans un tableau accessible au public et respectent la condition que Ruxor a fait remarquer, donc la marge est faible (mais pas si négligeable que ça)

Ruxor (2010-03-18T23:07:47Z)

Couard Anonyme → La SNCF ne fait pas (encore…) ce genre de yield management, alors. Par exemple, e tarif d'un billet A→B→C est toujours supérieur ou égal à A→C ; et si B est entre A et C, alors le tarif de A→B ou B→C est toujours inférieur à celui de A→C. Ces affirmations cessent d'être vraies pour iDTGV, qui n'est pas géré par la SNCF (mais par une filiale il est vraie détenue à 100% par la SNCF… ah, les merveilles de la propriété des entreprises — toujours est-il que mon poussinet s'intéresse aux tarifs SNCF normaux et pas aux iDTGV).

Couard Anonyme (2010-03-18T19:04:33Z)

Tu sembles considerer que le yield management recouvre juste la segmentation du marche (en gros les offres promotionnelles par categorie socio-professionelle) mais les tarifs "de base" sont eux aussi determines en fonction de ca. C'etait un peu mon exemple avec un trajet d'avion ou A -> B -> C est moins cher que A -> B parce que tu n'es pas cense descendre en B. C'est beaucoup plus visible sur les compagnies aeriennes que sur les billets de train ou les tarifs sont typiquement plus stables, et la SNCF est probablement moins agressive que les autres compangnies de transport. Mais normalement tous les tarifs sont concernes.

Conscrit neuneu (2010-03-17T23:00:39Z)

xavier -> une fois que tu as repéré les 5 x 2 x 2 - 1 paliers (et les taux de réduction approximatifs afférents) qui te concernent déjà ça retire un certain effet de surprise/impression d'aléatoire. (5 parce que plein tarif + 4 paliers réduits; 2 parce qu'il y a période de pointe et pas période de pointe; 2 parce qu'il y a deux classes; -1 parce que le plein tarif de la première classe est insensible à la période de pointe). Plein tarif -> lire soit le plein tarif loisir, soit les 25% garantis des cartes commerciales.

xavier (2010-03-17T20:50:01Z)

Heu oui mais ça aide pas pour avoir une idée de combien on va payer avant d'aller sur cette merdouille de site de la sncf.
J'ai aussi bien compris que ce n'était pas le but :)

Ruxor (2010-03-17T20:40:20Z)

xavier → Si, si, même en présence de yield management, on peut savoir plein de choses. Sur chaque ligne TGV donnée, par exemple, il n'y a qu'un petit nombre de paliers de réduction possibles par rapport au plein tarif (et le palier qu'on obtient est d'ailleurs indiqué sur le billet : c'est le sens de la lettre juste en-dessous du 'i' de « Prix par voyageur », juste après la lettre 'A' pour la 1re classe et 'B' pour la 2de). On ne peut peut-être pas savoir le nombre de places offertes à chaque palier de réduction, mais le fait de connaître les paliers apporte quand même de l'information.

xavier (2010-03-17T15:19:21Z)

Bon si on veut calculer un tarif virtuel, on peut tenter de comprendre quel formules ils utilisent.
Cependant, il faut bien voir que ca reste un cas d'école car sur les lignes TGV, ils font du yield management. Du vrai. C'est à dire que ce n'est pas statique.
Tu as des gens à la sncf dont le métier est de changer la répartition des différents tarifs dans un même train en fonction de tout un tas de paramètres dont l'évolution du taux de remplissage. Le prix qu'on va payer à l'instant X dépend donc de ce qui a été vendus avant.

C'est un humain qui décide…probablement basé sur des outils statistiques mais la sncf pense probablement (à raison) que les paramètres sont trop nombreux pour mettre en place un soft raisonnable. C'est comme pour la gestion de la cascade de l'impact des retards sur les autres trains: C'est en partie automatique et en partie humain (genre "zut on n'a plus le bus est aussi en panne, appelons vite la régulation pour que ce train passe avant les autres").
Ils font ce qu'ils veulent. Leur com "plus c'est en avance moins c'est cher" n'est exacte qu'en moyenne.

Vicnent (2010-03-16T09:49:48Z)

@Couard Anonyme (2010-03-15T23:13:21+0100) : En gros l'idee est de vendre le meme billet $100, $10 et $1 respectivement a ceux qui ont les moyens de les payer $100, $10 et $1, sans que l'information ne soit publique (personne n'aime payer plus que le voisin pour le meme service) et sans permettre les transvasements.

cf la remarque de Ruxor + pour ma part, je dirais surtout que leur but est de vendre des places à un tarif (et proposé de telle façon) que toute autre forme de proposition et de tarif (et de tarification) leur ferait perdre de l'argent. C'est juste du marketing. Leur pb est que c'est effectivement poussé à l'extrême et que toute forme de tentative de mise en place de stratégie est voué à l'échec.

Si ça marche bien pour eux (maximisation de leur CA), ça devient très vite très galère pour nous, usager, doté d'au moins un semblant de cerveau : non seulement c'est incompréhensible, mais on a surtout l'impression d'être pris pour des débiles. Pour notre part, on essaie de prendre le moins possible le train, tellement la SNCF se fout de notre gueule, et basta si ça nous coute (finalement) (un peu) plus cher, mais la Mini avec le cuir, le toît pano, la sono, ça le fait très bien aussi (la seconde classe m'a toujours fait penser à [je prends mon point Godwin volontiers] tellement on est mal assis (sérieux, si >2h, ça devient vite un enfer, sans compter les petites nenfants qui braient) et il y a peu de place pour les genoux(et je ne fait que 1m77!!)

Sinon, il me semble que les prix des trajets sont de la forme f(x)+b où b est un forfait (droit de passage à RFF) et f une fonction des x km du trajet total, qui est dégressive, affine par morceau. De fait, bon courage à Poussinet puisque la politique marketing, elle, est passablement opaque (ça doit sortir de boite noire…)

Bref, mon algo à moi est le suivant :
Si
le trajet est supérieur ou égal à 200 km
et si la date du voyage est assez éloignée
et si leur site de merde veut bien fonctionner ce jour là
et si il y a des places en première (souvent moins chères qu'en seconde, ou juste au dessus)
et si le tarif est à priori attractif
quitte à prendre un train qui ne va pas 'là', mais qui au moins passe et s'arrête 'là' sans que ce soit formellement dit voire même officiellement caché par ces enfoirés de la SNCF
Alors
en parler à bibiche (qui a une patience avec la sncf à en croire qu'elle n'est plus humaine dans cette phase) qui regardera plus finement.
Sinon
ne pas s'emmerder,
faire le plein de la mini,
se faire plaisir dans chaque courbe
prendre toutes les sorties d'autoroute et les très grands ronds points en crabe (si pilote vraiment en forme)

Ruxor (2010-03-16T00:03:00Z)

Couard Anonyme → Sur le yield management, certes, mais tu mélanges un peu les choses. La façon dont la SNCF fait son yield management, c'est de mettre, dans chaque train, des contingents de places à tarifs réduits (en fait, c'est un peu plus compliqué parce qu'il y a plusieurs catégories de contingents, selon qu'on a ou non une carte commerciale genre 12–25, mais peu importe) : quand on achète un billet, on obtient a priori une place prise dans le contingent le moins cher, donc les premiers servis paient le moins cher ; dix jours avant le départ, les contingents disparaissent ; et les Prem's obéissent à des règles un peu différentes dans le détail mais de même esprit. Ce n'est pas spécialement compliqué. Là où les modèles statistiques compliqués peuvent intervenir, c'est pour déterminer combien de place affecter à chaque contingent à tarif réduit, mais on peut considérer que ça fait partie de la donnée du train. Même les niveaux de réduction pourraient être fixés une fois pour toutes (dans la pratique, mon poussinet a découvert qu'ils dépendaient de la ligne, ce dont je ne vois pas vraiment l'intérêt). En tout cas, tout ceci est à peu près complètement déconnecté de la question de déterminer le tarif de base (i.e., sans réduction) pour un voyage en fonction de sa distance et du type de train : pour ça, il n'y a pas de yield management qui intervienne, et pas de raison que ce soit compliqué.

Couard Anonyme (2010-03-15T22:22:36Z)

Commentaire supplementaire sur les anomalies : les tarifs sont fonction de la demande. De ce fait, il peut apparaitre des anomalies mais les modeles (normalement) prennent en compte le fait que peu de personnes vont les exploiter.

Exemple : un billet direct Houston - New York le matin de thanksgiving est extremement cher : tout le monde veut etre chez soi pour le diner. Un billet Houston - San Francisco arrivant a 1h du matin a San Francisco est presque donne, deja qu'on arrive tres tard, en plus il faut faire un enorme detour par New York car pour les fetes la capacite de transport est augmentee sur les lignes a grosse affluence ce qui reduit le cout marginal par passager.

C'est bizarre, j'ai pris un billet pour Houston - San Francisco mais comme j'avais mes valises avec moi dans la cabine, j'ai decide de descendre a New York.

Couard Anonyme (2010-03-15T22:13:21Z)

Les compagnies de transport (avions, trains) font en general de la segmentation de marche (yield management) au moyen de modeles mathematiques qui combinent optimisation et statistiques. C'est pour ca que la politique tarifaire devient vite incomprehensible et et en fait il vaut mieux qu'elle soit opaque.

En gros l'idee est de vendre le meme billet $100, $10 et $1 respectivement a ceux qui ont les moyens de les payer $100, $10 et $1, sans que l'information ne soit publique (personne n'aime payer plus que le voisin pour le meme service) et sans permettre les transvasements.

En general on fait ca en mettant une barriere technique ou des conditions. Par exemple des billets non echangeables, ou bien pour avoir le tarif le moins cher il faut connaitre les trucs… par exemple quand je rentrais a Cannes depuis Paris et que les billets -25 ans a 50% pour Cannes etaient epuises, il etait moins cher d'acheter un Paris-Nice a 50% qu'un Paris-Cannes a 25%.

Le systeme le plus opaque etant celui de Priceline.com qui marche du tonnerre justement parce que son opacite protege le fournisseur de service des transfugees : on fait une offre ferme ($50 la nuit d'hotel) et les hotels repondent oui/non. On ne saura jamais combien bas l'hotel etait dispose a vendre. Et il n'est pas raisonnablement envisageable de reverse engineerer le modele en raison du cout de l'information.

Maintenant, comment on fait ca ? il faut anaylser les donnees passees pour en extraire une fonction d'elasticite (combien une partie de la population est prete a payer pour un certain produit), puis etablir un profil d'aversion a la perte (combien d'effort est pret a faire un client pour denicher la meilleure offre) puis optimiser l'esperance de benefices dans un modele qui agrege tout ca. En general ca se fait a coup de programmation lineaire en nombres entiers.

Conscrit neuneu (2010-03-15T21:58:01Z)

Giom -> Volontiers!

Fork -> Un contrôleur ne savait pas (mais avait l'air intéressé de parler d'autre chose que "j'ai pas composté", "j'ai oublié ma carte 12/25", "le train a du retard"…). Vue l'efficacité de la communication entre la base et la hiérarchie j'ai un doute.

J'ai trouvé ce que la phrase cryptique voulait dire. Je pense que les coefficients sont calculés en combinant les deux trajets en plein tarif (arrondi au décime d'euro blabla), en répartissant le montant sur les deux trajets selon une règle de trois avec les kilométrages respectifs (arrondi au décime d'euro etc.) et enfin en regardant le rapport entre le prix d'origine et le prix d'arrivée. Ensuite on prend le prix obtenu sur le premier trajet (qui peut être différent : carte 12/25, quota de places…) on lui affecte le coefficient et on arrondit au décime d'euro supérieur. Reste plus qu'à faire la somme.

J'ai trouvé une formule qui marche (essayée que sur le plein tarif) à moins de 40cts près, y compris sur un marseille - paris - lille où la première formule se plante de 13,80 EUR et la deuxième de 10,30 EUR. Les petites variations doivent venir de la linéarisation de la formule (je parie que le système de calcul de prix est incapable de faire autre chose que des arrondis, récupérer le prix dans une table, appliquer un pourcentage, appliquer une fonction affine par morceaux). Ma formule se plante de 1EUR sur un trajet avec une composante toute petite. J'attribue ça à la linéarisation.

Adjugé.

Hélène (2010-03-15T17:40:46Z)

Un peu comme le projet SETI@Home qui recherche de la vie extra-terrestre, vous recherchez une certaine logique dans les tarifs de la SNCF. Bon courage…

Conscrit neuneu (2010-03-15T14:47:51Z)

En tout cas, j'offre une boîte de chocolats à celui qui trouve.

Nick (2010-03-15T10:20:14Z)

Peut-être que la fonction "pow" n'existe pas en COBOL?

Giom (2010-03-15T09:28:04Z)

Si vous voulez je peux regarder si j'ai des infos ici…

Touriste (2010-03-15T08:05:31Z)

Tant qu'on en est dans les mystères, je n'ai jamais réussi à connaître les règles d'association d'une distance tarifaire à un trajet lorsque celui-ci contient un détour. Sur certaines relations (mais où en trouver la liste ?), la SNCF émet d'office un billet à distance kilométrique égale à la distance la plus courte, même si on lui précise expressément prendre un train faisant un détour. Ainsi un billet Lyon - Chambéry est toujours calculé sur la base de 107 kilomètres même si on annonce prendre un train passant par Culoz (or 107 est la distance via St André le Gaz, la distance via Culoz est de l'ordre de 120) - la conséquence est qu'un billet Lyon - Chambéry dans un train s'arrêtant à Aix-les-Bains est _moins cher_ qu'un billet Lyon - Aix-les-Bains. Même chose pour le trajet Pau-Bayonne via Dax et non via Peyrehorade.

Je ne sais pas exactement à quelles conditions la SNCF offre ce petit cadeau à ses clients.

Touriste (2010-03-15T07:58:53Z)

Ah problème qui me passionne, sans que j'aie jamais fait effort pour le résoudre.

Je signale une anomalie intéressante : lorsque AB et BC sont tous deux des trajets sans réservation obligatoire, la mystérieuse formule que vous recherchez semble néanmoins appliquée et peut donc conduire à des variations minimes mais aberrantes du prix du trajet.

Exemple sur deux billets Lyon-Embrun tarif Fréquence de juillet dernier :

* billet ne mentionnant pas les horaires (purement indicatifs) des trains qui seront empruntés -> 19,10 euros ;

* billet faisant état d'horaires, et en conséquence divisé en deux segments : AB = Lyon-Grenoble (129 km tarifaires) et BC = Grenoble-Embrun (174 km tarifaires) : 19,00 euros (répartis en 8,00 + 11,00)

(Si vous avez besoin d'exemples, j'ai conservé tous mes billets SNCF depuis environ vingt ans, ça m'en donne quelques réserves…)

Pour les amateurs de curiosités, voir un post de Julien Cassaigne sur fr.misc.transport.rail en 2004 : à cette date, le site voyages-sncf.com ne connaissait pas non plus la mystérieuse formule d'adaptation pour les voyages multi-segments et annonçait un tarif bidon, nettement trop élevé, pour un voyage contenant une correspondance. <URL: http://groups.google.fr/group/fr.misc.transport.rail/browse_thread/thread/362fd05d14579bed/3a5e53b563151d08 >

Fork (2010-03-15T06:51:48Z)

Étant donné la convivialité des sites de la SNCF en général, je suis impressionné du courage que vous avez pour les utiliser dans votre recherche :)
(Même si bon, vous n'avez sans doute pas le choix. Vous avez essayé le renseignement humain ?)

Conscrit neuneu (2010-03-15T01:20:55Z)

Soit Pab et Pbc les tarifs sur les segments AB et BC
Soit Lab et Lbc le kilométrage des segments AB et BC
Soit P(x) le prix de base. P^-1 la fonction inverse

Ont été essayés
Pac = Pab * P(Lab+Lbc)/(P(Lab)+P(Lbc)) + Pbc * P(Lab+Lbc)/(P(Lab)+P(Lbc))

Pac = Pab * P(Lab+Lbc)/(Lab+Lbc)*Lab/P(Lab) + Pbc * P(Lab+Lbc)/(Lab+Lbc)*Lb/P(Lbc))

Pac = P(P^-1(Pab)+P^-1(Pbc))

Ça n'est jamais loin, mais ça ne marche pas. Les coeffs devant les prix ne dépendent pas que des distances, si on met un trajet en période de pointe ça change.


You can post a comment using the following fields:
Name or nick (mandatory):
Web site URL (optional):
Email address (optional, will not appear):
Identifier phrase (optional, see below):
Attempt to remember the values above?
The comment itself (mandatory):

Optional message for moderator (hidden to others):

Spam protection: please enter below the following signs in reverse order: 902a82


Recent comments