Prototypes :
Nous disposons de 3 prototypes :
L’un est un programme qui, à partir d’un point de départ et d’une liste de points à parcourir, renvoie le chemin le plus court pour parcourir l’ensemble des points.
Ce programme utilise les algorithmes de google OR-Tools, une suite logicielle Open Source pour l’optimisation, conçue pour rĂ©soudre les problèmes les plus complexes au monde concernant l’acheminement des vĂ©hicules, les flux, la programmation entière et linĂ©aire, et la contrainte. (projet : FlexRouting)
Le second programme (RoadConstraint) reçoit les résultats du premier et les transforme en une suite de segment que l’on peut coller sur une carte :

Pour cela, dans un premier temps, il transforme la carte de la ville de Caen en un graphe non orienté et non connexe :

Dans un second temps, il faut, pour chaque point (qui se prĂ©sente sous la forme de coordonnĂ©es longitude :49.209625501599824, latitude :-0.3647620691874721), chercher le nĹ“ud du graphe qui lui correspond. Pour terminer, il suffit d’effectuer un calcul du plus court chemin avec l’algorithme Dijkstra. Le programme est Ă©galement utilisĂ© pour simuler des trajets effectuĂ©s par des habitants entre leur domicile et le supermarchĂ©. (Projet RoadConstraint)Â
Enfin, le dernier prototype se présente sous la forme d’une application web qui interprète les segments obtenus en simulant les trajets avec une interface graphique. Deux simulations se succèdent, l’une représentant le trajet des citoyens de leur domicile au supermarché, et l’autre la livraison des courses par un camion dans les différents quartiers. Pour quantifier les résultats et clarifier les éléments de sortie, nous avons décidé de représenter les valeurs les plus importantes sous forme de graphes. Notamment, la distance kilométrique et la consommation en CO2 pour chacune des deux simulations afin de les mettre en comparaison. De plus, nous avons un troisième graphe faisant la différence de CO2 émis entre les deux simulations.
Dans la page principale, nous avons la carte de Caen qui a été affichée avec l’API MapLibre. Caen a 19 quartiers, chaque quartier est représenté dans la carte avec un symbole de maison, en plus il y a un supermarché et un entrepôt. En haut à droite, l’utilisateur peut démarrer la simulation en définissant la population.

Détails de la simulation :
- Les distributions de probabilitĂ© utilisĂ©es dans la simulation sont basĂ©es sur des donnĂ©es du monde rĂ©el et sont implĂ©mentĂ©es Ă l’aide de fonctions de distribution de probabilitĂ© appropriĂ©es en JavaScript. Ces distributions sont utilisĂ©es pour dĂ©terminer la probabilitĂ© que certains Ă©vĂ©nements se produisent dans la simulation, ce qui a permis de modĂ©liser des scĂ©narios du monde rĂ©el.
- Dans notre simulation, nous avons utilisĂ© le format JSON pour stocker et utiliser les donnĂ©es recueillies. Le format JSON est un format d’Ă©change de donnĂ©es lĂ©ger qui est facile Ă lire et Ă Ă©crire pour les humains et facile Ă analyser et Ă gĂ©nĂ©rer pour les machines. Cela nous a permis d’intĂ©grer facilement les donnĂ©es dans notre simulation basĂ©e sur JavaScript. Les donnĂ©es utilisĂ©es dans la simulation incluent des informations sur les trajets que les vĂ©hicules suivront, ainsi que la densitĂ© de population dans diffĂ©rents quartiers de la ville simulĂ©e. Ces donnĂ©es Ă©taient essentielles pour fournir une reprĂ©sentation rĂ©aliste et prĂ©cise de la ville dans la simulation. Les informations sur les chemins ont permis Ă la simulation de modĂ©liser le mouvement des vĂ©hicules Ă travers la ville, tandis que les donnĂ©es sur la densitĂ© de population nous ont permis d’Ă©chantillonner des individus alĂ©atoires de diffĂ©rents quartiers.
- Dans notre simulation, nous avons utilisĂ© une technique appelĂ©e interpolation pour diviser le chemin en segments de longueur Ă©gale. Cela nous a permis de modĂ©liser plus prĂ©cisĂ©ment le mouvement le long du chemin et d’effectuer des calculs ou des simulations sur des sections spĂ©cifiques du chemin.
Illustration avec un exemple :
Voici un exemple de démarrage de la première simulation avec 1000 habitants :

Chaque cercle rouge représente un citoyen en voiture, les citoyens partent de leur domicile et font leur trajet au marché. En dessous de la carte nous affichons le graphe d’évolution de consommation. À la fin de la première simulation, le site démarre la deuxième simulation, représentant le camion qui part depuis l’entrepôt et parcours les domiciles des clients.
Voici un exemple de démarrage de la deuxième simulation avec une population de 1000 habitants :

Le cercle vert de la deuxième simulation représente les camions de livraison.
Notamment, la distance kilométrique et la consommation en CO2 pour chacune des deux simulations afin de les mettre en comparaison. De plus, nous avons un troisième graphe représentant la différence de CO2 émis entre les deux simulations.
Nous avons utilisé plusieurs logiques visant à produire les résultats les plus réalistes possibles. Notamment le data sampling en se basant sur des données réelles récupérées pour la ville de Caen, les distributions probabilistes pour les valeurs de consommation de carburant et de vitesse, l’interpolation de points afin d’effectuer des sauts de taille égale entre chaque itération, et enfin un lien croissant entre le nombre de camions et la taille de la population.
Voici le graphe d’évolution de consommation de CO2 et kilomètres sans et avec le panier collectif à gauche et la quantité de CO2 non émis à droite :

Gitlabs:
Projet FlexRouting:
https://gitlab.com/Pignon/flexrouting
Projet RoadConstraint:
https://gitlab.com/Pignon/roadconstraint
Projet site de démo:
https://gitlab.com/Pignon/panniercollectif-prototype
Projet MapLibre :
https://github.com/maplibre/maplibre-gl-js
Sources
Habitants par quartier: