Peluang Preflop – Membangun Bot Bingo yang Lebih Baik – Mac Poker Bot

Dalam posting terakhir saya, saya memamerkan beberapa hasil pertama dari eksperimen poker saya. Logika otomatis yang menjalankan bot poker saya telah diatur untuk menunggu kartu saku tertentu di preflop, dan jika kecocokan ditemukan, cukup masuk semua:

NSString *allInCardsStr = @"AA KK QQ JJ AJ AK TT 99 88 77 AQ KQ";
NSSet *allInCardsSet = [NSSet setWithArray:[allInCardsStr componentsSeparatedByString:@" "]];

NSLog(@"checking if cards (%@) are found in set: %@",pocketCards, allInCardsStr);
shouldAllIn = [allInCardsSet containsObject:pocketCards];

Jenis “botting bingo” ini memiliki potensi, dan sejauh ini telah membuahkan hasil, tetapi masih terlalu banyak keberuntungan dan terlalu banyak risiko yang terlibat untuk keinginan saya. Probabilitas menang berubah tergantung pada jumlah pemain, dan logika ini tidak memperhitungkan itu. Ini sesuatu yang bisa mendapatkan keuntungan dari kontrol halus.

Ini adalah peluang yang terlibat dalam preflop untuk beberapa kartu yang menarik ini:

preflop odds:
 	2       3       4       5       6       7       8       9
AA 	0.851	0.733	0.634	0.557	0.489	0.431	0.384	0.343
KK 	0.822	0.688	0.581	0.495	0.426	0.372	0.326	0.290
QQ 	0.796	0.644	0.533	0.443	0.375	0.322	0.279	0.246
JJ 	0.771	0.608	0.489	0.399	0.333	0.282	0.243	0.213
TT 	0.748	0.573	0.448	0.360	0.294	0.246	0.213	0.186
99 	0.716	0.534	0.409	0.322	0.262	0.222	0.191	0.168
88 	0.689	0.497	0.373	0.292	0.235	0.198	0.175	0.154
77 	0.657	0.461	0.338	0.264	0.214	0.182	0.160	0.145

Suited
AK 	0.663	0.499	0.406	0.345	0.302	0.267	0.241	0.217
AQ 	0.663	0.483	0.388	0.323	0.282	0.249	0.221	0.200
AJ 	0.664	0.472	0.372	0.310	0.267	0.235	0.210	0.188
KQ 	0.625	0.462	0.373	0.316	0.275	0.243	0.215	0.196
KJ 	0.615	0.446	0.358	0.298	0.259	0.227	0.204	0.182
KT 	0.605	0.435	0.341	0.288	0.247	0.214	0.191	0.172

Unsuited
AK 	0.643	0.475	0.376	0.316	0.269	0.235	0.206	0.185
AQ 	0.645	0.457	0.357	0.293	0.249	0.215	0.186	0.165
AJ 	0.625	0.442	0.339	0.276	0.232	0.198	0.171	0.150
KQ 	0.603	0.433	0.342	0.283	0.241	0.208	0.181	0.159
KJ 	0.593	0.419	0.325	0.263	0.223	0.189	0.165	0.146
KT 	0.584	0.404	0.309	0.252	0.210	0.179	0.154	0.135

Perhatikan variasi tajam tidak hanya tergantung pada jumlah pemain yang terlibat, tetapi juga pada apakah kartu Anda memiliki jenis yang sama atau tidak. Angka-angka ini dihitung menggunakan simulator probabilitas yang sama yang digunakan dalam bot poker, dengan 200000 simulasi berdasarkan jumlah pemain yang tersedia dan kartu yang saat ini terlihat, dengan asumsi tidak ada yang pernah melipat. Hasilnya juga dapat direplikasi secara online dengan berbagai simulator peluang berbasis browser, dan kira-kira harus memperbaiki pengukuran ini.

