Bangun AI untuk memenangkan pertandingan 2048
Hal terpenting tentang 2048 adalah mencapai skor tertinggi dengan menggerakkan ubin dan menggabungkan ubin yang sama.
Kita harus mendefinisikan cara memindahkan ubin dalam permainan dan bagaimana menghasilkan ubin baru setelah setiap gerakan.
Kode ada di Env.py
Upaya pertama saya adalah menggunakan metode pencarian pohon Monte Carlo untuk memenangkan permainan. Saya mencoba melalui semua gerakan yang mungkin dalam kedalaman pencarian yang diberikan, dan kemudian membandingkan skor dalam hasil untuk memilih keputusan terbaik dalam situasi tertentu.
Kode berada di 2048_Search.py
Dalam metode ini, saya mengatur kedalaman dari 1 hingga 5 dan berlari 100 kali di setiap kedalaman.
Inilah beberapa hasilnya.
PS: Tingkat kemenangan rata -rata mewakili kesempatan untuk mencapai 2048.
Rata -rata skor maks: 210.24
Tingkat kemenangan rata -rata: 0%
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
32 | 1 | 1% | 100% |
64 | 6 | 7% | 99% |
128 | 39 | 46% | 93% |
256 | 47 | 93% | 54% |
512 | 7 | 100% | 7% |
1024 | 0 | 100% | 0% |
Rata -rata skor maks: 1223.68
Tingkat kemenangan rata -rata: 30%
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
256 | 4 | 4% | 100% |
512 | 19 | 23% | 96% |
1024 | 47 | 70% | 77% |
2048 | 29 | 99% | 30% |
4096 | 1 | 100% | 1% |
8192 | 0 | 100% | 0% |
Rata -rata skor maks: 1646.08
Tingkat kemenangan rata -rata: 54%
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
256 | 1 | 1% | 100% |
512 | 9 | 10% | 99% |
1024 | 36 | 46% | 90% |
2048 | 48 | 94% | 54% |
4096 | 6 | 100% | 6% |
8192 | 0 | 100% | 0% |
Rata -rata skor maks: 2216.96
Tingkat kemenangan rata -rata: 78%
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
256 | 0 | 0% | 100% |
512 | 3 | 3% | 100% |
1024 | 19 | 22% | 97% |
2048 | 58 | 80% | 78% |
4096 | 20 | 100% | 20% |
8192 | 0 | 100% | 0% |
Rata -rata skor maks: 2467.84
Tingkat kemenangan rata -rata: 78%
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
256 | 0 | 0% | 100% |
512 | 2 | 2% | 100% |
1024 | 20 | 22% | 98% |
2048 | 48 | 70% | 78% |
4096 | 29 | 99% | 30% |
8192 | 1 | 100% | 1% |
Komputer saya MacBook Pro 15 "2012 (MID) tidak dapat menangani jumlah komputasi besar -besaran. Bagi mereka yang tertarik dengan topik ini dapat mencoba mengatur jumlah kedalaman yang lebih besar untuk melihat apa yang terjadi.
Saya mencoba pendekatan yang berbeda untuk masalah ini. Pada tahap awal permainan, saya menggunakan kedalaman kecil untuk mencari untuk mempercepat proses. Kedalaman dimulai dari 2 dan semakin besar setelah setiap 400 gerakan sampai mencapai kedalaman yang ditetapkan.
Saya menjalankan 200 zaman dan hanya 42,5% dari total permainan mencapai kedalaman 6. Namun, hasil dari kedalaman 6 cukup mengesankan.
Jangkauan maksimal | Hitungan | Menumpuk % | Terbalik menumpuk % |
---|---|---|---|
1024 | 1 | 1,18% | 100% |
2048 | 50 | 60% | 98,8% |
4096 | 34 | 100% | 40% |
Secara kedalaman 5, skor dan jumlah gerakan yang sesuai. Kita dapat melihat bahwa secara rata -rata kita harus bergerak di atas 1600 langkah untuk mencapai 2048.
Jangkauan maksimal | Hitungan | Jumlah gerakan | Jumlah rata -rata gerakan per game |
---|---|---|---|
512 | 2 | 1172 | 586 |
1024 | 25 | 25321 | 1012.84 |
2048 | 56 | 93276 | 1665.64 |
4096 | 17 | 48163 | 2833.12 |
Setelah saya mengimplementasikan metode pencarian, saya mempelajari beberapa metode pembelajaran penguatan (RL). Untuk memahami secara lebih komprehensif tentang RL, saya menerapkan DQN yang merupakan salah satu cabang utama RL pada tahun 2048 game.
DQN menggunakan nilai-Q sebagai hadiah untuk mengevaluasi keputusan yang dibuat mesin.
Kode ada di folder DQN.
Sarsa juga semacam RL. Sarsa sedikit berbeda dari DQN.
Singkatnya, perbedaannya adalah bahwa kebijakan SARSA memilih cara paling aman untuk menghindari kegagalan (permainan lebih) dalam permainan.
Di sisi lain, kebijakan DQN selalu memilih cara untuk mencapai skor tertinggi dan terkadang mendapatkan kegagalan di awal permainan.
Kode ada di folder Sarsa.