--- title: Compte rendu stage intermodalité --- # Travail au LaBRI :::info 2 tâches à réaliser : * Extraction de données multi-critères. * Implémentation d'un algo avec préprocess. ::: :::success **Notations** : * $G = (V_G, E_G)$ est un graphe. * $V_G$ est l'enssemble des sommets du graph $G$. * $E_G$ est l'enssemble des arrêtes du graph $G$. * $d \in \mathbb N^*$ est ne nombre de critères des arrêtes de $G$. * $PATH_G(u, v)$ est l'ensemble des chemins de G * $P_{u, v} = (P_1, ... , P_d) \in PATH_G(u, v)$ avec $u, v \in V$ est un chemin de $u$ à $v$ et dont les valeurs pour chaque critères sont $(P_1, ..., P_d)$. * $n \in \mathbb N^*$ correspond au nombre de sommets. * $m \in \mathbb N^*$ correspond au nombre d'arrêtes. * $\varepsilon \in \mathbb R^{+*}$ un nombre *petit*. ::: ## Définitions ### Graphe Statique et Graphe Temporel * Graphe statique : lié au réseau routier, au vélo ou à la marche. ![](https://i.imgur.com/Egi9ufA.png =250x) Les arrêtes portent des coût de trajet. * Graphe temporel : lié aux transports en commun. ![](https://i.imgur.com/KrPBhi8.png =250x) Les arrêtes portent des horaires de passage. ### Domination, $\varepsilon$-Couverture et Front de Pareto. :::info **Domination** : $P$ domine $Q$ ssi $$ \forall i \in [\![1, d]\!], P_i \leqslant Q_i $$ **$\varepsilon$-Couverture** : $P$ $(1+\varepsilon)$-couvre $Q$ ssi $$ \forall i \in [\![1, d]\!], P_i \leqslant (1+\varepsilon)Q_i $$ **Front de Pareto** : $P$ appartiens au Front de Pareto sur $PATH_G(u,v)$ ssi $$ \forall Q \in PATH_G(u, v), Q \text{ ne domine pas } P $$ ::: Représentation du Front de Pareto : ![](https://i.imgur.com/YHORdH9.png =400x) :::info **Notion de résumé** : Un résumé du Front de Pareto est un ensemble de points $P$ tels que $$ \forall Q \in PATH_G(u, v), Q\text{ ne }(1+\varepsilon)\text{-couvre pas }P $$ ::: Représentation d'un résumé pour $\varepsilon = 0.85$ : ![](https://i.imgur.com/wnZnobB.png =400x) ### Partitionnement de Graphe :::info En théorie des graphes et en algorithmique, le partitionnement de graphe est la tâche qui consiste à diviser un graphe orienté ou non orienté en plusieurs parties. ::: ![](https://i.imgur.com/lny0CB3.png =250x) Dans le cas des algorithmes de plus court chemin, on essaiera de minimiser la taille de la coupe ainsi que d'avoir des parties de tailles similaires : $$ \cup_{i=1}^k V_i = V \\ \forall i, j \in [\![1, k]\!]^2 \quad i \neq j \quad V_i \cap V_j = \emptyset \\ \forall i \in [\![1, k]\!], |V_i| \leqslant \frac{1}{k} |V| $$ Il existe plusieurs algorithmes effectuant un partitionnement du graphe (ex : *Floyd-Fulkerson*). :::danger Il n'existe pas d'algorithme *rapide* garantissant simultanément petite coute **et** partitions équilibrées. ::: ### Interpolation bi-linéaire Soient $x_1, x_2, y_1, y_2 \in \mathbb R$, $Q_{11} = (x_1, y_1)$, $Q_{12} = (x_1, y_2)$, $Q_{21} = (x_2, y_1)$ et $Q_{22} = (x_2, y_2)$ dont on connais les images par $f: \mathbb R^2 \longrightarrow \mathbb R$. ![](https://i.imgur.com/k12Qq9F.png) Une approximation de l'image de $Q = (x, y) \in \mathbb R^2$ par $f$ est : $$ f(Q) \approx \frac{1}{(x_2-x_1)(y_2-y_1)} \begin{bmatrix} x_2-x & x-x_1 \end{bmatrix} \begin{bmatrix} f(Q_{11}) & f(Q_{12})\\ f(Q_{21}) & f(Q_{22}) \end{bmatrix} \begin{bmatrix} y_2-y \\ y-y_1 \end{bmatrix} $$ ## Mesures * **$\varepsilon$ à posteriori** Le $\varepsilon$ minimal tel que les éléments du résumé $\varepsilon$-couvrent le Front de Pareto. On cherche à avoir un $\varepsilon$ le plus petit possible avec le moins de propositions possible dans le résumé. Concis et Précis. * **Distance moyenne $d_C$** Distance euclidienne moyenne entre les éléments du résumé et ceux du Front de Pareto. On la définie ainsi, $\Pi^*$ étant le Front de Pareto obtimal et $\Pi$ la proposition : $$ d_c(\pi^*, \pi) = \sqrt{\sum_{i = 0}^d(\pi^*_i - \pi_i)^2} $$ On voit ici les éléments du Front de Pareto comme des points dans l'espace composé des critères. $$ d_C(\Pi^*, \Pi) = \frac{1}{|\Pi^*|} \sum_{\pi^* \in \Pi^*} \underset{\pi \in \Pi}{min} \space d_c(\pi^*, \pi) $$ * **Distance moyenne $d_J$** Distance de Jaccard moyenne entre les éléments du résumé et ceux du Front de Pareto. La distance de Jaccard est définie ainsi : $$ d_j(\pi^*, \pi) = \frac{|(\pi^*\cup\pi)| - |(\pi^*\cap\pi)|}{|(\pi^*\cup\pi)|} $$ On voit ici les éléments du Front de Pareto comme des ensembles d'arrêtes. $$ d_J(\Pi^*, \Pi) = \frac{1}{|\Pi^*|} \sum_{\pi^* \in \Pi^*} \underset{\pi \in \Pi}{min} \space d_j(\pi^*, \pi) $$ Dans les cas de $d_C$ et $d_J$, on cherche à les minimiser. ## Critères :::info Liste non exhaustive : * **Dénivelé/Effort physique** * **Coût** * **Émission de $CO_2$** * **Fluidité du trajet (vitesse moyenne/importance des routes)**\ global importance (osm)\ charger données de Bordeaux * Temps * Nombre de correspondance * Temps entre correspondances * Temps de marche total ::: Certains critère a un côté *personnalisation* important. (Dénivelé, temps, coût de péage) Choix des critères : * Accessibilité * Couverture * intérêt (produit/stratégie) ### Dénivelation Données OSM touchant uniquement au vélo et à la marche. Comment intégrer la donnée de dénivelation aux données OSM ? :::info Propositions de sources : * ESA, projet copernicus (Europe) : précision ??m * OSRM, basé sur SRTM (Monde) : précision ~100m * MNT Intermap (Europe de l'Ouest) : ~5m ::: :::warning rechercher du côté de osmosis. > https://wiki.openstreetmap.org/wiki/Osmosis\ > https://github.com/locked-fg/osmosis-srtm-plugin ::: La plus part des sources de données d'élévation la donne sous la forme d'une image ayant une valeur pour chaque pixel. On peut utiliser l'interpolation bi-linéaire pour simuler une précision meilleure que celle de la taille d'un pixel. Représentation du dénivelé : pourcentage de pente ? hauteur ? http://confluence/display/Team/Etude+Raster+Intermap\ https://wiki.openstreetmap.org/wiki/SRTM\ https://www.eea.europa.eu/data-and-maps/data/eu-dem\ http://srtm.csi.cgiar.org/srtmdata/\ https://makina-corpus.com/blog/metier/2018/calcul-ditineraires-pietons-avec-osrm\ https://gitlab.mappy.priv/dt.lbs/redpig-process/blob/master/processes/intermap/build_tiles.py\ https://github.com/Project-OSRM/osrm-backend/wiki/Integrating-third-party-raster-data * OSRM : Dans OSRM, l'import des données de dénivélation (provenant de SRTM) est fait via l'outil "raster_source". La donnée d'élévation est sous forme d'une grille dans un fichier plaintext ASCII. Ce fichier contiens 6 lignes de metadata au début : ``` ncols 6001 nrows 6001 xllcorner -125.00041606132 yllcorner 34.999583357538 cellsize 0.00083333333333333 NODATA_value -9999 ``` Lorsque viens le moment de charger le niveau d'élévation, un appel est fait avec la *latitude* et *longitude* de l'endroit demandé. OSMR n'intègre pas la donnée d'élévation dans la donnée OSM mais, les utilise séparément en connaissant la latitude et la longitude d'est points de la polyline OSM. ### Coût Carburant voiture : http://confluence/pages/viewpage.action?pageId=24678477 Île-de-France et Toulouse : http://confluence/display/PRODUITS/Tarification+TC ### Émission de CO$_2$ http://confluence/pages/viewpage.action?pageId=31373169 ### Fluidité du trajet utiliser les FRC ? ## Algorithmes Multi-Critères * Basés sur Dijkstra(MLS) * Basés sur Bellman-Ford * NAMOA$^*$ * McRAPTOR * CSA * McHL ### Hub Labelling On construit $L(s)$ *(en orange)* et $L^{-1}(t)$ *(en vert)* de sorte que : * $L(s) \cap L^{-1}(t) \neq \emptyset$ * $L(s) \cap L^{-1}(t)$ contienne un sommet sur un plus court chemin de $s$ à $t$. ![](https://i.imgur.com/yDGmi6c.png =250x) Le calcul des Hubs est non trivial, cependant, ont peut utiliser tous les sommets d'une coupe en tant que Hub. On pourra utiliser une structure de coupes récursive pour la génération de nos Hub. ![](https://i.imgur.com/Qy0tUPT.png) Lorsque deux sommets sont dans la même partition, alors ils sont suffisemment proches pour que une méthode *naïve* tel que A$^*$ pour calculer un plus court chemin. ## Misc * **BRouter** Calcul d'itinéraire orienté vélo avec un systeme de**** profil pour les capacités physiques. * **Zotero** Bibliographie en ligne. * **DBLP** Source de papier scientifiques ## Récapitulatif des Algorithmes | | temporel | statique | | ---------------:|:-------------------:|:------------------------------------------------------:| | Type de donénes | Transport en Commun | Voiture/Vélo/Marche | | Algorithmes MC | McRAPTOR, CSA | MLS (McDijkstra), Bellman-Ford, NAMOA$^*$, CHMC?, McHL | ## Algorithmes multimodaux :::success **Notations générales** : * $G_T = (V_{G_T}, E_{G_T})$ est un graphe temporel. * $G_S = (V_{G_S}, E_{G_S})$ est un graphe statique. * $V_T \subseteq V_S$ * $s, t \in V_S$ * $\forall s_1, s_2 \in V_T, PCC_{G_T}(s_1, s_2)$ est connu (ou calculable). > RAPTOR, CSA, ... * $\forall s_1, s_2 \in V_T, PCC_{G_S}(s_1, s_2)$ est connu (ou calculable). > Dijkstra, HL, CH, ... **Notations pour $G_T$** : * $K$ lignes de $L_K \leqslant L$ stations * $J_1, \dots, J_K \leqslant J$ voyages * Nombre total d'horaires $$ \sum_{i \leqslant K} J_i L_i \leqslant kJL $$ ::: ### RAPTOR :::info cf. https://gitlab.mappy.priv/dt.lbs/tc/-/wikis/itineraires/algorithmes ::: Complexité moyenne : $O(kLK(1+LK)+JK)$ ? ## Références * McHL\ Yoan Picchi\ Juin-Août 2019 * Route Planning in Transportation Network\ Hannah Bast, Daniel Delling, Andrew Goldberg, Matthias Müller-Hannemann, Thomas Pajor, Peter Sanders, Dorothea Wagner and Renato F. Werneck\ 11 November 2016 * Practical Multicriteria Urban Bicycle Routing\ Jan Hrnčíř, Pavol Žilecký, Qing Song and Michal Jakob\ 3 march 2017 * Un algorithme d'approximation pour le calcul de plus courts chemins multi-critères\ Nicolas Hanusse, David Ilcinkas et Antonin Lentz #### questions :::info Liens entre graphe TC et routier ?\ regarder Navitia\ Complexité de RAPTOR ?\ Formats utilisés par Mappy ?\ travel time function, OSM-like, on peut utiliser le DIMACS sauf pour le trafic historique\ Stockage des transferts ? (second plan)\ ask aline/william ::: ## Réunion avec Cyril et Alline Intégration de la dénivélation. Ajout d'un critère de coût possible. Liens entre le multicritère et le multimodal ? bien présenter l'explosion combinatoire lors du passage en multimodal. Ce que les gens demandent : plusieurs transport à disposition => combiner tous les moyens de transport avec la possibilité d'éliminer un un moyen de transport. proposition de 4/5 alternatives avec différents moyens de transport: - piéton + transport - voiture + transport - vélo + transport - etc ... Obligé de relancer le calcul à 0 pour chaque modèle ? sujet de la propriété intellectuelle abordé. (ni à François ni à Clément de le gérer) Solution de Rome-to-Ryo et prolongation post-stage méthode simple MC = combinaison linéaire de critères. Solution multimodale : RAPTOR enrichi par graphe de transferts. ## Mercredi 1er avril Rapport informations nécéssaires pour implémentation de RAPTOR-MM, avec du pseudo code.