2012-09-26 54 views
5

Soy un principiante de aprendizaje automático. Me gustaría aprender los conceptos básicos enseñando computadoras para jugar damas. De hecho, los juegos que quiero aprender son Domineering y Hex. Mi lenguaje de elección es Pythonaprendizaje automático en Python para jugar a las damas?

Estos juegos son bastante fáciles de almacenar y las reglas son mucho más simples que el ajedrez, pero no hay demasiadas personas que juegan. Si puedo sacar adelante esta idea, sería genial experimentar Combinatorial Game Theory para ver si una computadora encuentra el movimiento óptimo.

Encontré este documento antiguo sobre las damas del 1960's por un hombre en IBM. Originalmente había preguntado sobre neural networks, pero dicen que es la herramienta incorrecta.

EDIT: Podría ser que el aprendizaje automático no es la estrategia correcta. En ese caso, ¿qué sale mal? y ¿cuál es una mejor manera?

+0

¿Por qué crees que el aprendizaje automático es un buen enfoque para este problema? – Bitwise

+0

Quería escribir algo que "aprenda" a jugar. Si el tablero es lo suficientemente pequeño, puede ser posible buscar exhaustivamente el espacio de movimientos. ¿Cuál es una forma más inteligente? –

+0

Para damas clásicas y muchos otros juegos es muy difícil calcular todos los movimientos posibles. Una posible estrategia alternativa es definir las características de las posiciones fuertes o las buenas movidas y luego tratar de encontrar caminos hacia esas posiciones. Por ejemplo, una posición fuerte es donde superas en gran número a tu oponente y un buen movimiento es coronar a un soldado. – Bitwise

Respuesta

1

Obtenga el libro llamado "Aprendizaje automático" de McGraw Hill y lea el primer capítulo. Está muy bien escrito y el primer capítulo te enseñará lo suficiente para hacer un programa que juegue damas. Personalmente hice un programa que juega 5 en una fila en miniclip.com, también en python.

http://www.amazon.com/Learning-McGraw-Hill-International-Editions-Computer/dp/0071154671

+0

Debe ser varios libros llamados "Machine Learning". ¿Quien es el autor? –

+0

Este comentario sigue siendo relevante, parte del capítulo 1 está disponible en línea y puede darle algunos consejos. Específicamente usa damas como un ejemplo. – Bitwise

0

Cuando jugando a las damas, que tratan de obtener una ventaja sobre su oponente tomando sus piezas y coronando su cuenta. Perder tus piezas y permitir que tu oponente corone sus piezas no es deseable, así que evitas hacerlo.

Los motores de juegos de mesa generalmente giran en torno a una función de evaluación de posición. Para las damas, mi primera conjetura sería algo como esto:

score =  number of allies   -  number of opponents 
     + 3 * number of crowned allies - 3 * number of crowned opponents 

Dada una tabla, esta función devolverá el resultado de la junta. Cuanto más alto sea el puntaje, mejor será tu posición. Cuanto menor sea el puntaje, peor será tu posición.

Para hacer un "motor" ingenuo de los inspectores, todo lo que necesita hacer es encontrar el mejor movimiento con una posición de tablero, que es solo buscar a través de todos los movimientos legales inmediatos y encontrar el que maximiza su puntaje.

Su motor no anticipará más de un movimiento, pero podrá jugar un poco contra usted.

El siguiente paso sería darle a tu motor la capacidad de planificar el futuro, lo que esencialmente es predecir las respuestas de tu oponente. Para hacer eso, simplemente encuentre el mejor movimiento de su oponente (aquí viene la recursión) y reste de su puntaje.

+0

sí, eso es básicamente el comienzo de alpha beta ... tuerca puedes mirar más de un movimiento adelante ... solo lleva un tiempo ... –

3

Es posible que desee echar un vistazo a lo siguiente: Chinook, Árboles de confianza superior, Aprendizaje de refuerzo y Poda alfa-beta. Personalmente, me gusta combinar Alpha-Beta Pruning y Upper Confidence Trees (UCT) para juegos de información perfectos donde cada jugador tiene menos de 10 movimientos razonables. Puede usar Aprendizaje de diferencia temporal para crear una función de evaluación de posición. Game AI es probablemente la forma más divertida de aprender el aprendizaje automático.

Para los enlaces a todos estos temas, haga clic en

http://artent.net/blog/2012/09/26/checkers-and-machine-learning/

(yo no era capaz de incluir más enlaces porque el software de desbordamiento de pila me considera un novato!)

Cuestiones relacionadas