Pengembangan Hand Indexer dengan Markdown dan C++17 atau Versi yang Lebih Baru

Pengembangan Hand Indexer dengan Markdown dan C++17 atau Versi yang Lebih Baru

Prasyarat Kompilasi

  • Microsoft Visual Studio
  • Compiler Clang (dapat diinstal menggunakan VS Installer)
  • Windows SDK Versi 10 (versi lainnya belum ditestkan)
  • RAM lebih dari 128 GB (tergantung pada jumlah pemain dan ukuran informasi/aksi)

Kompilasi

Kompile proyek dengan opsi -march=native dan tingkat optimasi tertinggi untuk mencapai kinerja maksimal pada sistem Anda
Jalankan eksekutabl yang dihasilkan

Konfigurasi

Banyak parameter dapat ditemukan dalam file params.h atau params.cpp

Hardware

  • nofThreads: Jumlah thread terlama yang digunakan

Parameter Permainan

  • raises: Fraksi pot yang valid sebagai ukuran taruhan
  • buyIn: Umumnya 100 * Big Blind
  • nofPlayers: Jumlah pemain
  • BB: Big blind
  • SB: Small blind

Abstrak Informasi

  • nofOpponentClusters: Jumlah klaster lawan yang digunakan untuk clustering OCHS pada sungai
  • nofRiverBuckets: Jumlah klaster untuk sungai
  • nofTurnBuckets: Jumlah klaster untuk turn
  • nofFlopBucks: Jumlah klaster untuk flop

Perlu diingat bahwa imperfect recall digunakan setelah flop.

Contoh Jalankan

Verifikasi hand indexer dan benchmark kinerja

Kartu seperti AdKd dan AcKc yang memiliki suit isomorphik dan dapat ditangani sebagai identik selama pelatihan. Untuk mapping kartu poker ke equivalent kanoninya, algoritma dikembangkan oleh Kevin Waugh digunakan. Informasi lebih lanjut dapat ditemukan dalam paper penelitian masing-masing.

Klastering Hand Preflop

Hand awal diproses menjadi 16 (atau sebagai yang spesifik) klaster lawan dengan menghasilkan sampel Monte Carlo hingga sungai dan bermain melawan semua kemungkinan hand lawan. Histogram keberadaan yang dihasilkan kemudian diklaster menggunakan jarak penggerak bumi (EMD). Klaster 16 ini membantu menurunkan waktu yang dibutuhkan untuk klastering sungai. Perlu diingat bahwa 169 kemungkinan hand preflop sendiri tidak diklaster selama pelatihan.

Menghitung Histogram Sungai, Turn, dan Flop

Untuk masing-masing kombinasi hand sungai (2 + 5 kartu) isomorphik suit, histogram keberadaan dihitung dengan menghitung kemenangan dan seri melawan semua kemungkinan klaster lawan. Dalam cara yang sama, histogram turn (2 + 4 kartu) dan flop (2 + 3 kartu) dihitung. Namun, dalam dua kasus terakhir, dapat bermain melawan semua kombinasi hand lawan dan tidak hanya 16 klaster lawan.

Klastering Histogram Sungai, Turn, dan Flop

Histogram sungai diklaster menggunakan k-means++ dengan metrik Euclidean (L2) dan histogram turn serta flop dengan jarak penggerak bumi. Contoh beberapa klaster dapat dilihat di atas. Kartu pertama dua adalah hand awal pemain.

Pelatihan

Contoh jalankan pelatihan dengan dua pemain, buy-in 200 masing-masing, big blind 2 dan small blind 1 ditampilkan di atas. Raises disetel menjadi 1, 2 dan 3 kali pot untuk semua babak taruhan. Informasi abstrak yang kuat 1000 klaster untuk flop, turn dan sungai digunakan (169-1000-1000-1000).

Setelah 2'900'000 iterasi pelatihan awal, sekitar 6 juta informasi disinggung dan preflop probabilities tindakkan sebagai berikut dihitung untuk pemain small blind.

Demikian juga, chart yang menunjukkan tindakan preflop pemain big blind setelah tindakan oleh pemain small blind.

Hasil

Pada sekitar 82'000'000 iterasi pelatihan, tabel preflop sebagai berikut dihitung. Perlu diingat bahwa lebih sedikit hand dibuang dan hands yang kuat serta lemah diserang sementara rata-rata hand dipanggil.

Demikian juga, chart yang menunjukkan tindakan preflop pemain big blind setelah tindakan oleh pemain small blind.

Tulisan

Pengembangan Hand Indexer dengan Markdown dan C++17 atau Versi yang Lebih Baru.