Ia d'échec

Signaler
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
comment faire une ia performante pour un jeu d'échec en c?
merci

8 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006

Bon courage pour une IA d echec!!
en fait la seule methode valable c est l algorithme alpha-beta, tu doit trouver pas mal de doc sur cet algo en cherchant un peu sur google
Messages postés
8
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
29 juin 2004

Et une IA, tout simplement (pas nécessairement pour les echecs...), c est dur a mettre en place?
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006

Ca depend vraiment de ce que tu veux faire, mais sache qu en general c est dur! L intelligence artificielle est un domaine de recherche tres pointu, et qui n a pas apporte beaucoup de reponses a des questions importantes a cause de la complexite de la chose. Si tu veux un apercu de certaines methodes, reporte toi aux excellents articles de Fabrice Rossi prus dans Linux Magazine (sur la reconnaissance de forme ce mois ci). Son site est apiacoa.org.

En fait une IA d echec est un exemple assez simple!!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
MetalDwarf, finalement, tu me rassure, c'est assez simple... Mais, c'est pas gagné quand même, depuis le temps que j'ai posé cette question (et en aditionnant le temps que j'ai passé a y réfléchir avant) je devrais avoir trouvé... mzi j'ai un petit problème et pas des moindre, j'ai pas mis une seule struct, et pas mis mon échiquier dedans (et rendu a 1600 lignes, metre un fichier a la corbeille, c'est chiant). J'ai trouvé un algo dans un linux mag : minimax, et j'aimerais savoir si c'est mieux que AB car selon ce que l'on dit AB est lent (et j'adore jouer aux échecs donc, je voudrais des parties plutot rapides). J'ariverais facilement a y ajouter une base de donnée, mais plu tard, pour le moment, je cherche une ia simple
Donc, j'ai pas mis une strucs, j'ai fais les fonctione echecblanc, echecnoir, droitblanc, droitnoir, main, et affichage, mais y a encore des bugs sur l'enregistrement des coups et les roques. J'ai pas mis d'interface graphique (pour plus de simplicitée et de portabilitée, j'ai besoin d'aucune librairie spéciale).
Donc, voila, je me suis renseigné, et dans les sources que j'ai croisé, j'ai rien compris, pourtant, j'ai fais des efforts (mais je commence le C depuis un an ... lol... Je fais aussi du javascript, et du tchat, donc, j'y passe pas bcp de temps...)
Donc, j'aimerais savoir si qqn savait comment incruster de la récursivitée dans un programme aussi mal débuté que le mien.
Messages postés
5
Date d'inscription
samedi 24 juillet 2004
Statut
Membre
Dernière intervention
28 août 2004

Aucun programme d'échecs performants ne s'appuie sur l'IA (Cf fritz, Deep junior, Crafty, Shredder).
En général, ils s'appuient sur 3 fonctions principales,
- alpha/beta,
- mini/max,
- évaluation,

Les 2 premières sont archi connues.
La dernière, en revanche, est la plus délicate car elle est entièrement personalisées.

Essaient ces sites ou tu trouveras de l'info en abondance

http://malin.webhostme.com/chess/links/Default.asp?tema=10/url

http://www.xs4all.nl/~verhelst/chess/' target='_blank'>http://www.xs4all.nl/~verhelst/chess/

http://www.cis.uab.edu/hyatt/pubs.html

Bon courage :)
Messages postés
19
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
17 août 2004

hello

j'ai travaillé un peu sur l'IA, sur des jeux très simples : morpion, puissance 4, jeu des allumettes,... (je te conseille fortement de commencer par ça...)

c'est compliqué, mais ac de la doc (notamment sur minimax, alpha-betha) tu peux créer un petit moteur d'IA en quelques heures si tu tatouilles en C.

Mais ces fonctions minmax & A-B ne sont qu'une petite partie du code, le plus fastidieux est la (les) fonction(s) d'évaluation des coups; c'est la fonction d'évaluation qui est la plus importante dans le code.
La fonction de coupure (A-B) doit être optimisée un maximum, car elle consomme bcp de CPU (elle supprime tous les coups "inutiles" à calculer ; minmax sert à choisir le meilleur coup en remontant successivement les min puis les max des scores jusqu'à la racine de l'arbre de jeu, (si t'utilises un arbre, bien entendu). )

sans la récursivité, tu ne peux pas t'en sortir; t'as donc interret à être plus que familiarisé avec la récursivité

mon jeu des allumettes utilise une méthode tout-à fait originale et surprenante (c pas moi qui l'ai inventée...) : l'apprentissage. Si tu veux en savoir plus, réponds...

@+
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Je penssais a un minimax basique pas un AB car un AB ne peut pas s'apliquer aux échecs car certains coups sont calculés avec des sacrifices qui commencent a raporter 20 coups, alors le AB ne peut pas vraiment faire ça....

Je penses simplement donc a un minimax, puis une évaluation de la position, mais bon, c'ets vachement dur, a cause de cette *** d'évaluation, et puis la recherche des coups possible...

L'évaluation doit tennir compte :

Valeur des pièces
la structure des pions
IDP (^^on apelle ça comme ça des fois au club,) indice de dévelopement des pièces

la soliditée du roque
si un roi est déroqué
ect...