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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

[Algo][Résolut]Cherche algorithmes pour le Jeu du Taquin

n°1379782
Profil sup​primé
Posté le 02-06-2006 à 13:31:41  answer
 

Reprise du message précédent :
un bon quart d'heure je crois, c'est proportionnel au nombre de matrices générées
 
mon problème doit ce situer au niveau de l'odre dans la structure Open, puisque
j'utilise le code A star que tu m'as donné, et Manhattan, que j'ai testé pure

mood
Publicité
Posté le 02-06-2006 à 13:31:41  profilanswer
 

n°1379976
Giz
Posté le 02-06-2006 à 15:42:49  profilanswer
 

ha ouai, 15 min ... et moi 1/3 de seconde, ... mon code est juste 3000 fois plus rapide :whistle:

n°1380207
Profil sup​primé
Posté le 02-06-2006 à 20:53:36  answer
 

je vien de mesurer, c'est 24 minutes même, :lol:  
Toute façon mon code est tout pourit, c'est n'importe quoi :cry:  
Si j'essaie de faire correctement ça marche encore moins  [:kernel-panic]  
c'est pour ça que je jetterais bien un oeuil sur le reste de ton code, :heink:

n°1380236
Profil sup​primé
Posté le 02-06-2006 à 22:17:14  answer
 

:sol:  [:666rip666]  :sol:  
 
Petit recore pour ton cas N° 1
 
j'obtien maintenant 56 deplacements, bon, toujours pas l'optimal selon toi mais,
selement 5427 matrice générées contre 19192 selon toi  :heink:  
en 1 minute, toujours plus que toi main 24 fois moins que mon résultat précédent  
 
Mon heuristique est "Mahattan distance" pure, tu as raison  :jap:  
 
Mon "Uniform" est le suivant

Code :
  1. Function Uniform(Precedente,Suivante,terminale : T_Matrice) return float is
  2.      Somme : constant Float :=
  3.      Heuristic(suivante,Terminale) -
  4.      Heuristic(precedente,Terminale) + 2.0;
  5.   begin
  6.      Return Somme;
  7.   end Uniform;


 
Qu'en penses-tu, Giz ?
 
Edit : Même topo pour le cas N° 3
 
292445 matrices générées contre 2_005_778  :lol:  
59 deplacements pour ranger la matrice contre 47  :heink:  
un peut moins de 50 minutes contre 10 secondes  :cry:  
 
par contre, je ne sais plus quoi faire pour trouver l'optimal, ni pour diminuer les temps de resolution  :??:


Message édité par Profil supprimé le 02-06-2006 à 23:58:17
n°1380582
Profil sup​primé
Posté le 03-06-2006 à 21:21:55  answer
 

Ouf ...
j'ai enfin trouvé l'optimal pour le cas N°1, mais en 68874 matrices au lieu de 19192 :pfff:

n°1380971
Profil sup​primé
Posté le 04-06-2006 à 20:29:14  answer
 

Petit record de vittesse,  :sol:  [:666rip666]  :sol:  
Pour le cas N°1, j'obtien 68 deplacement,certe c'est pas l'optimal
mais en 650 matrices seulement
 

n°1381108
Giz
Posté le 05-06-2006 à 09:24:48  profilanswer
 


 
Ecoute je ne veux pas te decevoir, mais pour une solution non optimal, c'est lamentable 650 matrices générées. Pense pour résoudre le problème non à l'optimal (juste trouver une solution) à un algorithme type depth first. Tu devrais généré au mieux ~50 matrices (moyenne des profondeurs pour une matrice 4*4).
 
EDIT : j'ai pas compris ta formule de calcul du cout uniform...tu cherches a faire quoi ?
 
EDIT 2 : en permettant pas mal de memoire a la jvm (par -Xmx512m), je suis un peu plus rapide encore car la memoire n'est saturé qu'à moins de 50% je pense donc le risque que le garbage collector s'active (ce qui coute du temps) est moindre donc il ne s'active pas (contrairement à si la mémoire est quasi pleine si je mets -Xmx128m)

