Comment un ordinateur joue-t-il aux Ă©checs?


Hikaru Nakamura, qui a récemment contesté un ordinateur.

Un ordinateur a longtemps battu un homme aux Ă©checs, maintenant les joueurs d'Ă©checs les plus forts ne peuvent mĂȘme plus battre un vieux portable. DĂ©sormais, les moteurs d'Ă©checs sont utilisĂ©s pour analyser les jeux, rechercher de nouvelles options et jouer par correspondance.

Si vous ĂȘtes intĂ©ressĂ© par la disposition des moteurs d'Ă©checs, bienvenue Ă  cat.

Présentation


- , ( , ), . -, - .

, , . . , , , 3 ( — , — ) 120 . , 14 , .

, , gagner le match contre le champion du monde est toujours à la portée des meilleurs. Ce n'est pas vrai non plus.

Lors d'un rĂ©cent mini-match homme-machine, Hikaru Nakamura , l'un des joueurs d'Ă©checs les plus forts du monde, a jouĂ© avec Komodo , l'un des (deux) programmes d'Ă©checs les plus puissants du monde. Le programme a Ă©tĂ© lancĂ© sur un Xeon Ă  24 cƓurs. Comme les gens ne peuvent plus rivaliser sur un pied d'Ă©galitĂ© avec un ordinateur, le grand maĂźtre a pris une longueur d'avance dans chacun des 4 jeux:
  • Dans le premier jeu - un pion et un coup: l'ordinateur a jouĂ© en noir et sans pion f7
  • Dans le second - seulement un pion: l'ordinateur jouait blanc sans pion f2
  • Dans la troisiĂšme - qualitĂ© (la diffĂ©rence entre une tour et une piĂšce lĂ©gĂšre est estimĂ©e Ă  environ 2 pions): un ordinateur blanc sans tour a1, un homme sans chevalier b8 et une tour a8 Ă  sa place.
  • Dans le quatriĂšme - quatre coups: une personne joue en blanc et au lieu du premier coup, elle fait 4 coups sans traverser le milieu du plateau.

Il y a eu certains différends concernant le handicap - par exemple, l'absence du pion f affaiblit quelque peu le roi, mais aprÚs le roque donne une ligne ouverte à la tour. L'absence d'un pion central donne probablement un plus grand avantage. 4 coups donnent un bon avantage positionnel, mais si vous jouez un début fermé comme la défense Old Indian, cet avantage n'est pas si difficile à annuler.

De plus, les matchs ont Ă©tĂ© jouĂ©s avec un contrĂŽle de 45 '+15', soit 45 minutes par match et 15 secondes d' ajoutchaque mouvement. Habituellement, des commandes plus courtes donnent un avantage supplĂ©mentaire Ă  l'ordinateur, tandis que des commandes plus longues augmentent lĂ©gĂšrement les chances d'une personne. MĂȘme en une fraction de seconde, l'ordinateur parvient Ă  balayer ouvertement les mouvements perdants, tandis qu'en raison de la croissance exponentielle de l'arbre des variantes, chaque amĂ©lioration ultĂ©rieure de l'analyse prend plus de temps.

NĂ©anmoins, il y avait un handicap et la personne a perdu dans le match 2,5-1,5, ayant tirĂ© les 3 premiers matchs et perdu le quatriĂšme. Dans le mĂȘme temps, le faible grand maĂźtre a gagnĂ© en toute confianceHandicap Ă  2 pions. Par consĂ©quent, l'avantage des meilleurs programmes sur les meilleures personnes en ce moment se situe entre 1 et 2 pions du handicap. Bien sĂ»r, cette Ă©valuation est trĂšs approximative, mais pour une Ă©valuation prĂ©cise, il est nĂ©cessaire de jouer plusieurs milliers de jeux entre les personnes et les programmes, et il est peu probable que quelqu'un le fasse. Veuillez noter que la cote ELO, souvent indiquĂ©e pour les programmes, n'a rien Ă  voir avec la cote des personnes.

