Pokerbot Challenge je prvo tekmovanje poker botov v Sloveniji. Kaj je poker bot? Citirano iz uradne spletne strani tekmovanja:
“Poker bot je računalniški program, ki zna igrati poker proti človeškemu ali računalniškemu nasprotniku. Kadar govorimo o poker botu, imamo v mislih predvsem umetno inteligenco, ki pozna pravila poker igre, zna razpoznati iz prejetih sporočil karte in akcije nasprotnika ter se na podlagi izbrane strategije odloča o svoji naslednji potezi. Cilj poker bota je premagati svojega nasprotnika, tako da si priigra več čipov kot nasprotnik. Zelo napredni poker boti znajo razpoznati kombinacijo kart, ki jo imajo, modelirati nasprotnika, predvidevati potek igre, spreminjati svojo strategijo, se prilagajati glede na igro nasprotnika in celo blefirati.”
Takoj, ko sem spomladi prejel vabilo na to tekmovanje, me je stvar pritegnila. Umetna inteligenca me že nekaj časa privlači, nad pokrom pa sem se malo resneje navdušil v zadnjem letu. Zavedal sem se dejstva, da mi žal čas trenutno ne dopušča, da bi se tekmovanju resno posvetil (služba, faks, selitev, …). Kljub temu pa me je vleklo k sodelovanju. Ne spomnim se niti natančno, kako se mi je porodila ideja, ampak kar naenkrat sem prišel do ideje, na kakšen način bom sodeloval.
Ker nisem imel časa, da bi napisal zapleteno logiko za igranje, sem se odločil za manjši eksperiment – da napišem nekaj zelo preprostega, ampak morda vseeno učinkovitega. Načrt je bil tak: Nekje na internetu najdem verjetnosti za zmago za vsako možno pre-flop kombinacijo kart. Nato se na podlagi kart, ki ju prejmem v posameznem handu, odločim za fold ali za all-in. V tem primeru mi ni treba skrbeti za nobeno logiko, ker sploh ni važno, kaj naredi nasprotnik. Vedno se bom že v pre-flopu odločil za odstop ali za all-in.
Vse skupaj mi je vzelo 4 popoldneve, še to ne cele. 1 dan sem porabil za iskanje podatkov o verjetnosti posamezne kombinacije. 1 dan sem porabil za študiranje protokola po katerem mora program igrati. 1 dan sem porabil za programiranje bota. 1 dan sem porabil za testiranje in izdelavo drugega bota. Na tekmovanju je namreč vsaka ekipa lahko sodelovala z dvema različnima botoma.
Prilagam sliko, ki prikazuje verjetnosti za zmago v procentih za vseh 169 možnih pre-flop kombinacij kart. Zelena barva prikazuje višjo verjetnost, rdeča nižjo. Procenti na diagonali in nad njo prikazujejo verjetnosti za karte različnih barv (unsuited), verjetnosti pod diagonalo pa se nanašajo na karte enakih barv (suited). Na sliki so obkrožena tista polja, ki imajo verjetnost 50% ali več.
Izbral sem strategijo, kjer grem all-in, če je verjetnost za zmago vsaj 50%, drugače od igre odstopim. Torej, igram v primerih, ko dobim eno izmed kombinacij, ki so na zgornji sliki obkrožene.
Pri izdelavi svojega drugega bota sem se odločil, da bo igral identično prvemu, le da mu bom spremenil mejo, ki odloča o tem ali grem all-in ali ne. Sprva sem imel namen to mejo dvigniti proti 60% (natančneje na 58%), vendar sem se na koncu premislil. Opazil sem namreč, da če imam mejo na 50% ali več, potem foldam v več kot polovici iger (približno v 58% iger). Okvirno se da to videti tudi na sliki – obkroženih polj je manj kot neobkroženih. To bi se lahko pokazalo kot pomanjkljivost. Če bi nasprotnik foldal vedno, kadar bi šel moj bot all-in, bi me brez problema premagal. Zato sem drugemu botu mejo nastavil na 47%, s čemer sem dosegel, da je enako verjetno, da bo šel moj bot all-in ali da bo foldal.
Tekmovanje je potekalo v torek, 25. maja na Fakulteti za računalništvo v Mariboru. Potekalo je v živo na velikem platnu. Ko sem gledal igre svojih botov, sem bil kar malo vznemirjeno nervozen. Tekmovalo je 29 botov, ki jih je žreb razdelil v 4 skupine. Znotraj posamezne skupine se je vsak pomeril z vsakim in tisti, ki je zbral največ zmag v vsaki skupini, je napredoval v polfinale. Selekcija je bila torej kar velika, izmed vseh prijavljenih botov so se v nadaljnje tekmovanje uvrstili samo štirje.
Na spodnjih slikah so rezultati skupin, v katerih sta tekmovala moja bota. Imeni mojih botov sta Indijanci 1 in Indijanci 2.
———–

Glede na vložen trud so se začetna pričakovanja kar uresničila. Pričakoval sem, da zagotovo ne bom zadnji na lestvici, na zmago prav tako nisem računal. Kot sem na začetku že omenil, je šlo za neke vrste eksperiment, kaj se da doseči z eno samo finto na takem tekmovanju. Med živimi igralci strategija zagotovo ne bi delovala, med boti pa bi lahko. Čeprav je botu Indijanci 1 za uvrstitev v sklepni del tekmovanja zmanjkala samo 1 zmaga, sem s tretjim mestom v svoji skupini za letos zadovoljen, v prihodnosti pa bi rad dosegel še kaj več. Če bo to tekmovanje res postalo tradicionalno, kot obljubljajo organizatorji, se ga bom z veseljem še udeležil. Bota bi za začetek lahko nadgradil tako, da se glede na verjetnost zmage odloča med več kot dvemi možnostmi, torej da obstaja še vmesna možnost, kjer ne bi šel all-in, ampak bi stavil le del svojih žetonov. Nato bi v flopu ponovno izračunal verjetnost in se odločil za naprej. To bo že zahtevalo več kot 1 popoldne programiranja, vendar bom verjetno lahko za osnovo vzel letošnjo rešitev.