L'IA de jeu d'écriture est très intéressante et excitante - j'en ai été convaincu plus d'une fois par ma propre expérience. Récemment, étant tombé accidentellement sur le code de mon ancien projet de programme d'échecs, j'ai décidé de le modifier un peu et de le mettre sur GitHub . Et en même temps, racontez comment il a été créé et quelles leçons cela m'a appris au cours du processus.
Démarrer
C'est arrivé en 2009: j'ai décidé d'écrire un programme d'échecs simple pour m'entraîner au développement de l'IA de jeu. Je ne suis pas moi-même un joueur d'échecs et je ne dirais même pas que je suis un amateur d'échecs. Mais la tâche de formation est tout à fait appropriée et intéressante. De plus, lorsque je jouais aux échecs sur le plateau ou dans le programme, j'étais toujours curieux de savoir pourquoi tel ou tel coup était plus fort que l'autre. Je voulais pouvoir voir clairement tout l'arbre du développement des positions d'échecs. Je n'ai pas vu une telle fonctionnalité dans d'autres programmes - alors pourquoi ne pas l'écrire vous-même? Eh bien, puisqu'il s'agit de formation, vous devez inventer et écrire à partir de zéro, et ne pas apprendre d'autres algorithmes et écrire leur propre implémentation. En général, je pense qu'en trois jours, vous pouvez gérer et créer une sorte de version de travail.
Première version
En règle générale, les moteurs d'échecs utilisent DFS avec des branches et des limites pour affiner la recherche. Mais ce n'est pas très clair, alors il a été décidé: nous suivrons notre propre chemin - que ce soit une recherche en largeur d'abord à une profondeur fixe. Ensuite, il y aura un arbre de recherche complet en mémoire, qui peut être visualisé d'une manière ou d'une autre. Et découvrez aussi: a) à quelle profondeur une partie d'échecs peut-elle être calculée dans le cadre des ressources CPU et mémoire disponibles, b) dans quelle mesure un tel algorithme jouera-t-il bien ou mal?
Je dois dire qu'à l'époque j'avais un processeur 2 cœurs avec 2 ou 4 Go de mémoire (je ne me souviens plus exactement), Windows 32 bits et un compilateur Turbo Delphi Explorer 32 bits. Donc, si le temps d'exécution pouvait encore être sacrifié d'une manière ou d'une autre, la mémoire disponible pour le processus était limitée à 2 Go. Je ne connaissais pas le drapeau PE, qui étend la mémoire utilisateur à 3 Go. Cependant, comme le système et Delphi et d'autres programmes consomment de la mémoire, moins d'un gigaoctet est disponible pour les échecs, afin de ne pas entrer dans le swap.
Le résultat a été la première version du jeu, composée des modules suivants:
UI - la fenêtre principale, dessinant un tableau avec des formes.
Logique du jeu - compilation d'une liste de mouvements possibles, exécution d'un mouvement, détection de la fin de la partie.
AI: le score est la fonction d'évaluation du poste.
AI: force brute - première recherche étendue dans une file d'attente.
UI: - , .
:
3 - , - 5-15 . 4 . .
3 - " ": - , "" , "". . , .
, , .
, : , . .
- . - - , - - . , .
:
:
: - 3, - 5 .. - 1, .
, , ( ). .
. - . ! - . - . 1-2 .
: . AI , .. , .
= (white_rate - black_rate) * (1 + 10 / (white_rate + black_rate)). , , - , .
, , . - , . - 1, - 0.4, - . .
, - .
:
:
- .
- .
- .
. , : . : ?
: - . - . - -. , 64- . 264, , 232, - - - .
"" 30-45%, 80-90%, 5-10 , . !
?
, - 2- , . , , - . :
AI - CPU .
?
AI . ?
: . , . , , . .
, "" . , .
, - . :
: 8-, 2- CPU, .
64- : , , x64. , ! x64 , x86 5-10% . 64- Delphi , .
: 32- PE- . , 1 - - "" . .
: , . - , . - , , . . , - , . .
. - . , . .. .
. . - . , , , .
. - . ? , .
AI , . AI chess.com , 1800-1900. , !
L'intelligence artificielle du jeu de programmation est très addictive: vous voulez toujours faire mieux. Et même si j'ai encore beaucoup d'idées de développement, le moment vient où je dois m'arrêter. Je pense que c'est venu. Cependant, si quelqu'un le souhaite, il peut prendre mon code, jouer, expérimenter, implémenter quelque chose. Heureusement, Delphi est désormais accessible à tous grâce à l'édition gratuite de la communauté, sans oublier les gratuits Free Pascal et Lazarus. Le code du projet (ainsi que l'exe-shnik compilé) peut être pris ici (pour la compilation, vous aurez également besoin de quelque chose de https://github.com/Cooler2/ApusGameEngine ). Merci à tous ceux qui l'ont lu.