Qu'est-ce qu'un moteur d'Ă©checs?


Pour qu'une personne puisse jouer aux Ă©checs avec un ordinateur, en plus de rechercher le meilleur coup, vous avez besoin d'une interface graphique. Heureusement, une interface universelle a Ă©tĂ© inventĂ©e (mĂȘme deux, Winboard et UCI , mais la plupart des moteurs utilisent UCI) pour la communication entre l'interface graphique et le programme d'Ă©checs lui-mĂȘme (moteur). Ainsi, les programmeurs peuvent se concentrer sur l'algorithme du jeu d'Ă©checs, sans penser Ă  l'interface. Le revers de la mĂ©daille est que la crĂ©ation d'une interface graphique est beaucoup plus ennuyeuse que l'Ă©criture d'un moteur, alors les interfaces graphiques gratuites perdent sensiblement sur celles payantes. Contrairement aux moteurs, oĂč Stockfish gratuit se bat en toute confiance pour la premiĂšre ligne du classement avec Komodo payant.

Comment jouent-ils encore?


Alors, comment fonctionne un moteur d'Ă©checs moderne?

Présentation du conseil


La base de tout moteur est la représentation d'un échiquier. Tout d'abord, il faut «expliquer» à l'ordinateur toutes les rÚgles des échecs et lui donner la possibilité de garder la position des échecs. Sans cela, il est impossible d'évaluer la position et de faire des mouvements.

Il existe deux façons principales de stocker une reprĂ©sentation d'une planche - par formes ou par cellules . Dans le premier cas, nous stockons pour chaque piĂšce sa place sur la planche, dans le second - au contraire, pour chaque cellule nous stockons ce qui s'y trouve. Chaque mĂ©thode a ses avantages et ses inconvĂ©nients, mais pour le moment, tous les meilleurs moteurs utilisent la mĂȘme reprĂ©sentation de la carte - les bitboards.

Bitboards


Heureusement, il y a 64 cellules sur l'Ă©chiquier. Donc, si nous utilisons un bit pour chaque cellule, nous pouvons stocker la carte entiĂšre dans un entier 64 bits.
Dans une variable, nous stockerons toutes les piÚces blanches, dans une autre - toutes noires et dans 6 autres - chaque type de chiffres séparément (une autre option est de 12 bitboards pour chaque couleur et type de chiffres séparément).

Quel est l'avantage de cette option?
Le premier est la mémoire. Comme nous l'apprendrons plus tard, au cours de l'analyse, la représentation de la carte est copiée plusieurs fois et, en conséquence, la RAM ronge. Les bitboards sont l'une des représentations d'échiquier les plus compactes.
DeuxiÚmement, la vitesse. De nombreux calculs, par exemple, le calcul de mouvements possibles, se résument à plusieurs opérations de bits. Pour cette raison, par exemple, l'utilisation de l'instruction POPCNT donne une accélération de ~ 15% aux moteurs modernes. De plus, pendant l'existence des bitboards, de nombreux algorithmes et optimisations ont été inventés, comme par exemple les bitboards «magiques» .

Chercher


Minimax