Message cité 1 fois
Message édité par Giz le 05-06-2006 à 09:45:42
n°1381187
Profil sup​primé
Posté le 05-06-2006 à 10:58:15  answer
 

Giz a écrit :

Tu devrais généré au mieux ~50 matrices (moyenne des profondeurs pour une matrice 4*4).


Alors c'est décevant,
Bonjour Giz,
Ecoute, j'ai passé le week end a mettre mon algo dans tous les sens, et je n'est toujour pas trouvé l'equivalent de tes resultats  :cry:  
j'ai bien trouvé l'optimal mais en 3,6 fois plus de matrices que toi  :(  
Y a t-il moyen de jeter un oeuil sur le reste de ton code s'il te plait  :p  
 

n°1381199
Giz
Posté le 05-06-2006 à 11:22:18  profilanswer
 


 
arf, il faut persévérer ! d'abord ne regarde pas l'optimisation (résoudre le plus vite possible), mais fait quelquechose qui marche, cad qui trouve l'optimal.
Je pense t'avoir filer le code le plus difficile : celui de A*. Il te reste à :
1) savoir générer les successeurs d'un plateau
2) savoir évaluer un plateau (son cout uniforme et son cout heuristique)
3) savoir dire si un plateau est solution ou non, auquel cas, la recherche est fini s'il est solution.
 
Franchement, c'est le plus dur que je t'ai filer en code. Courage, tu vas y arriver ! moi j'avais passé 2 week end pour faire un truc qui marche en C la première fois :).
 
EDIT : si c'est moi qui te dis tout, tu n'auras aucune autosatisfaction quand ca marchera, ce qui est très démotivant :/.


Message édité par Giz le 05-06-2006 à 11:23:12
n°1381222
Profil sup​primé
Posté le 05-06-2006 à 11:56:36  answer
 

merci Giz de t'inquiéter de mon amour propre,
 
1 : les successeur Ok, j'ai quatre fonction up,down,left, rigth qui renvoient les identifiant des voisin s'ils existent
 
2 : pour l'heuristique j'ai evalué Manhattan distance pure et Manhattan distance + le comtage des tuiles mal placées
      Et tu m'a dis d'utiliser Manhattan distance pure, ce que j'e fait
 
     pour l'uniforme j'ai evalué 1.0, 2.0 0.1 0.01 et l'heuristique de
     mon post precedant qui donne un cout relatif à la nouvelle
     distance par rapport à la précédente  
 
3 : faudrait quand même pas pousser mémé dans les ortis
 
l'optimal je l'ai, mais en 3,6 fois plus de matrice que toi
ça fait 15 jour que je suis sur l'affaire
Même si tu me donne ton code, j'aurais la satisfaction de le traduire en Ada
 
 :??: 50 matrices pour trouver une solution ça me parait un peut court quand même !!!
 
Pour l'instant, pas question d'optimisation, de toute façon je vois pas comment optimiser mon impémentation afin de rattraper mon retard par rapport à tes résultats, la difference est trop importante  
 
Malgrés mes effort, je n'arrive pas, à priori, à extraire l'élément min de Open.|
 

mood
Publicité
Posté le 05-06-2006 à 11:56:36  profilanswer
 

n°1381237
Giz
Posté le 05-06-2006 à 12:20:41  profilanswer
 

Tu as une liste de plateau dans Open, chaque plateau a été préalablement évalué et tu me dis que tu n'arrives pas à extraire le plateau de coup le plus petit :heink: ... je vois pas le problème la :/.
 
Pour le cas 1) et 2) as-tu testé les fonctions indépendamment/par débuggeur pour voir si elles marchent correctement ?.
 
Si tu as l'optimal, pourquoi as-tu alors des problèmes encore ?? ... tu peux passer à l'optimisation dans ce cas.

Message cité 1 fois
Message édité par Giz le 05-06-2006 à 12:21:58
n°1381253
Profil sup​primé
Posté le 05-06-2006 à 12:46:49  answer
 

Giz a écrit :

Tu as une liste de plateau dans Open, chaque plateau a été préalablement évalué et tu me dis que tu n'arrives pas à extraire le plateau de coup le plus petit :heink: ... je vois pas le problème la :/.
 
