Graphique

Répondre


Aide syntaxe LaTeX
Les BBCodes sont activés
[img] est désactivé
[flash] est désactivé
[url] est activé
Les smileys sont désactivés

Revue du sujet
   

Si vous souhaitez joindre un ou plusieurs fichiers, complétez les indications suivantes.

Étendre la vue Revue du sujet : Graphique

Re: Graphique

par sos-math(21) » mar. 10 mars 2020 12:40

Bonjour,
J’ai initialisé la variable mini à une valeur arbitraire volontairement grande pour être sûr qu’elle soit minimisée dans le parcours des gares.
Si je l’avais initialisée à 0, elle n’aurait jamais pris la valeur minimale de la distance car celle-ci est forcément supérieure à 0.
Tu peux aussi l’initialiser avec la distance entre la gare de départ et la première gare de la liste.
Ceci dit, il est peut être plus efficace de prendre la deuxième version qui, elle, n’utilise pas cette variable mini et s’appuie sur des méthodes natives de Python pour le tri et le minimum, lesquelles sont optimales.
Bonne continuation

Re: Graphique

par Invité » mar. 10 mars 2020 03:31

Merci encore.

Par contre je ne suis pas sûr d'avoir bien compris : à quoi correspond le "5000" (mini) dans le programme ?

Re: Graphique

par sos-math(21) » lun. 9 mars 2020 19:57

Bonjour,
il faut que tu crées une liste liste_gares, une bonne fois pour toutes qui contiendra les couples (nom_gare,(latitude,longitude)).
Pour une gare de départ donnée, tu parcours la liste en calculant la distance entre la gare de départ et les gares de la liste .
Cela pourrait ressembler à cela (recherche du minimum naïf) :

Code : Tout sélectionner

 def plus_proche((depart, (x_depart,y_depart)):
       liste = [(nom_gare, (x,y)) for gare in liste_gares] 
       mini = 5000
       gare_plus_proche = depart
	for element in liste :
 	  if element[0] != gare and distance(depart,element)<mini :
 		mini = distance(depart,element)
 		gare_plus_proche = element
 	return gare_plus_proche
 
Ou alors sûrement plus rapide car utilisant les fonction de tri natives de Python : tu dresses la liste des distances de la gare de départ et tu tries cette distance par ordre croissant.

Code : Tout sélectionner

 def plus_proche(depart):
       liste_distances= [(nom_gare, distance(gare,depart)) for gare in liste_gares if gare!=depart] 
       liste_triee = liste_distance.sort(key=lambda x: x[1])
       return liste_triee[0]
 
Bonne continuation

Re: Graphique

par sos-math(21) » lun. 9 mars 2020 19:36

Bonjour
je te le répète une nouvelle fois : comment vas-tu t'y prendre pour déterminer la liste des gares à moins de 50 kilomètres du point de départ ? Tu seras bien obligé de regarder chacune des gares pour les éliminer ou les conserver...
En termes de nombres d'opération, je pense que cela sera aussi coûteux qu'un tri croissant qui lui te renverra directement la gare la plus proche en premier élément de la liste.
Je pense vraiment que tu n'as pas le choix dans la méthode....
Bonne continuation

Re: Graphique

par Invité » lun. 9 mars 2020 19:01

Bonsoir,

OK, je comprends bien. Il faudrait donc créer une liste qui contiendrait toutes les gares, de la plus proche à la plus éloignée d'un point de départ ? Pour créer cette liste, on calculerait toutes les distances avec geopy ou avec pyroutelib3 ?

Et quel serait l'algorithme de tri le plus adapté ensuite ?

Encore merci et bonne rentrée puisque je crois que vous étiez en vacances jusqu'à hier soir. Pour moi la rentrée c'est déjà passé depuis une semaine ! :)

Re: Graphique

par Invité » dim. 8 mars 2020 13:45

Je pense que je vais donc créer un programme qui permette d'obtenir la liste des gares à moins de 50 km d'un point avec la fonction distance écrite avec geopy.

Mais comment faire ceci ? Ou il faudrait ne prendre que celles d'une région et des régions limitrophes...

L'idéal serait d'avoir une liste des gares situées à moins de 50 km du point de départ. Il faudrait un algorithme de tri rapide pour cela ? J'en ai écrit un mais pas sûr qu'il soit très adapté...

Merci encore. Ce serait formidable si vous pouviez répondre dans mon message cet après midi puisque l'on est dimanche...

Je réponds dans le message :
je te le répète une nouvelle fois : comment vas-tu t'y prendre pour déterminer la liste des gares à moins de 50 kilomètres du point de départ ? Tu seras bien obligé de regarder chacune des gares pour les éliminer ou les conserver...
En termes de nombres d'opération, je pense que cela sera aussi coûteux qu'un tri croissant qui lui te renverra directement la gare la plus proche en premier élément de la liste.
Je pense vraiment que tu n'as pas le choix dans la méthode....
Bonne continuation

Re: Graphique

par sos-math(21) » sam. 7 mars 2020 19:48

