9
votes

Utilisation de la géolocalisation sur Google Map pour regrouper les élèves à la maison par les emplacements les plus proches les uns des autres?

J'ai beaucoup de points sur Google Map qui représente les maisons des étudiants

J'ai aussi beaucoup de bus.

Je dois regrouper des étudiants en fonction de leurs emplacements en regroupant les étudiants les plus proches les uns aux autres avec le même bus.

Donc, le chauffeur de bus les fera à l'école.

Des idées sur l'algorithme à ce sujet? des idées ??


4 commentaires

Avez-vous des itinéraires cartographiés pour les bus? Et / ou des emplacements Lat / Lng pour chaque arrêt Le bus fait le long de son itinéraire?


En fait, la route du bus est le lat / gnng de la maison des étudiants et c'est ce dont j'ai besoin d'algorithme pour déterminer> Je souhaite déterminer la route de chaque bus de l'emplacement de l'école au groupe d'étudiants qui se trouvent à proximité de l'autre.


Avez-vous déjà trouvé une solution pour votre problème? Je dois atteindre exactement la même chose ...


mobile-type.co.uk/scripts/latlong.html Ceci Le site Web peut aider à calculer la distance entre deux points en utilisant LAT / LONG


6 Réponses :


0
votes

aimer le projet ..... devrait être amusant

Je séparerais correctement la carte et je tiens à faire un autobus responsable de chaque zone et que certaines procédures sûres (dans le cas échéant, dans la région, avec 99% des étudiants, dans lesquelles les régions changent de manière dynamique pour faire il est plus même). Vous pouvez également le faire pour que, si l'itinéraire d'un bus finit par être plus de 20% d'autres bus, que de réduire les élèves de ce bus.

De là, chaque bus aura des étudiants à partir de laquelle vous pouvez calculer un itinéraire. Il sera toutefois beaucoup de travail pour créer un algorithme qui calcule la meilleure route pour plusieurs bus.

Vous voudrez peut-être envisager des services qui le font déjà, tels que mapbox. Cela rendrait votre vie beaucoup plus facile mais cela entraînerait également un coût continu.

espoir que cela aide


1 commentaires

tu veux dire mapbox.com? Je n'ai pas trouvé de fonctionnalité fournissant le regroupement de points de géolocalisation ...



4
votes

Je ne suis pas tout à fait sûr si j'ai complètement compris votre question (surtout comme vous le mentionez de votre commentaire que "la route du bus est la lat / gng de la maison des étudiants"). Donc, je suppose que vous n'avez donc pas d'itinéraires de bus prédéfinis mais que vous voulez trouver les meilleurs itinéraires possibles.

Maintenant, nous devrions diviser la tâche en sous-tâches, après mes hypothèses, nous pouvons dire que:

  1. Vous avez besoin d'un algorithme pour affecter des étudiants-maisons au plus proche arrêt de bus. Les arrêts de bus pourraient être prédéfinis ou non - vous devez Clarifiez si les arrêts de bus sont définis ou non.

  2. Depuis que vous avez plusieurs bus, chaque bus doit être attribué à un groupe de bus-buts (permet de l'appeler une zone de bus) qu'ils sont responsable de l'arrêt de.

  3. Ensuite, vous devez résoudre le TSP (Problème de vendeur de voyage) pour chaque zone de bus (groupe de bus de bus).

    Solutions possibles

    1 - Ce que vous voulez regarder est de comprendre les points de groupe (signification dans ce cas - étudiants-maisons) définis par (lat , lon). Pour ce faire, vous devez être capable de calculer la distance entre deux points de la planète, le Formule Haversine est largement utilisé pour cela. Vous pouvez trouver beaucoup d'implémentations existantes si vous recherchez cela - voici une simple implémentation de JS: xxx

    Il existe également une fonction implémentée dans l'API V3 Google Maps, vous pouvez trouver plus d'informations sur ce donc question .

    Donc, si vous avez des arrêts de bus prédéfinis, il s'agirait simplement d'calculer la distance de chaque étudiant-home à chaque arrêt de bus, puis de regrouper chaque élève à son arrêt de bus le plus proche (ce qui signifie le plus bas distance calculée)

    En fonction de la quantité de données / calculs nécessaires à votre projet, vous pouvez envisager de déménager à une solution backend au lieu de le faire dans le client.

    2 - Encore une fois, cela dépend des exigences de votre projet, si vous avez des zones de bus prédéfinies (polygones), vous déterminez simplement quelles arrêts de bus appartiennent à chaque zone de bus. Ceci est simplement le problème de la résolution Point en polygone pour une sphère. Si vous avez besoin de votre propre recherche de mise en œuvre, il y a beaucoup de solutions existantes disponibles. Othwerise Google Maps API V3 a une fonction contenant () que vous pouvez utiliser: xxx

    3 - Il y a beaucoup d'informations sur la résolution du TSP. Une bonne solution pour obtenir la route la plus rapide dans Google Maps est Optimap . Le code source est également disponible . Vous devriez pouvoir l'exécuter pour chaque zone de bus (groupe de bus de bus).


0 commentaires

0
votes

Vous pouvez essayer un cluster hiérarchique pour regrouper les étudiants. Ensuite, vous pouvez utiliser un algorithme de TSP ouvert pour trouver un itinéraire. Optimap de GebWeb est un solveur gratuit. Pour regrouper les étudiants, vous pouvez rechercher Clusterfck JavaScript. Vous pouvez également essayer une heuristique comme l'algorithme d'épargne.


0 commentaires

0
votes

L'approche de la force brute

Si vous savez où les bus sont et que vous avez tous les emplacements des étudiants, vous devez calculer la distance de tous les élèves par rapport à tous les arrêts de bus. Pour chaque élève, triez leurs distances à chaque arrêt de bus et attribuez-les à l'arrêt de bus le plus proche.

Optimisation 1

Éliminez les arrêts de bus pour certains étudiants. Certains arrêts de bus n'ont pas besoin de la distance calculée et que vous le savez peut-être tout de suite. Vous pouvez dire que si un étudiant appartient à un quadrant. Ensuite, vous n'auriez besoin que de calculer la distance pour un sous-ensemble de bus (seulement 1 / 4ème au lieu de tous). Cela pourrait entraîner des situations intéressantes aux frontières, mais vous pouvez en expliquer cela.

Optimisation 2

Sur la base de l'optimisation précédente, vous pouvez le faire plus loin, jusqu'à ce que vous êtes essentiellement garanti de ne pas calculer de distances. Si un utilisateur tombe dans certains nœuds, ils finiront par aller à un arrêt de bus. Vous superposez essentiellement une grille sur votre carte si un étudiant tombe dans un nœud de grille, ils iraient à cet arrêt de bus. Le problème précédent est également résolu. Peu importe que la distance à un arrêt de bus soit légèrement plus longue puisqu'elle est relativement triviale. Vous pouvez toutefois garantir une distance maximale parcourue pour tout élève.

Solution

Chaque bus a une zone facieuseable (une boîte à succès). Pour chaque élève dans un quadrant / noeud, déterminez s'ils entrent dans une zone de service de bus. Si ce n'est pas la bulle jusqu'à un quadrant / nœud de niveau supérieur.


0 commentaires

0
votes

Oui, j'ai utilisé cela avec plus de 500 marqueurs à la fois, je peux vous envoyer des liens pour votre aide: Premier lien Deuxième lien

Lisez-le et appliquez à l'aide de la matrice.


0 commentaires

2
votes