Je me demande à quel point il serait difficile de mettre en œuvre un moteur chess. Existe-t-il déjà des implémentations open-source?
Il semble que vous ayez besoin d’une fonction de notation pour une constellation de conseils donnée et d’un moyen très rapide d’explorer plusieurs constellations de conseils probables. Il est bien entendu impossible d’explorer tous les mouvements futurs possibles. Vous pouvez donc suivre avidement les mouvements les plus prometteurs ou utiliser des techniques approximatives telles que recuit simulé pour suivre les mouvements probables.
Pensez-vous que cela entre dans le cadre d'un apprentissage automatique projet d'étudiant diplômé - en supposant qu'il existe une implémentation à source ouverte utilisable par les étudiants, qui effectue les opérations de base, comme le retour des mouvements possibles suivants chiffre donné? Probablement trop dur?
Ce serait un projet amusant de faire travailler différentes équipes sur des moteurs d'échecs, puis de les laisser jouer les unes contre les autres ...
J'ai passé l'année dernière à construire mon propre moteur d'échecs en C #. Ce n'était pas si difficile. Au cours de mon travail, j'ai commis des erreurs, j'ai constaté que les informations sur Internet n'étaient tout simplement pas présentées clairement, et qu'une grande partie était simplement copiée à partir d'autres sites.
Afin de faciliter la vie de quelqu'un d'autre qui passe par ce processus, j'ai documenté le développement de mon moteur d'échecs et posté une grande partie du code source sur mon blog:
J'ai même créé un Kit de développement de jeu d'échecs qui vous permettra de développer votre propre moteur d'échecs, qui contient:
Mon site est essentiellement dédié aux personnes comme vous. les gens qui veulent commencer à construire leur propre moteur d’échecs.
Crafty est l'un des meilleurs moteurs d'échecs et complètement open source. Cependant, je vous déconseille de l’utiliser pour un projet étudiant. Il est écrit en C, très complexe et très difficile à comprendre car très optimisé.
À des fins éducatives, je vous conseillerais de consulter le site d'Adam Berents où il décrit le processus qu'il a suivi lorsqu'il a mis en place un moteur d'échecs en C #. Le code source est également disponible bien sûr. C'est un excellent point de départ, à mon avis.
Je ne peux pas répondre à votre question, mais je peux répondre à votre dernier commentaire.
"Ce serait un projet amusant que Différentes équipes travaillent sur des moteurs d'échecs Puis les laissent jouer contre chacune D'autres ..."
Ceci est déjà fait sur le serveur FICS chess. Je vous suggère de vous y connecter (nécessite telnet) et de consulter la documentation. Vous pourrez probablement entrer en contact avec des personnes capables de vous donner des conseils spécifiques sur leurs échecs.
Un moteur d'échecs raisonnable sur les PC modernes est certainement faisable, surtout si vous êtes assez vieux pour vous rappeler qu'il existait de nombreux programmes d'échecs utilisant seulement quelques K de mémoire sur des machines 8 bits à 1 et 2 MHz qui pourraient très bien jouer. De nos jours, vous pouvez sortir un moteur d’échecs dans un langage interprété et vaincre le pantalon du meilleur programmeur 6502 ou Z80, codant ainsi son code le plus rapide.
J'ai eu l'occasion de travailler avec Dan Spracklen, qui a réalisé l'original { Sargon } _ en 1978 avec sa femme Kathleen. Le frère de Kathleen a fait le portage vers Apple II et j'ai travaillé avec lui et avec son fils. (À l'époque où je travaillais avec ces gars, le commerce des échecs pour le profit des consommateurs était terminé. Je me souviens d'un gars qui a sorti les jeux Atari ST et Amiga Chess et il n'y avait pas vraiment de marché pour eux à ce moment-là.)
" Computer Gamesmanship " est une formidable introduction à la programmation des échecs, telle que l'ont pratiquée les amateurs en 1983. C'est toujours un plaisir à lire. Couvre les bonnes choses: alpha-bêta, minimax, etc.
C'est un assez bon livre que vous pouvez commencer ici et en apprendre davantage sur les progrès réalisés depuis.
alt text http://g-ecx.images-Amazon.com/images/G/01/ciu/a9/01/ef2de893e7a081414e106110.L._AA240_.jpg }
Faire un bon jeu est difficile, mais probablement à peu près au bon niveau pour un projet d'études supérieures (quand j'ai pris mon cours en informatique, un de mes amis a écrit un moteur d'échecs pour son mémoire de fin d'études).
Et oui, il y a des logiciels libres, le principal concurrent étant GNU Chess , qui est très bien respecté.
Chaque année à mon université, le cours d’introduction à l’IA (cours de 3e année) oblige les étudiants à créer un programme d’échecs avec un papier, et nous avons couvert un chapitre sur la recherche contradictoire dans le cours afin que les étudiants aient suffisamment de connaissances pour le faire. Pour nous, le projet peut être réalisé seul ou avec un autre (s’attendant évidemment à un meilleur programme s’il est réalisé avec un partenaire, tel qu’un pli plus profond, etc.) . Parce que le cours d’infographie est également un Cours de 3ème année, les étudiants sont autorisés à combiner le projet final de celui-ci avec le projet final du cours AI.
Depuis que je suis en troisième année et que je suis les deux cours (qui se terminent maintenant avec le premier semestre), j’ai fait équipe avec un ami qui est également dans les deux cours et nous travaillons sur le programme depuis la fin de notre stage. examens (qui était autour du 21 décembre) et il est prévu pour le 11 janvier.
C'est tout à fait faisable en moins d'un mois (surtout en tant que projet d'études supérieures). Nous faisons un programme d'échecs en 3D, il nécessite donc plus de travail qu'un simple moteur d'échecs, bien sûr ... Les plus difficiles seront de décider d'une représentation du conseil d'administration, de mettre en œuvre toutes les règles (en passant, le castling, la promotion, etc.) , créant une fonction heuristique et l’arborescence du jeu (généralement effectuée avec l’élagage alpha-bêta).
Voici le site que nous utilisons pour documenter l'avancement, et plus tard héberger le code et le papier une fois que nous avons terminé (c'est un peu vide en ce moment). http://sites.google.com/site/chessatbrock/
Tout dépend de l'objectif que vous vous fixez à propos de l'IA du jeu! si c'est un jeu à 2 joueurs .. facile! Mais l’intelligence artificielle est assez difficile à comprendre. L’open source bien connu est GNU Chess!
Quelques algorithmes: http://www.vclcomponents.com/s/0__/source_code_genetic_algorithm_chess } _
Voici un wiki de programmation d'échecs !
Vous devez générer tous les mouvements vaild pour l'état donné. Ensuite, pour chaque possibilité, vous devriez vérifier les mouvements possibles de vos adversaires. S'il y en a au moins un qui aggrave votre situation, vous ne devez pas suivre cette branche. Pour ce faire, vous avez besoin d'une sorte de notation afin de déterminer votre performance. Les échecs ont déjà des règles sur quelle unité vaut combien de points. Il suffit de regarder en avant que quelques étapes comme celle-ci. Battre le programme sera toujours difficile.
Ceci est bien sûr loin d'être parfait: de vrais joueurs peuvent sacrifier certaines unités pour atteindre des objectifs à long terme. Cet algorithme ne fera pas cela.
Nous avons fait une IA de mancala suivie d'une IA d'échecs dans les algorithmes et les structures de données (sophomore CS).
Cependant, le professeur a fourni de gros morceaux du moteur des échecs, et nous avons dû faire des choses comme améliorer la fonction de décision, mettre en œuvre checkmate, etc.
Durant mon cours d’intelligence artificielle de premier cycle, nous avons passé un semestre à créer différents moteurs d’échecs et à les tester à l’aide de XBoard ou de WinBoard. Ensuite, à la fin du semestre, nous avons eu un tournoi au cours duquel les moteurs d’échecs des étudiants se sont affrontés dans XBoard. Dans l’ensemble, cela a plutôt bien fonctionné.
L'interfaçage avec XBoard est assez facile si je me souviens bien. Voici quelques liens.
http://www.gnu.org/software/xboard/
interface pour XBoard
http://www.tim-mann.org/xboard/engine-intf.html
Je ne sais pas si cela vous donne tout ce que vous voulez, je pense que nos moteurs d’échecs ont dû créer leurs propres représentations et proposer leurs propres mouvements, mais au moins, cela vous donne un tableau graphique qui connaît les règles et a GUI.
C’est probablement trop simple, mais il reste des leçons intéressantes à apprendre: je vous présente le Jeu d’échecs ZX81