Construya una IA para ganar el juego 2048
Lo más importante sobre 2048 es alcanzar la puntuación más alta moviendo los mosaicos y fusionando el mismo mosaico.
Tenemos que definir cómo mover fichas en un juego y cómo generar nuevos mosaicos después de cada movimiento.
Los códigos están en el Env.py
Mi primer intento es usar el método de búsqueda de árbol de Monte Carlo para ganar el juego. Traté de pasar por todos los movimientos posibles en la profundidad de búsqueda dada, y luego comparé los puntajes en el resultado para elegir la mejor decisión en la situación específica.
Los códigos están en el 2048_Search.py
En este método, establecí la profundidad de 1 a 5 y corrí 100 veces en cada profundidad.
Aquí hay algún resultado.
PS: la tasa de victorias promedio representa la oportunidad de llegar a 2048.
Puntuación máxima promedio: 210.24
Tasa de victorias promedio: 0%
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
32 | 1 | 1% | 100% |
64 | 6 | 7% | 99% |
128 | 39 | 46% | 93% |
256 | 47 | 93% | 54% |
512 | 7 | 100% | 7% |
1024 | 0 | 100% | 0% |
Puntuación máxima promedio: 1223.68
Tasa de victorias promedio: 30%
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
256 | 4 | 4% | 100% |
512 | 19 | 23% | 96% |
1024 | 47 | 70% | 77% |
2048 | 29 | 99% | 30% |
4096 | 1 | 100% | 1% |
8192 | 0 | 100% | 0% |
Puntuación máxima promedio: 1646.08
Tasa de victorias promedio: 54%
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
256 | 1 | 1% | 100% |
512 | 9 | 10% | 99% |
1024 | 36 | 46% | 90% |
2048 | 48 | 94% | 54% |
4096 | 6 | 100% | 6% |
8192 | 0 | 100% | 0% |
Puntuación máxima promedio: 2216.96
Tasa de victorias promedio: 78%
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
256 | 0 | 0% | 100% |
512 | 3 | 3% | 100% |
1024 | 19 | 22% | 97% |
2048 | 58 | 80% | 78% |
4096 | 20 | 100% | 20% |
8192 | 0 | 100% | 0% |
Puntuación máxima promedio: 2467.84
Tasa de victorias promedio: 78%
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
256 | 0 | 0% | 100% |
512 | 2 | 2% | 100% |
1024 | 20 | 22% | 98% |
2048 | 48 | 70% | 78% |
4096 | 29 | 99% | 30% |
8192 | 1 | 100% | 1% |
Mi computadora MacBook Pro 15 "2012 (Mid) no puede manejar la cantidad de cálculo masiva. Para aquellos que estén interesados en este tema, pueden intentar establecer el número de profundidad más grande para ver lo que está sucediendo.
Intenté un enfoque diferente a este problema. En la etapa inicial del juego, utilicé una pequeña profundidad para buscar para acelerar el proceso. La profundidad comienza a partir de 2 y obtiene uno más más grande después de cada 400 se mueve hasta alcanzar la profundidad del establecimiento.
Corrí 200 épocas y solo el 42.5% del total de juegos alcanzan la profundidad 6. Sin embargo, el resultado de la profundidad 6 es bastante impresionante.
Alcance máximo | Cuenta | Acumular % | Acumular el % de acumulación inversa |
---|---|---|---|
1024 | 1 | 1.18% | 100% |
2048 | 50 | 60% | 98.8% |
4096 | 34 | 100% | 40% |
En profundidad 5, la puntuación y los números correspondientes de movimiento. Podemos ver que en promedio tenemos que movernos por encima de 1600 pasos para llegar a 2048.
Alcance máximo | Cuenta | Suma de movimientos | Número promedio de movimiento por juego |
---|---|---|---|
512 | 2 | 1172 | 586 |
1024 | 25 | 25321 | 1012.84 |
2048 | 56 | 93276 | 1665.64 |
4096 | 17 | 48163 | 2833.12 |
Después de implementar el método de búsqueda, estudié algún método de aprendizaje de refuerzo (RL). Para comprender de manera más exhaustiva sobre RL, implemento DQN, que es una rama principal de RL en el juego 2048.
DQN está utilizando el valor Q como recompensa para evaluar la decisión que toma la máquina.
Los códigos están en la carpeta DQN.
Sarsa también es una especie de RL. Sarsa es ligeramente diferente de DQN.
En resumen, la diferencia es que la política de Sarsa elige la forma más segura de evitar el fracaso (juego terminado) en el juego.
Por otro lado, la política de DQN siempre elige la manera de alcanzar los puntajes más altos y, a veces, no tiene fallas en el juego temprano.
Los códigos están en la carpeta Sarsa.