Pour le cas 1) et 2) as-tu testé les fonctions indépendamment/par débuggeur pour voir si elles marchent correctement ?.
 
Si tu as l'optimal, pourquoi as-tu alors des problèmes encore ?? ... tu peux passer à l'optimisation dans ce cas.


 
mes fonction donnant les successeurs fonctoinne, pour la distance de Manhattan, je connais suffisement l'Ada pour savoir qu'elle est juste
 
mais tu à raison je pèche un peut concernant, le coût ? . vu que ça marche pas, j'ai tout mis en doute.
 
j'ai bien trouvé l'optimal mais en 3,6 fois plus de matrice que toi, dejas qu'il me faut 200 fois plus de temps pour en générer autant, imagine

n°1381270
Profil sup​primé
Posté le 05-06-2006 à 13:28:48  answer
 

D'ailleur, j'ai toujours pas fixé uniform et c'est bien ce qui m'embete

n°1381330
Giz
Posté le 05-06-2006 à 14:43:53  profilanswer
 

pour le coût heuristique, tu prends manhattan distance. Pour le cout uniforme, il est de un a chaque fois que tu fais un mouvement (donc ce cout augmente de 1 pour un plateau successeur par rapport a son predeccesseur).
Donc si tout marche (tu trouves tout le temps l'optimal), redonne moi tes perf après optimisation.
Si 4*4 c'est trop long pour toi, je peux t'envoyer des tests optimaux sur des 3*3 pour verif ton prog. A toi de voir.

n°1381350
Profil sup​primé
Posté le 05-06-2006 à 15:03:02  answer
 

Oui 4x4 c'est un peut long pour faire des tests, enfin même le cas N° 1 est un peut long
 
Avec uniform = 1, je crois que j'ai tout essayé, j'y retourne quant même
 
 

n°1381357
Profil sup​primé
Posté le 05-06-2006 à 15:10:39  answer
 

wai, ben ça marche pas, y a autre chose, mais je sais quoi, que j'ai pas pigé, c'est l'élément min
Dans les publication, donc, il est ecrit : trier selon f(n) dans l'odre croissant puis selon g(n) dans l'ordre decroissant
j'ai tout essayer, et ça marche pas !
bref je recommence avec uniform = 1, ça va dejas diminuer le nombre de mes combinaisons possibles

n°1381363
Profil sup​primé
Posté le 05-06-2006 à 15:15:06  answer
 

Merci, merci Giz

n°1381376
Giz
Posté le 05-06-2006 à 15:27:28  profilanswer
 

au début, ton coût uniforme pour ton plateau de départ est de 0 ! (tu n'as pas fais de mouvement encore).
Pour le tri, fait le suivant f(n) seulement, ca ne changera rien sur l'optimalité. Ensuite tu peux trier sur un deuxième critère, présent que pour être plus rapide (mais non nécessaire) - moi je le fais sur h(n) et non sur g(n).

n°1381433
Profil sup​primé
Posté le 05-06-2006 à 16:38:31  answer
 

bon, et bien ça marche pas. |
donc au mieu j'ai 44 deplacement en 68874 matrices générées.

n°1381445
Giz
Posté le 05-06-2006 à 16:47:27  profilanswer
 

he ben c'est bon, tu as l'optimal, essaie sur les autres matrices pour voir. La rapidité de résolution dépend grandement du nombre de matrices générées...bref c'est de l'optimsation ça....
 
Indice d'optimisation n° 1 : afin d'être nettement plus performant, ne pas compter la distance de manhattan du jeton vide, mais celle de tous les autres jetons que l'on somme afin de donner le cout heuristique du plateau ;).


Message édité par Giz le 05-06-2006 à 16:49:45
n°1381486
Profil sup​primé
Posté le 05-06-2006 à 17:21:41  answer
 

J'ai lancé le cas N° 3 hier, j'en suis a 3_000_000 de matrices générées, le but est à un peut plus de 7_000_000, le resultat demain donc
 
pour ce qui est d'esquiver le 0 dans la distance de Manhattan j'y ai déjàs pensé, penses-tu ? Et dans mon cas, ça change rien.
Je dis dans mon cas car en fait mon uniform est celle que j'ai donné un peut plus haut.
 
Par acquis de conscience, Giz, f(n) = ucost+hcost ?  :??:  [:dawa_neowen]  

n°1381489
Profil sup​primé
Posté le 05-06-2006 à 17:23:35  answer
 

Non tu à raison, uniform = 1, ça donne le même resultat, mes plus plates excuses

n°1381515
Giz
Posté le 05-06-2006 à 17:48:18  profilanswer
 


 
 :jap:  
 
Oui je le pense surement (déjà testé).

n°1381523
Profil sup​primé
Posté le 05-06-2006 à 17:56:16  answer
 
n°1381542
Giz
Posté le 05-06-2006 à 18:13:59  profilanswer
 


[:jim's]
 
:??:

n°1381548
Profil sup​primé
Posté le 05-06-2006 à 18:19:42  answer
 

Ben tu pense, ou t'es sure, t'a testé, peut-etre,  
je suis surpris de la formulation de ta reponse,

n°1381564
Profil sup​primé
Posté le 05-06-2006 à 18:40:51  answer
 

Bref,
je mes resolut dans le titre du topic,
ou tu pense que je peut faire en sorte
d'obtenir les mêmes resultats que les tiens ?  :sol:

n°1381587
Profil sup​primé
Posté le 05-06-2006 à 19:07:27  answer
 

Bon, j'affine mon trie, excuse moi Giz, je suis pas très fort,
 
j'ai reussi à descendre à 27112 matrice générées, toujours pour un compte optimal de rangement

n°1381794
Giz
Posté le 06-06-2006 à 09:34:16  profilanswer
 


 
OK, et t'arrive à résoudre mes trois exemple à l'optimal ?
Je disais que je suis sûr que de ne pas compter le 0 permet d'avoir de meilleur résultats (plus rapide).

n°1381854
Profil sup​primé
Posté le 06-06-2006 à 10:49:27  answer
 

Giz a écrit :

OK, et t'arrive à résoudre mes trois exemple à l'optimal ?
 
Je disais que je suis sûr que de ne pas compter le 0 permet d'avoir de meilleur résultats (plus rapide).


 
Bonjour Giz,
 
ben, j'ai lancé le cas N°3, j'attend les resultats,
 
Quant a l'esquive du 0 dans Manhattan distance, dans mon cas, ça n'a pas beaucoup d'effet  :??:  
 
Pour l'instant mon meilleur resultat pour le Cas N°1
est 44 deplacement, ok, et 25957 matrices générées
j'ai pas encore réussi à descendre en deça

n°1381875
Giz
Posté le 06-06-2006 à 11:03:16  profilanswer
 


 
Ben pour le nombre de déplacements, j'espère que tu n'arriveras pas à descendre en dessous ;) (sinon mon algo est faux :whistle:). Pour le nombre de matrice générés, tu peux améliorer encore (toujours d'après mes résultats).
Si tu désires, je te donnerai demain des jeux de tests sur d'autres matrices 3*3 pour bien voir si ton optimalité marche (ce qui reste le plus important)

n°1381879
Profil sup​primé
Posté le 06-06-2006 à 11:08:14  answer
 

Si tu as des matrice 5x5, je suis preneur aussi  ;)

n°1381940
Giz
Posté le 06-06-2006 à 11:52:56  profilanswer
 


 
impossible à résoudre à l'optimal :o avec A*. Faudrait que je lance la résolution pendant plusieurs heures avec RBFS pour trouver l'optimal ;). Ca 'tintéresse vraiment des 5*5 ? :whistle:

n°1381981
Profil sup​primé
Posté le 06-06-2006 à 12:45:21  answer
 

oh que oui, ça m'interresse,
il faut que je verifie que l'algo est valable pour n'importe quelle taille de matrice !!! :heink:  

n°1382010
Giz
Posté le 06-06-2006 à 13:25:59  profilanswer
 

très bien, as-tu une matrice 5*5 pour laquelle tu as une solution ? qu'on vérifie sur la même (passe moi motif de départ et d'arrivé)
 
