Livre pour apprendre les algo MinMax et Alpha/beta

fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008 - 8 déc. 2007 à 10:43
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008 - 6 janv. 2008 à 22:50
Bonjour,

Je voudrais apprendre les bases des l'algorithmes Min/Max et Alpha/Beta avec un bon livre pour débutant !

Mon but et de comprendre comment réfléchie une IA pour en developper une dans le cadre d'un morpion ou puissance 4 dans un premier temps.

De plus, si vous connaissez des ressources sur le net qui explique vraiment pas à pas ces deux algos avec si possible un exemple en vb.net ca serait génial :)

Merci à tous
A voir également:

101 réponses

mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
26 déc. 2007 à 12:59
Bon par contre, j'ai pas le temps de tchatter, je veux pas louper mon train, donc ben bonnes vacances, à dans 10 jours, et si j'ai le temps un après midi, je ferai un morpion avec IA sur vb6 (avec min max et alpha beta au choix) et je le posterai si tu veux pour que tu voies comment il marche.
Bonnes vacances, et à la prochaine.
(Ps: ça m'en a pris du temps ce problème dis donc, faut que je me mette à réviser moi x_x)

 Pourapprendretoujoursplus!
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
26 déc. 2007 à 13:01
Rouge haut gauche, vert milieu droit, rouge bas gauche, puis IA.

 Pourapprendretoujoursplus!
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
26 déc. 2007 à 13:02
Ah remarque je suis con, de toute façon le vert a perdu, attends j'en avais un autre, je regarde si il est bon ou pas.

 Pourapprendretoujoursplus!
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
26 déc. 2007 à 13:05
Ah non, l'autre c'est pareil, je suis trop con lol :p
Enfin bon pas grave, j'essaierai de faire les deux quand même, tu verras le gain de temps, j'optimiserai les deux de toute façon.
(Ps: tu vois que mon algo était bon, le problème venait de tes fonctions :-p)

 Pourapprendretoujoursplus!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
26 déc. 2007 à 13:08
Ah ce coup ci j'ai vraiment trouvé un truc qui n'allait pas:
Rouge milieu, Vert bas droite, IA, vert milieu gauche, IA  (le dernier IA n'est pas bon du tout ^^")
Te fais ça pendant les vacs, à plouche

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
26 déc. 2007 à 13:08
Donc au final l'algo marche enfin ou pas ?
Effectivement c'était mes fonctions qui plantaient !
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
30 déc. 2007 à 17:09
Salut, j'ai pu me connecter 2 minutes chez mon parrain, je te poste la source que j'ai faite dans le train, avec comme promis les deux algorithmes minmax et alphabeta.
Tout marche, je te laisse regarder.
(je te file le lien quand même:  http://www.vbfrance.com/codes/MORPION-IA-ALGORITHMES-MINMAX-ALPHABETA-DEBUTANTS_45226.aspx )
Bon sur ce, à plus et bonnes vacances.

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
30 déc. 2007 à 18:08
A mon sens, il y a une erreur :
Place un rouge en haut à gauche, un vert au milieu à droite et un rouge en bas à gauche puis tu fais IA minmax et il va se planter....
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
31 déc. 2007 à 23:10
Non: vert sait qu'il a perdu, et comme je l'ai mis dans le code en commentaire, quand il sait qu'il gagne (ou qu'il perd, comme ici), il va tout faire pour finir la partie au plus vite.
Dans le cas que tu donne, vert perd quoi qu'il arrive, et le programme marche comme je lui ai dit de marcher :)

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
1 janv. 2008 à 12:07
Exact j'avais vu ce point dans le code :)
Donc je vais me pencher un peu plus près...
Bonne année ! et merci
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
1 janv. 2008 à 22:52
Re,
Je crois que j'ai trouvé le bug !

  ScoreTemp = ScoreTemp + Profondeur 'Permet à l'ordinateur de toujours prendre le chemin le plus court pour gagner (ps: ça veut aussi dire que lorsqu'il sait qu'il a perdu, il va tout faire pour que la partie soit finie le plus rapidement possible, ne vous étonnez donc pas s'il a l'air de jouer n'importe quoi...)

La seule différence avec mon programme et le tien c'était cette subtilité qui me parraissait pas un soucis. J'ai essayé de rajouter le "+ Profondeur" pour voir comment se comporte l'IA et j'ai découvert qu'elle joue correctement comme la tienne !! (testé après moultes essais).

Ensuite, j'ai décidé de virer le "+ profondeur" dans ton programme pour voir si l'IA déconnait comme dans mon programme. ===> Resultat : OUI ^^ Donc j'en conclut que cette ligne est essentielle dans l'algo mais pourquoi ??

Je compile le programme et je te le met à disposition pour que tu puisses tester si tu as un peu de temps :)

Merci
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
1 janv. 2008 à 23:34
Voila la programme :
http://www.zonegeeks.com/temp/morpion.zip

Thanks et bonne vac :)
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
6 janv. 2008 à 16:03
Salut, injouable ton prog, j'ai lancé l'IA, j'ai dû arrêter le programme, au bout de 3 minutes de réflexion, il était encore entrain de réfléchir pour jouer le premier coup lol...
Soit y'a un bug, soit c'est pas optimisé du tout.
(Mon programme, même avec l'algo minmax, et pas alphabeta me donne le premier coup en 4 secondes...) Là, ton prog était parti pour me donner un résultat en (au moins!) 30 minutes (il était encore entrain de tester le premier coup possible pour l'IA: en haut à gauche, et les variations qui en découlent... Il n'avait pas encore même testé d'autre coup pour l'IA!)
Enfin bref, y'a un truc qui ne marche pas sur la version que tu m'as passé.

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
6 janv. 2008 à 19:43
Bizarre chez moi elle mets 10 secondes pour jouer le premier coup...
C'est normal c'est pas optimisé... QU'as tu fais exactement ? Tu as coché directement IA ? Et si tu joues en premier ?
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
6 janv. 2008 à 19:58
Si je joue en premier, ça me fait pareil, ça prend pas mal de temps (pas testé jusqu'au bout, ça prend trop de temps :/ )
mon pc est assez vieux, mais quand même... j'ai un P4 à 2.8GHz, il devrait me faire ça assez rapidement normalement.
OS: XP

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
6 janv. 2008 à 20:27
c dingue... meme avec un P4 2,8 Ghz ca devrait passer !!
Idem XP. Donc, je vais optimiser l'algo en ne montrant pas le détail c'est ca qui prend du temp et je te redonne la source.
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
6 janv. 2008 à 21:12
Voila c'est optimisé ! 10 sec pour le premier coup en debug et moins en release...
http://www.zonegeeks.com/temp/morpion.zip

J'espère que cette fois c'est bon :)
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
6 janv. 2008 à 21:31
Oui, c'est beaucoup moins long, mais encore trop long pour mon piti pc qui date...
(c'est 10 fois plus long que mon algo...)
Cela dit, je peux voir que ça marche au moins ce coup ci : )

 Pourapprendretoujoursplus!
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
6 janv. 2008 à 21:51
Pour l'optilisation, j'ai opté pour un tableau bi dimensionnel et puis je mets en string des couleurs (rouge ou vert) donc c'est pas la meilleur solution mais ca marche ^^
Cependant, je trouve ca bizarre que ca lag sur un P4... meme si je suis en core 2 duo...

Donc effectivement ca marche mais il fallait rajouter le

  ScoreTemp = ScoreTemp + Profondeur
'Permet à l'ordinateur de toujours prendre le chemin le plus court pour
gagner (ps: ça veut aussi dire que lorsqu'il sait qu'il a perdu, il va
tout faire pour que la partie soit finie le plus rapidement possible,
ne vous étonnez donc pas s'il a l'air de jouer n'importe quoi...)

Donc c'est obligé apparemment !

Merci pour tous, maintenant je vais décortiquer l'algo ALPHA/BETA pour voir un peu mais ca devrait pas trop etre diff quand on a compris le MINMAX :)

Thanks for all !
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
6 janv. 2008 à 21:57
Moi aussi je trouve ça bizarre, surtout que bon...
Mon programme: moins de 4 secondes de réflexion
Ton programme: de 35 secondes à 1 minute si il est déjà essoufflé par une première réflexion...
(Et je pense que ça aurait pris plus de 30 minutes avant ta dernière version !)
Mais bon ça marche, te reste plus qu'à regarder le alpha beta maintenant.
J'ai intégré le NegaMax dedans, ça complique un peu, mais ça prend moins de lignes de code.
sur ce, bonne continuation, à+

 Pourapprendretoujoursplus!
0