begin process at 2012 05 27 18:45:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > MORPION AVEC IA MINIMAX OU GÉNÉTIQUE

MORPION AVEC IA MINIMAX OU GÉNÉTIQUE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :morpion, ia, intelligence, life, minimax Niveau :Débutant Date de création :01/06/2006 Vu / téléchargé :6 558 / 605

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


 Description

J'ai fais deux morpions : un ayant une IA classique, un minimax sans limite de profondeur, il ne vous apportera surement pas grand chose, l'autre morpion est un peu plus interessant, c'est en quelque sorte un jeu de la vie : on prend un certain nombre d'IA, (testé avec 10), chaqune de ces IA sont codés par un fichier qui détermine une certaine forme de mémoire. la mémoire leur permet de rejouer le coup sans y réfléchir, quand elles ne savent pas quoi jouer, elles jouent au hazard.
Avec ces 10 IA, on organise un tournoi :
make
./morpion -IA ai0 ia1 ia2 ia3 ia4 ia5 ia6 ia7 ia8 ia9

et on regarde les différents rounds qui défilent
à la fin du tournois, on a un classement qui s'affiche, les meilleurs IA muttent, et les plus nulles meurent (les fichiers sont remplacés)

ce qui fait que seul les meilleurs restent et que finalement, elles évoluent grace aux mutations, et aux coups au hazard...

Pour un morpion, je ne fais que montrer le principe, mais en appliquant ça à de meilleurs jeux, comme le puissance4 par exemple, on peut avoir des résultats satisfaisants, et battre un minimax... surtout si on applique un minimax à la place des coups aléatoires, et si on fait mutter un des coups joué lors d'une partie perdue, en lui appliquant lui aussi un minimax (dans mon morpion, les mutations sont aléatoires)



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   morpion
    •   ia_vierges
      • ia_0
      • ia_1
      • ia_2
      • ia_3
      • ia_4
      • ia_5
      • ia_6
      • ia_7
      • ia_8
      • ia_9
    • fonctions.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 200 octets
    • ia.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 455 octets
    • ia_0Télécharger ce fichier [Réservé aux membres club]74 940 octets
    • ia_1Télécharger ce fichier [Réservé aux membres club]74 796 octets
    • ia_2Télécharger ce fichier [Réservé aux membres club]74 796 octets
    • ia_3Télécharger ce fichier [Réservé aux membres club]74 892 octets
    • ia_4Télécharger ce fichier [Réservé aux membres club]74 940 octets
    • ia_5Télécharger ce fichier [Réservé aux membres club]74 940 octets
    • ia_6Télécharger ce fichier [Réservé aux membres club]74 796 octets
    • ia_7Télécharger ce fichier [Réservé aux membres club]74 916 octets
    • ia_8Télécharger ce fichier [Réservé aux membres club]74 916 octets
    • ia_9Télécharger ce fichier [Réservé aux membres club]74 940 octets
    • ia_load.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 253 octets
    • MakefileTélécharger ce fichier [Réservé aux membres club]248 octets
    • morpion.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 875 octets
    • morpion.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 109 octets
    • mutte.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 088 octets
  • morpion_minimax.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 132 octets

Télécharger le zip


 Sources du même auteur

[C ANSI] TAS (PRIORITY QUEUE)
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip Source avec une capture COMMENTAIRES DOXYGEN VERS VISUAL
Source avec Zip INTERPRETEUR D'UN LANGAGE PROCHE DU RPN
Source avec Zip FONCTIONS USUELLES (TRIGO) EN METAPROGRAMMATION

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture MORPION C++ (AVEC AFFICHAGE TEXTE PAS MAL), ET UNE SORTE D'I... par GUIGUI35400
Source avec Zip Source avec une capture MORPIONMAX: UN MORPION 10X10 par ndubien
Source avec Zip INTELLIGENCE ARTIFICIELLE AUX ÉCHECS. par manta7
Source avec Zip MASTERMIND CONSOLE AVEC INTELLIGENCE ARTIFICIELLE -- C (DEVC... par pyronet
Source avec Zip Source avec une capture SUDOKU par formule14

Commentaires et avis

Commentaire de Kirua le 02/06/2006 23:22:30

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 :).

Commentaire de rrk275 le 03/06/2006 01:08:44

Genial meme si je pense que devra t'y prendre differement pour stocker ton IA dans un P4...

Commentaire de coucou747 le 03/06/2006 13:58:09 administrateur CS

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...

Commentaire de Kirua le 03/06/2006 16:53:57

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.

Commentaire de coucou747 le 03/06/2006 17:14:50 administrateur CS

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...

Commentaire de rrk275 le 04/06/2006 19:08:28

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...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Concours IA (Intelligence Artificielle) [ par ynizon ] Je suis a la recherche de participants pour un ptit jeu sympa qui ressemble aux dames chinoises. Le but etant que chacun developpe sa propre IA, et l' pb avec un code [ par Saros ] J'ai un problème de compilation dans un code et je n'arrive pas du tout à savoir d'où ça vient le fichier source en question peut IA en MIPS pour le Jeu de Morpion [ par erkan1404 ] Bonjour, J'ai quelque petit soucis pour effectuer un IA en Mips (code assembleur), pour le jeu de Morpion. Si vous avez des idées par ou commencer j Streaming VLC [ par deffere2006 ] Salut à tous!! Je suis en train de realiser en c un programme qui recoit un flux video et l'envoye à un lecteur . Pour le moment je fais des tests sur jeux Morpion - puissances 4 [ par Lisandrelegrand ] Salut, je cherche un jeux de Morpion ou de puissances 4 en langague C comprenant le chainage avant-arriere (systeme expert AI) Merci pour votre aide. Morpion [ par Lisandrelegrand ] hello! je cherche un jeu de morpion en utilisant -> un système expert intégrant un moteur d’inférences utilisant des règles d’ordre 0.(sans utilser un probleme acces [ par deck_bsd ] Bonjour, Voila j'ai crée la procédure suivante : ---------------------------------------------------------------------------- void ReversD( Erreur de segmentation [ par Snacksou ] Bonjour à tous, je suis étudiant en informatique, et j'ai un algorithme à écrire. J'ai voulu le mettre en c pour le vérifier minimax? [ par Noir_sama ] tout d'abord bonjour à tous, ceci est mon premier post sur ce forum. je dois programmer une ia pour puissance 4 et on m'a conseillé d'utilis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales