Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1120 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Algorithme pour trouver le chemin le plus cours

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme pour trouver le chemin le plus cours

n°1272157
eltados
Posté le 23-12-2005 à 01:36:58  profilanswer
 

Bonjour et merci de vous interesser a mon probleme .
Voila je compte avec l'aides de plusieurs autres patenaire developper un jeu de strategie en langage java .. menfin bref ..
Dans ce jeu il y aura un carte ( genre carte Heroes ) et des unités ( genre Heroes )  tout ca pour faire deplacer des unités sur la carte ( genre Heroes ) .. peut etre que je devrais acheter heroes ?? :D
Bref j'aimerais pouvoir faire un algorithme permettant de trouver le chemin le plus court en 2 points de la carte ( chaque case a un coefficient de difficulté ) .. mais pour trouver un algo je seche et mes recherche sur le net ne sont pas tres ( pas du tout ) concluante .
J'ai dans mes recherches eu la presentations des algo de Dijkstra .. suis sur la bonne voie ?  
connaissez vous un moteur open source qui uilise ce type de calcul en java ?
 
Merci de l'aide que vous pourrez me fournir ...  
sur ce je vous souhate de joyeuses fetes ..

mood
Publicité
Posté le 23-12-2005 à 01:36:58  profilanswer
 

n°1272211
guguy
Posté le 23-12-2005 à 09:16:36  profilanswer
 

Dijkstra te donne un des chemins le plus court, pas LE plus court, mais
ca marche bien. Ca utilise des graphes.
 
En tappant "Dijkstra java" sur google la premiere page c'est :
 
http://www.cs.rpi.edu/~puninj/XMLJ [...] kstra.java

n°1272219
jeoff
Posté le 23-12-2005 à 09:36:52  profilanswer
 

Fait une recherche à "heuristique" pour trouver des algos "simples".
 
Les "méta heuristiques" permettront d'affiner les résultats donnés par les heuristiques mais les solutions données ne sont jamais certifiées comme étant les plus courtes si ton problème possède un facteur n assez elevé.
J'ai sur mon dd un fichier excel (en VBA) qui permet d'effectuer un "plus proche voisin" (heuristique) ainsi qu'une descente stochastique et un recuit simulé (metaheuristique).  
Ce fichier permet de calculer des tournées de véhicule, c'est à dire calculer la distance la plus courte en répartissant au mieux le volume des colis à charger.  
 
Si tu es interessé, viens en MP, tu n'aura qu'à t'aider de la partie optimisation de la distance et laisser de côté le problème de volume.


Message édité par jeoff le 23-12-2005 à 09:46:54
n°1272284
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 10:35:10  profilanswer
 

en général, on fait plutôt du A* ou un de ses dérivés, pour les pathfinders, non ?
 
Edit : enfin, ca doit être compris dans la réponse de jeoff, vu que ca se sert d'une heuristique pour le parcours :)


Message édité par theshockwave le 23-12-2005 à 10:36:03
n°1272458
eltados
Posté le 23-12-2005 à 12:57:33  profilanswer
 

vos reponses ont l'air tres interessante merci pour elle ...
"http://www.cs.rpi.edu/~puninj/XMLJ [...] kstra.java"
ce lien est mort chez moi a l'heure ou je parle ...
si tu as pu effectuer une rcherche de chemin le plus court jeoff je serais interessé par ton code vba ... jeoff.
J'aimerais savoir ce qu'est A*
 
Mais les algorithmes que j'ai pu voir s'appliquais sur de graph avec au plus 10 "cases" et seulement 2 chemins possibles par case ... et la je suis dans le cas d'un graph a plusieurs centaines de cases ( la carte est immense )
et chaque case offre 6 (ou 5 si on enleve la case source ) possiblités ( map basé sur des hexagones ).
voila :) je vais continuer mes recherches .. mais ce probleme necessite un niveau assez elevé de mathématique ?

n°1272464
Elmoricq
Modérateur
Posté le 23-12-2005 à 13:15:18  profilanswer
 