Au cƓur de la plupart des moteurs d'Ă©checs se trouve l'algorithme de recherche minimax ou sa modification de non-hamax. En bref, nous descendons l'arbre, Ă©valuons les feuilles, puis montons, chaque fois en choisissant le mouvement optimal pour le joueur actuel, en minimisant le score pour un (noir) et en maximisant pour le second (blanc). D'oĂč le nom. Une fois Ă  la racine, nous obtenons une sĂ©quence de mouvements optimale pour les deux joueurs. La diffĂ©rence entre minimax et non-hamax est que dans le premier cas, nous choisissons Ă  tour de rĂŽle les mouvements avec les cotes maximales et minimales, et dans le second, Ă  la place, changeons le signe pour toutes les cotes et choisissons toujours le maximum (nous avons compris d'oĂč ils venaient). Plus de dĂ©tails ici et ici .

Alpha beta


La premiĂšre optimisation est alpha beta . L'idĂ©e de l'alpha-bĂȘta est simple - si j'ai dĂ©jĂ  un bon coup, alors vous pouvez couper les coups, qui sont Ă©videmment pires. Prenons l'exemple de l'image effrayante de gauche. Supposons que le joueur A ait 2 coups possibles - a3 et b3. AprĂšs avoir analysĂ© le cours de a3, le programme a reçu un score de +1,75. Commençant Ă  Ă©valuer le coup b3, le programme a vu que le joueur B avait deux coups - a6 et a5. Évaluation du cours a6 +0.5. Puisque le joueur B choisit un coup avec un score minimum, il ne choisira pas un coup avec un score supĂ©rieur Ă  0,5, ce qui signifie que l'estimation du coup b3 est infĂ©rieure Ă  0,5, et il n'y a aucun intĂ©rĂȘt Ă  le considĂ©rer. Ainsi, le sous-arbre restant de b3 est coupĂ©.

Pour l'Ă©crĂȘtage, nous stockons les limites supĂ©rieure et infĂ©rieure - alpha et bĂȘta. Si au cours de l'analyse, un coup obtient un score supĂ©rieur Ă  la version bĂȘta, le nƓud actuel est coupĂ©. Si le score est supĂ©rieur Ă  alpha, alors alpha est mis Ă  jour.

Les nƓuds en alpha bĂȘta sont divisĂ©s en 3 catĂ©gories:
  1. PV-Nodes - nƓuds dont l'Ă©valuation est tombĂ©e dans la fenĂȘtre (entre alpha et bĂȘta). La racine et le nƓud le plus Ă  gauche sont toujours des nƓuds de ce type.
  2. Cut-Nodes (ou fail-high node ) - nƓuds dans lesquels une coupure bĂȘta s'est produite.
  3. Tous les nƓuds (ou nƓuds Ă  faible Ă©chec ) - nƓuds dans lesquels aucun mouvement n'a dĂ©passĂ© l'alpha selon l'Ă©valuation.


Tri des mouvements


Lorsque vous utilisez l'alpha bĂȘta, l'ordre des mouvements devient important. Si nous pouvons mettre le meilleur coup en premier, alors les coups restants seront analysĂ©s beaucoup plus rapidement en raison des coupures bĂȘta.

En plus d'utiliser le hachage et le meilleur mouvement de l'itération précédente, il existe plusieurs techniques pour trier les mouvements.

Pour les captures, par exemple, une simple heuristique MVV-LVA (Most Valuable Victim - Least Valuable Aggressor) peut ĂȘtre utilisĂ©e . Nous trions toutes les captures par ordre dĂ©croissant de la valeur de la «victime», et Ă  l'intĂ©rieur nous trions Ă  nouveau par ordre croissant de la valeur de «l'agresseur». De toute Ă©vidence, il est gĂ©nĂ©ralement plus rentable de ramasser la reine par pion que vice versa.

Pour les mouvements «silencieux», la mĂ©thode des mouvements «tueurs» est utilisĂ©e - mouvements qui ont provoquĂ© la coupure bĂȘta. Ces mouvements sont gĂ©nĂ©ralement vĂ©rifiĂ©s immĂ©diatement aprĂšs les mouvements du hachage et des captures.

Tables de hachage ou tables de permutation


MalgrĂ© la taille Ă©norme de l'arbre, de nombreux nƓuds sont identiques. Afin de ne pas analyser deux fois la mĂȘme position, l'ordinateur stocke les rĂ©sultats de l'analyse dans un tableau et vĂ©rifie Ă  chaque fois s'il existe dĂ©jĂ  une analyse prĂȘte de cette position. En rĂšgle gĂ©nĂ©rale, une telle table stocke le hachage rĂ©el de la position, de la note, du meilleur mouvement et de l'Ăąge de la note. L'Ăąge est requis pour remplacer les anciennes positions lors du remplissage du tableau.

Recherche itérative


Comme vous le savez, si nous ne pouvons pas analyser complĂštement l'arbre entier, minimax a besoin d'une fonction d'Ă©valuation. AprĂšs avoir atteint une certaine profondeur, nous arrĂȘtons la recherche, Ă©valuons la position et commençons Ă  grimper Ă  l'arbre. Mais une telle mĂ©thode nĂ©cessite une profondeur prĂ©dĂ©terminĂ©e et ne fournit pas de rĂ©sultats intermĂ©diaires de haute qualitĂ©.

La recherche itĂ©rative rĂ©sout ces problĂšmes. D'abord, nous analysons Ă  une profondeur de 1, puis Ă  une profondeur de 2, etc. Ainsi, Ă  chaque fois on descend un peu plus profondĂ©ment que la derniĂšre fois, jusqu'Ă  l'arrĂȘt de l'analyse. Pour rĂ©duire la taille de l'arborescence de recherche, les rĂ©sultats de la derniĂšre itĂ©ration sont gĂ©nĂ©ralement utilisĂ©s pour couper dĂ©libĂ©rĂ©ment les mauvais mouvements sur l'actuel. Cette mĂ©thode est appelĂ©e «fenĂȘtre d'aspiration» et est utilisĂ©e universellement.

Recherche de repos


Cette mĂ©thode est conçue pour lutter contre «l'effet d'horizon». ArrĂȘter la recherche Ă  la bonne profondeur peut ĂȘtre trĂšs dangereux. Imaginez que nous nous arrĂȘtions au milieu d'Ă©changer des reines - le blanc a pris la reine noire, et le prochain mouvement le noir devrait choisir le blanc. Mais pour le moment sur le tableau - Blanc a une reine supplĂ©mentaire et une Ă©valuation statique sera fondamentalement erronĂ©e.

Pour ce faire, avant de faire une Ă©valuation statique, nous vĂ©rifions toutes les captures (parfois mĂȘme les dames) et descendons l'arborescence jusqu'Ă  une position dans laquelle il n'y a pas de captures et de vĂ©rificateurs possibles. Naturellement, si toutes les captures aggravent l'estimation, alors nous renvoyons l'estimation de la position actuelle.

Recherche sélective


L'idée d'une recherche sélective est de prendre plus de temps pour considérer des mouvements «intéressants» et moins pour considérer comme inintéressants. Pour cela, des extensions sont utilisées qui augmentent la profondeur de la recherche dans certaines positions, et des abréviations qui réduisent la profondeur de la recherche.

La profondeur est augmentée dans le cas de captures, de dames, si le mouvement est unique ou bien meilleur que les alternatives ou en présence d'un pion qui passe.

Couper et couper


Avec les coupes et les coupes, tout est beaucoup plus intéressant. Ils peuvent réduire considérablement la taille de l'arbre.

En bref sur l'Ă©crĂȘtage:
  • - — , . , , . , , , , .
  • — , -. , , . (1-2).
  • — , , . . PV . .
  • Multi-Cut — M(, 6) C(, 3) Cut-node, .
  • null- — null- ( ) , . , , , , .


Les abréviations sont utilisées lorsque nous ne sommes pas sûrs que le mouvement est mauvais, et donc ne le coupez pas, mais réduisez simplement la profondeur. Par exemple, le rasage est une abréviation à condition que l'estimation statique de la position actuelle soit inférieure à alpha.

En raison du tri de haute qualité des mouvements et des coupures, les moteurs modernes parviennent à atteindre un coefficient de ramification inférieur à 2 . Pour cette raison, malheureusement, ils ne remarquent parfois pas de victimes et de combinaisons non standard.

NegaScout et PVS


, , PV-node ( ), , , . , +1, . , - , , .

— , , .


- — . , — Parallel Alpha-Beta Search on Shared Memory Multiprocessors. , Cut-nodes , ( ), , .

Lazy SMP


Un algorithme trĂšs simple. Nous commençons simplement tous les threads en mĂȘme temps avec la mĂȘme recherche. La communication passe par une table de hachage. Lazy SMP s'est avĂ©rĂ© ĂȘtre d'une efficacitĂ© inattendue, Ă  tel point que le Stockfish haut de gamme y est passĂ© avec YBW. Certes, certains pensent que l'amĂ©lioration est due Ă  une mauvaise mise en Ɠuvre de YBWC et Ă  un Ă©crĂȘtage trop agressif, et non Ă  l'avantage de Lazy SMP.

Concept d'attente des jeunes frĂšres (YBWC)


Le premier nƓud (frĂšre aĂźnĂ©) doit ĂȘtre entiĂšrement analysĂ©, aprĂšs quoi une analyse parallĂšle des nƓuds restants (frĂšres plus jeunes) est lancĂ©e. L'idĂ©e est la mĂȘme, le premier mouvement amĂ©liorera considĂ©rablement l'alpha, ou mĂȘme vous permettra de couper tous les autres nƓuds.

Fractionnement dynamique des arbres (DTS)


Algorithme rapide et complexe. Un peu de vitesse: la vitesse de recherche est mesurĂ©e par ttd (time to depth), c'est-Ă -dire le temps pendant lequel la recherche atteint une certaine profondeur. Cet indicateur peut gĂ©nĂ©ralement ĂȘtre utilisĂ© pour comparer le travail de diffĂ©rentes versions d'un moteur ou d'un moteur fonctionnant sur un nombre diffĂ©rent de cƓurs (bien que Komodo, par exemple, augmente la largeur de l'arbre avec plus de cƓurs disponibles). De plus, pendant le fonctionnement, le moteur affiche la vitesse de recherche en nps (nƓuds par seconde). Cette mĂ©trique est beaucoup plus populaire, mais elle ne permet mĂȘme pas au moteur de se comparer Ă  lui-mĂȘme. Le SMP paresseux, dans lequel il n'y a pas de synchronisation, augmente presque nps de façon linĂ©aire, mais en raison de la grande quantitĂ© de travail inutile, son ttd n'est pas si impressionnant. Alors que pour DTS, nps et ttd changent presque de la mĂȘme maniĂšre .

Pour ĂȘtre honnĂȘte, je ne pouvais toujours pas comprendre pleinement cet algorithme qui, malgrĂ© sa haute efficacitĂ©, est utilisĂ© littĂ©ralement dans une paire de moteurs. Pour qui c'est trĂšs intĂ©ressant, suivez le lien ci-dessus.

Évaluation


Nous avons donc atteint la profondeur nécessaire, recherché le calme et, enfin, nous devons évaluer la position statique.

L'ordinateur Ă©value la position en pions: +1,0 signifie que les blancs ont un avantage Ă©gal Ă  1 pion, -0,5 signifie que les noirs ont un avantage d'un demi-pion. Le mat est estimĂ© Ă  300 pions et la position dans laquelle le nombre de mouvements vers le tapis x est connu est Ă  (300-0,01x) pions. +299,85 signifie que les Blancs s'accouplent en 15 coups. Dans ce cas, le programme lui-mĂȘme fonctionne gĂ©nĂ©ralement avec des estimations entiĂšres en centipes (1/100 pions).

Quels paramĂštres l'ordinateur prend-il en compte lors de l'Ă©valuation d'une position?

Matériel et mobilité


La chose la plus simple. La reine a 9-12 pions, la tour 5-6, le chevalier et l'Ă©vĂȘque 2.5-4 et le pion, respectivement, un pion. En gĂ©nĂ©ral, un matĂ©riau est une bonne heuristique pour Ă©valuer une position et tout avantage positionnel se transforme gĂ©nĂ©ralement Ă  la fin en un matĂ©riau.

La mobilité est considérée comme simple - le nombre de mouvements possibles dans la position actuelle. Plus ils sont nombreux, plus l'armée du joueur est mobile.

Tableaux de position des formes


Le chevalier dans le coin du plateau est généralement mauvais, les pions plus proches de l'arriÚre ennemi gagnent en valeur et ainsi de suite. Pour chaque figure, un tableau des bonus et pénalités est établi en fonction de sa position au tableau.

Structure de pion


  • Pions doubles - deux pions sur la mĂȘme verticale. Souvent, il est difficile de les dĂ©fendre avec d'autres pions, considĂ©rĂ©s comme une faiblesse.
  • — , . , .
  • — , . ,
  • — , . , .



- , . , , .

. — , — .


- — , , , ..

?


Conflit traditionnel: qui est plus efficace, évalue avec précision la position ou atteint une plus grande profondeur de recherche. L'expérience a montré que les fonctions d'évaluation trop "lourdes" sont inefficaces. D'un autre cÎté, une évaluation plus détaillée, prenant en compte plus de facteurs, conduit généralement à un jeu plus «beau» et «agressif».

Livres de début et tableaux de fin de partie


Livres de début


A l'aube des Ă©checs informatiques, les programmes ont trĂšs faiblement fait leurs dĂ©buts. Les dĂ©buts nĂ©cessitent souvent des dĂ©cisions stratĂ©giques qui affecteront l'ensemble du jeu. D'un autre cĂŽtĂ©, la thĂ©orie de l'ouverture Ă©tait bien dĂ©veloppĂ©e chez les gens, l'ouverture a Ă©tĂ© analysĂ©e Ă  plusieurs reprises et jouĂ©e de mĂ©moire. Une "mĂ©moire" similaire a donc Ă©tĂ© crĂ©Ă©e pour les ordinateurs. À partir de la position initiale, un arbre de mouvements a Ă©tĂ© construit et chaque mouvement a Ă©tĂ© Ă©valuĂ©. Pendant le jeu, le moteur a simplement choisi l'un des «bons» coups avec une certaine probabilitĂ©.

