¿Existe un motor que encuentre el mejor movimiento "práctico"?

25

Un motor de ajedrez estándar encontrará el movimiento que considere mejor asumiendo el mejor juego de ambos lados. Pero este movimiento puede conducir a una ventaja insignificante o una línea difícil que puede resultar fácilmente en errores para un jugador humano de una habilidad específica. ¿Existe un programa que encuentre el mejor movimiento "práctico" para, por ejemplo, jugadores intermedios? Por ejemplo, podría elegir un movimiento que conduzca a una posición de ataque muy fuerte donde el oponente probablemente cometerá un error, a pesar de que podría defenderse con un juego perfecto.

Ari
fuente
55
Pregunta muy interesante, pero creo que implementar algo como esto podría ser difícil porque "práctico" podría ser muy diferente dependiendo de la situación. Por ejemplo, ¿sería el mismo movimiento igualmente práctico contra un oponente 200 puntos arriba y 200 puntos abajo? ¿Qué pasa con el juego clásico vs el juego blitz?
Akavall
¿Parece que quieres algo más cercano a expectimax que minimax?
Mehrdad
Esto me recuerda al póker. Creo que la mayoría de los pokerbots siempre juegan movimientos prácticos en lugar de asumir un equilibrio de Nash e intentar jugar los mejores movimientos teóricos.
Paul
Una forma de pensar en esto es que está buscando cuantificar una función objetivo diferente. Cuando estás perdiendo, no quieres minimizar por cuánto estás perdiendo (a quién le importa si pierdes por un centipawn o una reina). En cambio, debes minimizar la cantidad que estás perdiendo, siempre que haya una línea en la que tu oponente pueda caer razonablemente. Puede cuantificar "caer razonablemente en" contando "solo" movimientos o situaciones en las que solo el movimiento superior (o dos) continúa su ventaja, pero otros movimientos lo llevan a tener la ventaja.
ddunn801
Como analogía, en el fútbol americano pateas porque te da una oportunidad (delgada) de anotar rápidamente a pesar de que el resultado esperado te pondría peor.
ddunn801

Respuestas:

22

Estás describiendo algo muy similar al desprecio . La idea con desprecio es que si mantienes más dinamismo en la posición, es más probable que un oponente más débil cometa errores que luego puedes explotar. Por lo tanto, dados dos movimientos que producen evaluaciones similares, un motor con alto puntaje de desprecio elegirá el que mantenga más dinamismo en la posición. Todos los motores tradicionales más actuales tienen desacato implementado (ejemplo para Komodo ).

El peligro del desprecio es que, contra un oponente fuerte, un alto desprecio puede hacer que te maten; después de todo, estás obligando al motor a jugar un movimiento más débil solo para mantener vivo el juego.

Seducir
fuente
1
Gracias, es similar a lo que estoy buscando, pero mi pregunta es incluso para jugadores con la misma habilidad. Por ejemplo, un movimiento puede llevar a una victoria 9/10 veces considerando los movimientos probables que hará el oponente.
Ari
3
@Ari es similar sin embargo. Realice dos movimientos, uno de los cuales conducirá a un empate y el otro a una ganancia el 90% del tiempo y una pérdida el 10% restante del tiempo. Un motor con una configuración de desprecio muy alta podría elegir este último (y perder contra una defensa perfecta).
Allure
1
Sin desprecio, los motores probablemente dibujarían la mayoría de los juegos contra oponentes inferiores al no excluir las repeticiones forzadas en ningún momento.
Ignorancia inercial el
1
Puede ser muy bueno si el otro jugador se está quedando sin tiempo en su reloj.
Ian Ringrose
@Ari Si tu oponente está en el mismo nivel que tú, entonces si puedes hacer un metanálisis de una línea (es decir, no solo decidir si está ganando, sino estimar la probabilidad de que tu oponente vea que está ganando), entonces Probablemente pueda analizarlo.
Acumulación
6

Me di cuenta de que esta pregunta se aplica principalmente a los motores de ajedrez estándar que usan funciones minimax para evaluar movimientos. Sin embargo, los motores de ajedrez como alphazero usan la búsqueda de árbol de monte carlo para simular muchos juegos diferentes para que no solo estén mirando los mejores movimientos posibles. Es posible que ya se puedan usar para encontrar el mejor movimiento "práctico", o que se puedan adaptar para ese propósito. Por ejemplo, el algoritmo de búsqueda de Monte Carlo podría actualizarse para observar movimientos "razonables" y simular lo que sucede.

Ari
fuente
Pero luego tienes que programar "razonable" en el algoritmo.
Ignorancia inercial el
1

Realmente no.

Las bases de datos son útiles porque pueden decirle a menudo que se juega un movimiento y cuál es el resultado, sin embargo, no son perfectas por una variedad de razones.

Fritz 12 (no estoy seguro de las versiones posteriores) tiene un medidor de "calor" que le dice cuán compleja es una variación.

Línea de fondo. Es una combinación de cosas. Estás buscando movimientos donde los movimientos con más principios resultan ser malos. Ningún motor puede decirte eso.

Salvaje47
fuente