Tiens, le problème est intéressant.
 
Bon, je n'y connais rien du tout, raison pour laquelle je me permets d'intervenir : est-ce que dans ton cas ce ne serait pas plus simple de découper le chemin en n noeuds, des points de passage ?
Tu disposes les noeuds en utilisant une version grossière de l'algorithme, puis entre chaque noeud tu affines ?

n°1272474
ArthurDent
Posté le 23-12-2005 à 13:27:18  profilanswer
 

le A* est effectivement une bonne solution, tiens ya un tut sympa
 
EDIT : un autre article, en français cette fois : ici


Message édité par ArthurDent le 23-12-2005 à 13:31:42
n°1272479
jeoff
Posté le 23-12-2005 à 13:33:09  profilanswer
 

Il faut aussi que tu puisses modéliser ton problème.
 
Il y a deux grandes manières de la faire :
- faire un distancier à la main  
- fournir les coordonnées de chaque point de passage (distancier alors généré automatiquement)
 
Mais tu introduis une notion supplémentaire il me semble, le "coût" du chemin. Et dans ce cas là, soit tu fait le distancier à la main, soit tu ajoute une colonne supplémentaire à côté des tes coordonées et lors de la génération du distancier, tu appliquera ce facteur de difficulté au résultat. (je sais pas si je suis bien clair)
 
Comment calcule-tu la distance entre deux cases ? car tu mentionnes un coefficient de difficulté.
Pour le trouver il faut faire un calcul entre la valeur de la case de départ et celle d'arrivée ?
 
P.S.  
distancier : c'est un tableau à deux dimensions dans lequel tu indiques le "coût" du chemin
Par exemple pour des villes pour lesquelles l'aller n'est aps forcèment aussi long que le retour et invèrsement (distance au hasard):
                Paris    Bordeaux   Caen
Paris            0           936km   532km
Bordeaux     890km       0         472km
Caen           489km     511km      0
 
EDIT : on peux aussi modéliser ce genre de problème à la main.
un cercle représente un point de passage, un arc entre deux cercles représente un chemin possible.
Chaque arc porte un chiffre, le coût du chemin (en km par ex) mais plus il y a de places et de possibilités et plus c'est long à réaliser et illisible.


Message édité par jeoff le 23-12-2005 à 13:35:59
n°1272483
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 13:36:46  profilanswer
 

dans le cas mentionné, qui est un cas classique pour du jeu vidéo, c'est un coût de passage par un noeud et non pas un coût de passage par une branche ... mais je me permets d'insister sur le A*, qui est très adapté pour ce genre de problématique et est facile à implémenter

n°1272511
Profil sup​primé
Posté le 23-12-2005 à 14:29:49  answer
 

http://www-cs-students.stanford.ed [...] html#paths
 
Très bien fait, avec tout plein d'images. :D

mood
Publicité
Posté le 23-12-2005 à 14:29:49  profilanswer
 

n°2192800
abirch
Posté le 04-06-2013 à 23:37:12  profilanswer
 

bonsoir jeoff;
 
j'ai lu sur votre commentaire que vous aves un fichier excel (en VBA) qui permet d'effectuer un "plus proche voisin" (heuristique) ainsi qu'une descente stochastique et un recuit simulé (metaheuristique). est ce que vous pouvez le partager ici car je prépare un projet sur ce sujet .
merci d'avance :)  :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Algorithme pour trouver le chemin le plus cours

 

Sujets relatifs
Trouver IP dynamique en c++ ou en vbcours d'info
[KiX]Trouver à quel groupe appartient un utilisateurOu trouver des exemples de pages HTA ?
formulaire de type file et le chemin completActualiser les variables d'environnement au cours d'un BATCH
Graphe Orienté : existence chemin longueur k ?algorithme et programation pb
Récupérer le chemin d'un dossier cherché[Résolu!] Besoin de cours en C++ sur Marseille
Plus de sujets relatifs à : Algorithme pour trouver le chemin le plus cours


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR