Un dos fitos que o xadrez revolucionou nos últimos 20 anos é a aparición dos coñecidos como “motores” ou módulos de análise. Hoxe en día, practicamente todos os xogadores revisan A súa partida co “amigo inhumano”, buscando os erros que se fixeron no xogo. Tal é así, que a avaliación dun módulo é tomada, na actualidade, como o máis próximo a “a verdade” que sabemos; de feito, non é estraño escoitar aos fans e aos profesionais, facer comentarios do tipo: “Aquí Teño 0,20 vantaxe “.
Con todo, me atopo constantemente que esta ferramenta é mala ou moi mala, utilizada pola maioría dos xogadores; E isto implica que o traballo realizado diante da computadora pode ser usado por pouco ou máis ben nada. Constantemente vexo que nin as análises realizadas teñen valor (porque conteñen erros a granel, como vou ensinarlle), nin as conclusións que se toman a partir deles serven para mellorar o noso xogo e, que é peor, que o módulo prexudica o noso camiño Pensando no taboleiro, perdendo por exemplo toda a noción estratéxica. Polo tanto, escribo esta serie de artigos sobre motores de análise con algunhas ideas e consellos que poden axudarnos a mellorar.
Fundamentos
Son unha desas persoas que, para usar Algo ben, teño que entender o que é. É por iso que, primeiro, vou explicar, de forma esquemática e telegráfica, o que un motor está dentro para ofrecernos esas variantes e avaliacións.
Primeiro, debemos entender que unha análise de módulos consiste, basicamente, en Dous subprodificadores (técnicamente falaríamos de subrutinas, pero o termo sub-programa creo que é mellor comprendido). O primeiro deles calcula todas as obras legais da posición actual. O segundo, leva cada posición e evalúo a través dunha función de avaliación. Isto converte a posición por riba do taboleiro nun número que será a avaliación. Finalmente, o programa ordena todas as avaliacións do máis alto a menor e dános o mellor lugar situado nesa lista, que será a obra que a computadora propón.
No jerga, cada posición chámase nodo e Polo tanto, se observa a información que ofrece o módulo durante o seu cálculo, pode ver en KN (Kilo Nodos, é dicir, 1000 nós) como moitas posicións avalían a súa computadora por segundo. Podes facer unha idea de como é a túa computadora (técnicamente o teu procesador, que é o que calcula).
A función de avaliación é unha das “fórmulas máxicas” de cada motor e é o que caracteriza, esencialmente, cada módulo. Entón, cando escolle un motor, basicamente está a mercar esa función de avaliación. Normalmente consiste nun cálculo do material no taboleiro, dar un número a mobilidade ou ameaza, e ata moitos de eles inclúen patróns para avaliar numéricamente. Por exemplo, o azul profundo engadiu un “plus” numérico no caso de que un peón de torre chegou ao sexto preto do brote rival (peón en H6 co rei negro en xeral en G8); o O módulo astuto ten un patrón para recoñecer un bispo encerrado en H2 cando o oponente xoga G3 (como no famoso xogo Spassky-Fischer). Polo tanto, traballar con diferentes módulos ofrécenme diferentes obras de teatro para a mesma posición, porque cada un avalía ao seu xeito.
Os números que asignan a función de avaliación son totalmente arbitrarios, porque o único que importa é o que é o que O nodo ten a maior avaliación. Non obstante, os programadores cambiaron a escala destes números para que teñan unha certa relación co que os humanos entendan (peón = 1 punto). Pero o ollo, cada función de avaliación é diferente e non podemos comparar o “pelo” o número dun e outro módulo. Este é un dos primeiros erros que detectamos entre os xogadores e que debemos evitar. Tampouco podemos tomar avaliación Como número absoluto, “ter 0,25” non significa nada, en vez de, pola mobilidade das pezas, é probable que a nosa posición sexa máis cómoda; Pero esa non é a información que necesita un reprodutor de torneo: se ten unha vantaxe, como se executa, se é suficiente para gañar, que tipo de posición agarda, etc.
profundidade, cálculo de ply e bruto
Os programadores pregúntanse á mesma pregunta que os xogadores fannos a nós mesmos, ao deixar de calcular e simplemente avaliar a posición? Así como nos ocorre, a resposta non é fácil. Polo tanto, a computadora está cálcula en “niveis de profundidade”; a medida que deixamos tempo para calcular unha posición, está a piques de estar máis aló do seu cálculo.
Os niveis de profundidade son medidos en “ply”, que é o que en xadrez consideramos “metade xogar” (que xoga branco ou negro); É dicir, se teño unha posición (nodo) e a través dun movemento branco, chega a outra posición (nodo), ambas as posicións son 1 ply de distancia. Polo tanto, unha profundidade de 2 ply implica que a computadora calculou todas as posicións posibles que se producen despois dun branco e un xogo.
A computadora está progresando nesta profundidade. Primeiro de todo, xera todos os avances legais posibles e, polo tanto, xera todos os nodos posibles que podemos chegar desde a posición actual. Entón evalúa todos aqueles nodos e ordena mellor a avaliación peor. Unha vez que todo isto faise, a computadora terminou de calcular a profundidade 1. Entón, tome todas as posicións xeradas a un ply e calcule todos os avances legais posibles, xerando todos os posibles nós que chegaremos despois de 2 ply e a avaliación; Así que chegaremos a profundidade 2; e así por diante.
A este proceso que describín chámase cálculo bruto.
Cálculo selectivo
O cálculo bruto é formalmente correcto, que pasa que a nosa computadora está obrigada a calcular todas as posicións posibles que xorden de cada xogo, polo que moitas veces perderá tempo en posicións absolutamente perdidas (con dama e dúas torres de menos, por exemplo).
Unha idea para Mellorar o rendemento dos motores é usar o que se chamou o cálculo selectivo. Nela, a computadora calcula todas as obras posibles e avalíraas; Pero só selecciona algúns, o mellor, para realizar o seguinte nivel de profundidade. Digamos, por exemplo, que o “nivel de selectivo” é tres; entón a computadora leva as tres posicións que levaron ás tres mellores avaliacións e xera todas as obras posibles das tres posicións (nodos). Agora, avalía as obras e retorno para escoller os tres primeiros para calcular todas as posicións do seguinte nivel de profundidade, etc.
O cálculo selectivo é moito máis rápido que o cálculo bruto. Ademais, baséase na forma en que os humanos calculan cando elixen o candidato que xoga. Con todo, corre o risco de ser variantes interesantes no Inkwell. Se unha obra de xogo entrega a dama para dar cinco movementos máis tarde, dificilmente pode estar entre os tres mellores no nivel de profundidade.. O que é máis, A computadora tería que alcanzar un nivel de profundidade 9 (bruto) para ver o compañeiro.
Como axusta o número de obras que queremos no selectivo?, a maioría das computadoras que teñen un Parámetro que é “Número de liñas de cálculo”. Ben, cada vez que puxes 1, 3 ou 10 estás axustando o número de reproducións candidatas que usan o computador no selectivo.
Cálculo bruto / selectivo
para aproveitar o O mellor dos dous mundos, os programadores optaron por un cálculo mixto, que combina o cru eo selectivo. A computadora cálcula primeiro raramente a un nivel de profundidade e antes de pasar ao seguinte, realiza un cálculo selectivo a maior profundidade. É dicir, a computadora calcula a profundidade 20 e despois leva os tres primeiros e segue a profundar ata 33 coa técnica de cálculo selectivo; Entón fai o cálculo bruto a unha profundidade 21 e volve facer o selectivo; E así por diante.
Para iso, cando mires a información do módulo na profundidade da sección, verás unha fracción 20/33, o que significa que o nivel 20 profundidade no cálculo bruto, o nivel 33 en selectivo.
Algúns motores de análise confían pouco no selectivo (por exemplo, Stockfish), mentres que outros cren que é o máis importante (Houdini). Polo momento só vou dicir que é moi importante que, en cada cálculo que faga, ten estes números presentes, porque nos imos dicir o que a computadora profundou e como o seguro podemos ser do resultado que nos ofrece.
velocidade de CPU e táboa de hash
Finalmente, comentaremos en dous aspectos “físicos” da nosa computadora: a velocidade da CPU ea táboa de hash. A computadora Ten un procesador, que é o que calcula (é dicir, quen realiza operacións sobre os “números” e ofrece algúns números na súa produción). Esta velocidade é, agora, o famoso GHz que aparece. Por exemplo, un Pentium de 4 a 3 GHz significa que a computadora ten unha “velocidade” de 3GHz. Se ten unha computadora máis rápida, na función de cálculo dos nodos e avaliación, o seu ordenador fará máis rápido e, polo tanto, chegará Máis niveis de profundidade en menos tempo.
Quero salientar que, de ningún xeito, un mellor procesador (máis rápido) implica que a túa computadora atopará mellores obras de teatro.Calquera computadora antiga, se lle damos tempo suficiente, atoparás o mesmo xogo para o mesmo nivel de profundidade, que a computadora máis rápida do mundo (co mesmo motor de análise).
Todos estes cálculos e avaliacións Isto fai que a computadora os almacena en memoria, porque no seguinte nivel de profundidade, no canto de comezar a partir de 0 os cálculos, a computadora usa o que se calcula no nivel anterior para engadir “un xogo máis” (é moito máis rápido, obviamente). O problema é que a computadora ten tres niveis de memoria (en termos básicos): caché, memoria RAM e disco duro. A caché é a que está “máis preto” do procesador, é xeralmente pequeno e serve para que a computadora saia Alí almacenados resultados intermedios mentres fan os cálculos. É o acceso máis rápido. A RAM é un paso intermedio, é un acceso bastante rápido e é onde a maioría dos programas funcionan no noso ordenador. O disco duro é, con moita diferenza, máis lenta, pero é onde gardamos as cousas permanentemente.
Durante o cálculo das posicións de xadrez, a computadora xera unha cantidade íntima de información (nodos, avaliacións) Ten que ser almacenado nalgún lugar. A caché está chea de xeito moi rápido, polo que a seguinte memoria a empregar é a memoria RAM, que ten unha capacidade finita e que, a medida que avanzamos, tamén está chea. Finalmente, temos o disco duro, que é moi lento para os nosos obxectivos.
A táboa hash é unha táboa que funciona como índice da memoria que usamos e que organiza todos os cálculos que xa fixemos , de tal forma que a computadora quere atopar onde a avaliación dunha posición é, o primeiro que lle pregunta é a táboa hash se o ten no índice; E se non, calcula de novo.
A maioría dos motores permítennos o tamaño (dar tamaño) a esta táboa de hash; É dicir, permítenos dicir que tan grande é o caderno que o noso motor de xadrez pode usar para gardar as súas posicións e avaliacións. Se este caderno é moi grande, a computadora gastará moito tempo executando o índice mirando se ten a posición que quere calcular agora. Se é moi pequeno, a computadora constantemente terá que calcular as posicións que xa se calcularon no pasado. Polo tanto, non é tan sinxelo como darlle o maior valor posible á mesa de hash.
A norma xeral di que se o noso procesador é moi rápido, mellor que a memoria non é moi grande (porque custa menos Calcule que mires na memoria), mentres que se é lento debemos facelo pola contra. Algúns motores publicaron CUL é o valor de memoria óptimo co que deben traballar. A miña experiencia é que é mellor axustar “a man” estes valores para optimizar o rendemento.
Hai moitos outros factores que temos que axustar cando imos traballar a xadrez cunha computadora: uso Os compiladores apropiados, elixen a forma correcta de compilar o motor, etc. Un motor ben optimizado pode supoñer unha mellora do 40% en termos de velocidade de procesamento (kilonodos por segundo).
no seguinte artigo; unha vez Temos o básico, e entendemos basicamente como funciona, falaremos sobre como mellorar o noso traballo cunha computadora.