Bonjour,
La distance a déjà été implémentée dans un script que je t'avais envoyé il y a quelque temps, en utilisant le module geopy.
le problème est que pour sélectionner les gares les plus proches dans un certains rayon, il faudra bien comparer et/ou trier les distances ce qui implique de passer en revue toutes les gares de la liste car sinon, comment savoir à l'avance quelles gares peuvent convenir puisque le point de départ va changer à chaque appel de la fonction ?
Décidément, je ne vois pas d'autre solution qui soit meilleure.
Bonne continuation

Re: Graphique

par Invité » sam. 7 mars 2020 13:58

Merci encore pour votre réponse.

Pour pyroutelib3, le prof a dit que c'était une suggestion.
Peut-être qu'il y a autre chose qui permet de calculer un itinéraire routier avec Python ?

Et cela me paraît vraiment "brute" effectivement de calculer l'itinéraire avec toutes les gares. On ne pourrait pas s'intéresser uniquement aux gares dans un rayon de 50 ou 60 ou 100 km par exemple ? On ne comparerait ensuite les itinéraires qu'avec les gares situées à moins de 50 ou 60... km du point de départ.

Ça vous paraît envisageable de faire ça en Python ? C'est une idée que j'ai eue ce matin... Y a t il un programme adapté ?

Bon après midi et bon week end.
Je vous suis infiniment reconnaissant.

Re: Graphique

par sos-math(21) » sam. 7 mars 2020 08:57

Bonjour,
si tu as le programme entre un point source et une gare, il te reste à appliquer ce programme à la liste des gares en ne conservant que le minimum.
Cela fait un peu "force brute" mais je ne vois pas d'autres solutions. Pour pyroutelib, je n'arrive pas à la faire fonctionner correctement chez moi et je me demande s'il peut répondre à toutes les demandes car je ne suis pas sûr qu'il ait toutes les routes de France en mémoire, notamment celles interdites aux poids lourds (car il s'agit bien de fret, donc de poids lourds, non ?).
Mais si ton professeur te dit que c'est ce qu'il faut utiliser, alors il faut que tu suives ces conseils.
Bonne continuation

Re: Graphique

par Invité » ven. 6 mars 2020 14:52

Merci pour la réponse.

Une "fonction qui prenne les coordonnées du point de départ et qui renvoie la gare la plus proche".

Le prof a suggéré lundi d'utiliser pyroutelib3. J'ai écrit un programme qui permet d'avoir la distance entre un point A et une gare, mais comment comparer maintenant les distances entre le point A et différentes gares? Pour ensuite récupérer la plus petite ? Comment déterminer quelles gares il faut comparer ?

C'est vraiment tout ça qui m'embête beaucoup et que je n'arrive pas à automatiser...

Bon apres-midi.

Re: Graphique

par sos-math(21) » ven. 6 mars 2020 09:10

Bonjour,
Je pense qu’il il faut que tu reprennes la listes des gares avec leur coordonnées gps et que tu crées une fonction qui prenne les coordonnées du point de départ et qui renvoie la gare la plus proche.
Cela se fait avec groom (voir une fonction distance déjà évoquée dans un de mes tout premiers scripts).
Bonne continuation

Re: Graphique

par Invité » jeu. 5 mars 2020 12:52

D'accord, je vais reprendre cela.

Et j'ai commencé à réfléchir à un autre problème : comment déterminer les gares les plus proches du point de départ ? Il faudrait comparer des distances...

Parce que l'on ne part pas de la gare, mais de l'usine.
Si vous avez une idée... J'y ai réfléchi ce matin.

Re: Graphique

par sos-math(21) » jeu. 5 mars 2020 07:41

Bonjour
Si tu regardes bien mon avant-dernier dernier message, tu verras que je t’ai mis un exemple d’appel de la fonction.
Relis le et tu comprendras.
Bonne continuation

Re: Graphique

par Invité » jeu. 5 mars 2020 01:51

Merci, je comprends mieux ! Je pense que je vais rester sur la version récursive.

Maintenant, je me pose une autre question : oû dans le code entre-t-on la gare de départ et d'arrivée ?

Par exemple si l'on veut appliquer l'algorithme de Dijkstra pour un trajet Angers-Marseille, oû saisit on Angers et Marseille dans le programme ? Ça je n'ai pas encore compris...

Encore une fois merci, j'apprends beaucoup.

Re: Graphique

par sos-math(21) » mer. 4 mars 2020 11:13

Bonjour,
c'est toi qui vois, le programme que je t'ai envoyé hier est pleinement fonctionnel, simplement la récursivité peut allonger le temps de recherche et il faut augmenter le nombre d'appels récursifs initialement prévu dans Python (1000 initialement que j'ai porté à 10000 avec la commande du module syst, c'est fait dans le script que je t'ai envoyé) :

Code : Tout sélectionner

import sys

# récupérer la limite
limite = sys.getrecursionlimit()
# changer la limite
sys.setrecursionlimit(10000)
Si tu as le temps, tu peux chercher à adapter la version de ton prof (qui doit être itérative) à ton type de données ou inversement adapter ton format de données à son programme. Dans tous les cas, c'est un bon exercice pour comprendre les programmes qu'il te propose.
Bonne continuation

Haut