Meninjau tabel di atas, kita akan mendapatkan gambaran yang lebih jelas mengapa mungkin bukan ide yang baik untuk menggunakan AK yang tidak cocok dengan 9 orang dalam permainan, dibandingkan dengan 2 atau 3 orang yang bermain. Dengan 2 orang bermain, kemungkinan Anda akan menang lebih sering daripada kalah. Peluang ini sedikit berkurang dengan jumlah pemain yang lebih besar, di mana dengan 9 pemain Anda dapat berharap untuk memenangkan kurang dari 20% dari upaya Anda.

Ini adalah logika preflop yang dihasilkan untuk bot poker berbasis bingo saat ini, di-tweak berdasarkan eksperimen:

switch(self.playerCount){
    case 2:
        if(self.winningOdds > 0.58){
        }else{
            [self foldAction];
        }
        break;
        
    case 3:
        if(self.winningOdds > 0.435){
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
        
    case 4:
        if(self.winningOdds > 0.340){
            [self allInAction];
        }else{
            [self foldAction];
            
        }
        break;
        
    case 5:
        if(self.winningOdds > 0.250){
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
        
    case 6:
        if(self.winningOdds > 0.246){//includes AQ unsuited (0.247)
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
        
    case 7:
        if(self.winningOdds > 0.200){
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
        
    case 8:
        if(self.winningOdds > 0.200){
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
        
    case 9:
        if(self.winningOdds > 0.18){
            [self allInAction];
            
        }else{
            [self foldAction];
            
        }
        break;
}

Logika pengambilan keputusan masih sangat sederhana, tetapi kontrol yang didorong oleh peluang yang lebih ketat berarti lebih banyak tangan berisiko rendah dimainkan (misalnya ketika lebih sedikit orang yang bermain), dan tangan yang berisiko lebih tinggi menciptakan kerugian ketika lebih banyak orang terlibat. Itulah yang kami minati. Kami tidak dapat memenangkan semua pihak, tetapi kami dapat mencoba untuk menang lebih banyak daripada yang kami kalahkan, dan bagian dari itu adalah menjaga kemungkinan agar tetap menguntungkan kami sebanyak yang kami bisa.

Hasil sudah mengalir, dengan akun saya yang berumur seminggu telah tumbuh dari sekitar $450k menjadi $7 juta hanya dengan beberapa hari permainan acak. Pencatatan CSV dasar kini telah ditambahkan, jadi semoga saya akan segera memiliki lebih banyak data konkret untuk mendukung pengamatan saya sejauh ini.

Dari banyak hal yang dibaca bot untuk tetap mengetahui keadaan permainan saat ini, yang masih belum terlihat adalah uang di pot (atau pot samping, atau berapa banyak orang yang menelepon atau mengumpulkan (dan berapa banyak) di saat ini. putaran Ini adalah prioritas berikutnya, karena saya akan mencoba menggunakannya untuk membangun lebih banyak logika yang didorong oleh risiko/hadiah untuk bermain lebih dari sekadar preflop.

Tantangan lainnya adalah pengenalan gambar – kartu dan tombol dikenali melalui perbandingan dengan kumpulan data yang diketahui dari gambar yang cocok, tetapi volume noise (chip & kartu yang beterbangan di layar) menghasilkan banyak gambar baru yang perlu diklasifikasikan. Satu jam pemutaran saja menghasilkan setidaknya 100 gambar baru yang perlu diklasifikasikan secara manual. Beberapa sesi pengabaian, dan ini dapat dengan mudah menumpuk. Saya sedang dalam proses melatih model klasifikasi gambar melalui pembelajaran mendalam, yang kemudian dapat saya gunakan untuk mengotomatiskan sebagian besar proses klasifikasi ini. Terlalu lambat untuk menjadi bagian dari alur kerja bot normal, tetapi cukup andal untuk digunakan sebagai proses paralel/sekunder. Pengakuan sejauh ini menggembirakan, tetapi butuh sedikit waktu untuk menyesuaikan.

Author: info

Leave a Reply

Your email address will not be published. Required fields are marked *