Depuis lors, les premiers livres ont augmenté, de nombreux débuts sont analysés à l'aide d'ordinateurs jusqu'à la fin du jeu. Il n'y a pas besoin d'eux, des moteurs puissants ont appris à jouer les débuts, mais ils quittent les lignes principales assez rapidement.

Tables de fin de partie


Retour à l'introduction. N'oubliez pas l'idée de stocker de nombreuses positions en mémoire et de choisir la bonne. Elle est là. Pour un petit nombre (jusqu'à 7) de chiffres, toutes les positions existantes sont calculées. Autrement dit, dans ces positions, l'ordinateur commence à jouer parfaitement, gagnant dans le nombre minimum de coups. Moins est la taille et le temps de génération. La création de ces tables a aidé à l'étude des finales.

Génération de table


Nous gĂ©nĂ©rons toutes les positions possibles (en tenant compte de la symĂ©trie) avec un certain ensemble de formes. Parmi eux, nous trouvons et dĂ©signons toutes les positions oĂč se trouve le tapis. À la prochaine passe, nous dĂ©signons toutes les positions dans lesquelles vous pouvez entrer dans des positions avec un tapis - dans ces positions, un tapis est mis en 1 tour. On retrouve ainsi toutes les positions avec un mate 2,3,4, 549 coups. Dans toutes les positions non marquĂ©es - un match nul.

Tables Nalimov


Les premiers tableaux de fin de jeu ont été publiés en 1998. Pour chaque position, le résultat du jeu et le nombre de mouvements vers le tapis avec un jeu idéal sont stockés. La taille de toutes les terminaisons à six chiffres est de 1,2 téraoctets.

Tables Lomonosov


En 2012, toutes les terminaisons Ă  sept chiffres (sauf 6 contre 1) ont Ă©tĂ© comptĂ©es sur le supercalculateur Lomonosov de l'UniversitĂ© d'État de Moscou . Ces bases sont disponibles uniquement pour de l'argent et ce sont les seules tables de fin de jeu complĂštes Ă  sept chiffres existantes.

Syzygy


