MORPION AVEC IA MINIMAX OU GÉNÉTIQUE

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 2 juin 2006 à 23:22
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 4 juin 2006 à 19:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37899-morpion-avec-ia-minimax-ou-genetique

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
4 juin 2006 à 19:08
lol le 42! heu pour le P4 c'est pas super utile mais un jeu ou faut choisir un nombre
de points par piece ( echec .. ), la ca peut etre utile...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 juin 2006 à 17:14
le principe ce cette IA génétique, c'est simple

-on doit jouer :

--on vérifie que la partie en cours correspond à une partie enregistrée
--si elle correspond alors
----on extrait le coup
----on le joue
--sinon
--on prend un coup au hazard (mais valide sur la partie)
--on mémorise ce coup
--on joue ce coup

donc, tout les coups sont mémorisés...

cette IA légèrement améliorée donne :

--on vérifie que la partie en cours correspond à une partie enregistrée
--on tient compte des différents sens de la grille (une partie peut avoir 4 représentations en mémoires, en appliquant des roations...)
--si elle correspond alors
----on extrait le coup
----on replace le coup dans le bon sens (pour l'appliquer à la partie en cours)
----on le joue
--sinon
--on prend un coup en réfléchissant (coup valide et intelligent sur la partie, par exemple un minimax de profondeur n)
--on mémorise ce coup
--on joue ce coup

dans ce cas, les mutations devront être intelligentes, mais avoir une intelligence "meilleur" que le minimax de profondeur n... sinon, ça n'a aucun interet

Donc, on enregistre toutes les parties possibles.... enfin, on tient compte des rotations ou autres transformations, donc, ça fait un peu moins...

d'ailleur le nombre de parties possibles n'est pas 42!... mais pas du tout... il est bien inferieur, puisqu'on choisit une colone parmie 4... mais quand une colone est pleine, on ne peut pas y jouer... bref, j'ai trop la flème de calculer ça, mais ça doit être inferieur à 7^42...
voici une ligne de puissance 4
|O| | | | | | |
est la même chose que
| | | | | | |O|
donc, on peut y appliquer une transformation...
donc, 7^42/2 au max...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 juin 2006 à 16:53
42!, c'est beau :) N'importe quel PC qui se respecte doit pouvoir gérer ce nombre ^_^.

Je ne comprends pas bien pourquoi tu as besoin d'enregistrer toutes les parties.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 juin 2006 à 13:58
Kirua> Je peux optimiser quelquechose sur un morpion: diriger les mutations vers les parties perdues, et le faire choisir un endroit de mutation stratégique (là encore, c'est pour le moment aléatoire). Je peux aussi ajouter un champ nombre de pions joués, pour éviter une réplication complète du plateau avant la comparaison, surtout avec les rotations (la fonction is_similaire détermine si on peut par une rotation retrouver la partie), Mais pour le reste, c'est ridicul de l'optimiser à fond, pour un morpion... y ajouter un minimax pour déterminer le coup qu'une IA jouerait lorsqu'elle n'a pas mémorisé la partie, reviendrait à en faire une IA imbatable dès le départ... faudrait mettre ça sur un puissance 4...

Pour un puissance 4, on ne pourrait pas stoquer toute l'IA en mémoire, c'est pas possible, faudrait ruser, en se connectant à MYSQL (ou tout autre dysteme de base de donnée) je penses... enfin bon, on a (6*7)! possibilitées de grilles terminées... je vous laisse calculer le nombre de possibilitées de parties non terminées... je penses qu'une table MYISAM saturerait très très vite surtout si on y met un id_IA... (une table MYISAM peut contennir 2^32 lignes). Bref, je réfléchis encore à comment élargire ce programme...
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
3 juin 2006 à 01:08
Genial meme si je pense que devra t'y prendre differement pour stocker ton IA dans un P4...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 juin 2006 à 23:22
La description donne de jolis espoirs :) J'ai pas le temps d'analyser ni le code ni le rendu, mais rien que pour la forme, ce serait intéressant que tu gères ce "projet" comme un vrai projet de recherche en IA. A savoir, tu fais des essais, et tu fais systématiquement passer une série de tests qui permettent de "coter" le changement... Ca permettrait de voir quels "optimisations" en sont vraiment :).
Rejoignez-nous