machine-learning - échec - ordinateur echec kasparov




Est-ce difficile de mettre en place un moteur d'échecs? (9)

C'est probablement trop simple, mais encore, des leçons intéressantes à apprendre: je vous présente le jeu d'échecs ZX81

Je me demande à quel point ce serait difficile de mettre en place un moteur d'échecs . 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 cartes donnée, et d'une manière très rapide d'explorer plusieurs futures constellations de cartes. Explorer tous les futurs mouvements possibles est bien sûr impossible, donc on pourrait suivre les mouvements les plus prometteurs avec avidité, ou utiliser des techniques approximatives comme le recuit simulé pour suivre les mouvements probabilistes.

Pensez-vous que cela s'inscrit dans le cadre d'un projet d'étudiant diplômé en apprentissage automatique - en supposant qu'il y avait une implémentation open-source que les étudiants pouvaient utiliser, qui fait les choses de base comme retourner les prochains mouvements possibles pour un chiffre donné? Probablement trop dur?

Ce serait un projet amusant de faire travailler différentes équipes sur des moteurs d'échecs et de les laisser jouer les uns contre les autres ...


Cela dépend du niveau de force que vous ciblez et de vos compétences en programmation. En supposant que vous soyez un programmeur expérimenté , voici mon opinion (je connais beaucoup de moteurs, mais jamais codé):

* Un moteur très simple, qui peut battre un débutant / amateur (ELO 1200-1600): beaucoup de code, mais facile.

* Un moteur qui peut battre un 'joueur de club' (ELO 1800-2000): il commence à devenir dur, vous aurez besoin de livres d'ouverture, d'optimisations et d'une IA solide

* Un moteur qui peut battre un maître: dur, vous aurez besoin de quelques années d'expérience

* Un moteur haut de gamme (comme Rybka, Houdini, Stockfish, Hiarcs), qui peut battre n'importe quel être humain sur terre 99% du temps: c'est un effort énorme, vous aurez besoin de beaucoup de patience et d'années d'expérience.

Voilà comment je le vois!


Dans mon cours d'IA de premier cycle, nous avons passé un semestre à créer différents moteurs d'échecs et à les tester en utilisant XBoard ou WinBoard. Puis, à la fin du semestre, nous avons eu un tournoi où les moteurs d'échecs de l'étudiant 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 suis pas sûr que cela vous donne tout ce que vous voulez, je pense que nos moteurs d'échecs ont dû créer leurs propres représentations de conseil et proposer des mouvements de leur propre chef, mais au moins cela vous donne un tableau graphique qui connaît les règles et GUI.


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 fait des erreurs, j'ai trouvé que l'information sur Internet n'était pas clairement présentée, et une grande partie était simplement copiée à partir d'autres sites.

Afin de rendre la vie plus facile pour quelqu'un d'autre en passant 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:

http://www.chessbin.com

J'ai même créé un kit de développement de jeu d'échecs qui vous aidera à développer votre propre moteur d'échecs, qui contient:

  1. Tout le code nécessaire pour représenter un échiquier et des pièces d'échecs
  2. Code relatif à la validation du mouvement des pièces d'échecs
  3. Interface utilisateur graphique qui affiche la position des échecs et vous permet de déplacer des pièces autour du tableau

Mon site est essentiellement dédié aux personnes comme vous; les gens qui veulent commencer à construire leur propre moteur d'échecs.


Nous avons fait une mancala AI suivie d'une IA d'échecs dans Algorithms and Data Structures (sophomore CS).

Cependant, le professeur a fourni de gros morceaux du moteur d'échecs, et nous avons dû faire des choses comme améliorer la fonction de décision, mettre en place un checkmate, et d'autres choses.


Oui, c'est certainement dans le cadre d'un projet étudiant. Voici quelques liens de mes archives pour vous aider à démarrer:



Un moteur d'échec raisonnable sur les PC modernes est certainement faisable, surtout si vous êtes assez vieux pour vous rappeler qu'il y avait beaucoup de programmes d'échecs qui utilisaient seulement quelques K de mémoire sur des machines 8 bits de 1 et 2 MHz qui pouvaient très bien jouer. Vous pouvez sortir un moteur d'échecs dans un langage interprété de nos jours et battre le pantalon d'un programmeur haut 6502 ou Z80 codant ses trucs les plus rapides.

J'ai travaillé avec Dan Spracklen, qui a fait l'original Sargon en 1978 avec sa femme Kathleen. Le frère de Kathleen a fait le port à Apple II, et j'ai travaillé avec lui et avec son fils. (Au moment où je travaillais avec ces gars-là, le business des échecs pour le profit était fait, je me souviens d'un gars qui avait sorti des jeux Atari ST et Amiga Chess et il n'y avait vraiment pas beaucoup de marché pour eux.)

" Computer Gamesmanship " est une excellente introduction à la programmation d'échecs que les amateurs ont effectuée en 1983. C'est toujours un plaisir à lire. Couvre les bonnes choses: alpha-beta, minimax, etc.

C'est un livre assez bon que vous pouvez commencer là-bas et ensuite apprendre 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


Crafty est l'un des meilleurs moteurs d'échecs et complètement open source. Cependant je vous déconseillerais de l'utiliser pour un projet d'étudiant écrit en C, très complexe et très difficile à comprendre car il est hautement optimisé.

À des fins éducatives, je vous recommande de jeter un coup d'œil sur le site d'Adam Berents où il décrit le processus qu'il a suivi lorsqu'il a implémenté 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.







chess