NB : c'est bon, j'ai corrigé et je gère maintenant n'importe quelle matrice d'arrivée :).


Message édité par Giz le 06-06-2006 à 13:36:41
n°1382152
Profil sup​primé
Posté le 06-06-2006 à 15:40:39  answer
 

je te propose de jouer avec celle-ci, pas trop melangée
 
10|24|22| 3|20
---------------------
12|  2|  1|15| 5
---------------------
17|13|  0|18| 7
----------------------
11|  9|19|  6|16
----------------------
  4|23|21| 8|14  
 
la matrice cible est une matrice ordonnée de gauche a droite/ de haut en bas avec zero central (en 3.3)
est-ce ok ?

n°1382157
Profil sup​primé
Posté le 06-06-2006 à 15:43:41  answer
 

A wai, j'ai pas encore la solution mais j'espere que ça va pas tarder !!!

n°1382160
Giz
Posté le 06-06-2006 à 15:46:11  profilanswer
 

OK, mais mefie toi certain problème sont insolubles...
 
RQ : ok pour la cible :
 
1 2 3 4 5
6 7 8 9 10
11 12 0 13 14
15 16 17 18 19
20 21 22 23 24

Message cité 1 fois
Message édité par Giz le 06-06-2006 à 15:46:55
n°1382182
Profil sup​primé
Posté le 06-06-2006 à 16:06:00  answer
 

