Mes intentions :

En fait, j'ai l'intention de :

  • mettre en œuvre des véhicules comme des conteneurs
  • simuler/déplacer ces conteneurs sur les routes basées sur des cartes .osm

Mon point de vue sur le problème :

J'ai chargé le fichier XML-based .osm et je l'ai traité en python à l'aide de xml.dom. Mais je ne suis pas satisfait des performances de chargement du fichier .osm car plus tard, je devrai ajouter/créer plus de véhicules en tant que conteneurs qui seront simulés sur la même route.

Suggestions nécessaires : C'est la première fois que je résous un problème lié aux cartes. En fait, j'ai besoin de suggestions sur la façon de procéder en gardant à l'esprit, la performance/l'efficacité, avec cet ensemble d'exigences. Des suggestions en termes de mise en œuvre seront très appréciées. Merci d'avance!

0
Asif Mehmood 8 oct. 2020 à 10:01

1 réponse

Meilleure réponse

Simuler de nombreux véhicules en exécutant de nombreux conteneurs docker en parallèle pourrait fonctionner, je suppose. Peut-être que vous initialisez la même image avec différents emplacements de départ, etc. transmis en tant que vars ENV ? En tant que moyen pratique de faire des simulations d'agents, cela me semble un peu sur-conçu, mais en tant qu'expérience de docker intéressante, cela pourrait avoir du sens.

Peut-être aurez-vous besoin d'un élément central pour conserver et partager l'état (les positions des autres véhicules) et le renvoyer aux multiples agents.

Le défi de charger un fichier .osm dans une sorte de base de données ou de représentation cartographique interne ne semble pas être la partie la plus difficile, et parce que cela peut être fait une fois lors de l'initialisation et imaginer que ce n'est pas la partie la plus critique en termes de performances.

Je pense que vous voudrez probablement faire un "routage" à travers le réseau routier (en tenant compte des sens uniques, etc.), en donnant à vos agents un chemin déterminé à suivre jusqu'à une destination. Cela deviendra plus compliqué si vous souhaitez modéliser les interactions avec d'autres agents, par ex. vous voudrez peut-être modéliser le blocage du trafic parce que d'autres agents suivent le même chemin, et même les décisions de réacheminement en raison du trafic, vous pouvez donc vouloir un système de routage assez flexible, peut-être auto-codé.

Mais il existe de nombreux systèmes de routage open source qui fonctionnent avec les données OSM, au moins pour s'en inspirer. Voir cette liste : https://wiki.openstreetmap.org/wiki/Routing#Developers

Les choix populaires comme OSRM sont conçus pour s'adapter à la taille du pays ou même aux données opentreetmap globales, mais j'imagine que c'est exagéré pour vous (vous cherchez probablement à simuler au sein d'un réseau routier urbain ?). Toutefois. Probablement assez facile pour travailler dans un conteneur docker.

Ou vous pourriez trouver quelque chose de léger comme le code du plugin de routage JOSM plus facile à intégrer dans votre image docker et personnaliser (bien que je vois que cela utilise une bibliothèque appelée "JGraphT")

enter image description here

Ensuite, en revenant à partir d'un itinéraire calculé, vous pouvez calculer des étapes interpolées le long de ce chemin, ce qui vous permettra de faire en sorte que vos agents simulés fassent un pas à chaque itération (mouvement simulé)

1
Harry Wood 14 oct. 2020 à 10:49