La norme de facto. Ces bases sont beaucoup plus compactes que les bases Nalimov. Ils se composent de deux parties - WDL (Win Draw Lose) et DTZ (Distance to zeroing). Les bases de donnĂ©es WDL sont destinĂ©es Ă  ĂȘtre utilisĂ©es pendant la recherche. Une fois que le nƓud d'arbre est trouvĂ© dans le tableau, nous avons le rĂ©sultat exact du jeu dans cette position. Les DTZ sont destinĂ©s Ă  ĂȘtre utilisĂ©s dans la racine - ils stockent le nombre de mouvements vers un compteur d' annulation des mouvements (dĂ©placement par pion ou capture). Ainsi, les bases WDL sont suffisantes pour l'analyse, et les bases DTZ peuvent ĂȘtre utiles pour analyser les jeux de fin. Syzygy est beaucoup plus petit - 68 gigaoctets pour WDL Ă  six chiffres et 83 pour DTZ. Il n'y a pas de bases Ă  sept chiffres, car leur gĂ©nĂ©ration nĂ©cessite environ tĂ©raoctets de RAM.

Utiliser


Les tables de fin de partie sont utilisĂ©es principalement pour l'analyse, l'augmentation de la force des moteurs de jeu est faible - ELO de 20 Ă  30 points . NĂ©anmoins, Ă©tant donnĂ© que la profondeur de recherche des moteurs modernes peut ĂȘtre trĂšs importante, les requĂȘtes vers les bases de fin de jeu Ă  partir de l'arborescence de recherche se produisent toujours au dĂ©but.

Autre intéressant


La girafe ou les réseaux de neurones jouent aux échecs


Certains d'entre vous ont peut-ĂȘtre entendu parler d'un moteur d'Ă©checs sur les rĂ©seaux de neurones qui a atteint le niveau de messagerie instantanĂ©e (ce qui, comme nous l'avons compris dans l'introduction, n'est pas si cool pour le moteur). Il a Ă©tĂ© Ă©crit et publiĂ© sur Bitbucket par Matthew Lai, qui a malheureusement cessĂ© de travailler dessus parce qu'il a commencĂ© Ă  travailler sur Google DeepMind .

ParamÚtres de réglage


Ajouter une nouvelle fonctionnalité au moteur n'est pas difficile, mais comment puis-je vérifier qu'elle a donné une amplification? L'option la plus simple est de jouer à plusieurs jeux entre l'ancienne et la nouvelle version et de voir qui gagne. Mais si l'amélioration est faible, et cela se produit généralement aprÚs l'ajout de toutes les fonctionnalités principales, il devrait y avoir plusieurs milliers de jeux, sinon il n'y aura pas de fiabilité.

Stockfish


Il y a beaucoup de gens qui travaillent sur ce moteur, et chacune de leurs idĂ©es doit ĂȘtre vĂ©rifiĂ©e. Avec la puissance actuelle du moteur, chaque amĂ©lioration donne une augmentation de quelques points de notation, mais au final, une augmentation rĂ©guliĂšre de plusieurs dizaines de points est obtenue chaque annĂ©e.

Leur solution est typique de l'open source - les bénévoles fournissent leur pouvoir pour piloter des centaines de milliers de jeux sur eux.

CLOP


, , . — : ( ) , .

Texel's tuning


. ( 9 64000 , 8 200000), ( 1, 0.5, 0). , . , .

Stockfish tuning


. x, ( ) x-sigma x+sigma. , , — , .


TCEC. , . 100 2 x Intel Xeon E5-2690v3 256 RAM 180'+30". , 11 .


Donc, briÚvement dans ce long article, j'ai parlé de la structure des moteurs d'échecs. Beaucoup de détails n'ont pas été dévoilés, je ne savais tout simplement pas quelque chose ou j'ai oublié de dire. Si vous avez des questions, écrivez-les dans les commentaires. De plus, je vous conseillerai deux ressources que vous avez probablement remarquées si vous avez soigneusement ouvert tous les liens disséminés dans l'article:

Source: https://habr.com/ru/post/fr390821/


All Articles