Giz a écrit :

OK, mais mefie toi certain problème sont insolubles...


j'aime pas quand tu dis ça  :(  
 
pour moi un Taquin insoluble, c'est un taquin qu'on aurait demonté et remonté n'importe comment !!
Si c'est ça que tu veut dire, alors d'accord,
 
et si tu crois que je t'ai envoyer n'importe qu'elle matrice,
sache que je melange les tuiles avec les methodes down up left et right que j'utilise pour ranger les matrices,  
 
on est ok sur l'exo 5x5,
j'ai lancé mon algo le plus rapide dans un premier temps pour avoir une idée de l'e/ampleur du problème !!


Message édité par Profil supprimé le 06-06-2006 à 16:07:14
n°1382225
Giz
Posté le 06-06-2006 à 16:52:23  profilanswer
 

Insoluble ca veut dire qu'il n'existe pas de chemin possible pour arrivée au plateau de fin en partant du plateau de départ. Lancé ton algo le plus rapide certes, mais faut être sur d'avoir l'optimal sinon, même une matrice 5*5, ca se résoud rapidement ! Moi je vais chercher à le résoudre à l'optimal.

n°1382550
Profil sup​primé
Posté le 07-06-2006 à 09:06:31  answer
 

Bonjour Giz,
je n'ai toujours pas de resultats pour la matrice 5x5 ce matin,
j'ai pris un peut de retard hier soir parce que j'ai à nouveau chercher à diminuer
le nombre de matrices générées par mon algo
et je n'ai gagner que 33 matrices pour le cas N°1.
Alors ce matin j'ai encore trois questions : utilises-tu un algorithme "branch and bound" ?
Si non, quel startagène à tu mis en place ?

 
Moi j'ai beau trier par f(n') Ok, puis par g(n') ou h(n') (c'est egal en fait) j'obient toujours 25957
25924 maintenant que je supprime les doublons dans ma liste Open
 
Si tes reponse à mes question sont non et aucun,  
vu que nous sommes sensés avoir le même algorithme,  
d'une part, je vais continuer a chercher du côté du trie, mais je crois que c'est rapé
d'autre part, j'envisage de metre en place une sorte de "branch and bound" mais je n'ai aucune idée
de "comment determiner si une branche est interressante ou non" ?
En as-tu une idée ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
Cherche tuto pour creation de site a à zcherche source puissance 4 C (mode console sans IA)
Cherche programmeur jeu videoCherche piste de travail
Cherche composant genre collapse panelcherche compilo
Cherche docs/info sur threadsCherche editeur de texte html/php/js
cherche confirmé en vb6 pour bug dans projet open sourcecherche confirmé en vb6 pour bug dans projet open source
Plus de sujets relatifs à : [Algo][Résolut]Cherche algorithmes pour le Jeu du Taquin


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