Jeroen Kuijpers, s1556185

Lennart van Luijk, s1588915

 

Win or Lose

An altered poker game

 

 

1. Introductie

Voor het vak Multi-Agent systems hebben we als eindopdracht een bestaand spel geanalyseerd. We hebben voor het spel poker gekozen omdat het op dit moment erg populair is onder studenten. Het spel hebben we enigszins versimpeld zodat de implementatie niet overbodig ingewikkeld werd.

Zie hier voor het spel: WinOrLose.

 

2. Methode

 

 

2.1 Het spel

Het spel poker is versimpeld door een aantal aanpassingen te maken. Ten eerste bestaat het pak kaarten uit 32 verschillende kaarten, namelijk 8 kaarten per kleur. Welke volgorde deze kaarten hebben maakt niet uit, aangezien de flushes (flush, straight flush en royal flush) niet als mogelijke combinatie gelden. Ook de straight (straat) behoort niet tot de combinaties. De enige combinaties uit poker (Texas hold’em variant) die hierdoor overblijven zijn in volgorde van laag naar hoog: High card, One pair, Two pair, Three of a kind, Full house en Four of a kind.

 

Om het spel nog meer te versimpelen worden de kaarten anders gedeeld. Beide spelers krijgen direct 2 kaarten (dicht) in hun hand en er komen 5 open kaarten op tafel. De bedoeling is dat beide spelers van hun eigen 2 kaarten en de 5 kaarten op tafel de beste 5 kaarten ‘nemen’, dat is hun combinatie (net als bij de originele versie). Ze weten dus minimaal 3 en maximaal 5 van de kaarten van de tegenstander (5 in het geval deze zijn hoogste combinatie volledig op tafel ziet liggen).

 

2.2 Spelverloop

Speler 1 (Frank) moet als eerste zeggen of hij denkt te gaan winnen of verliezen. Speler 2 (Tina) antwoordt daarop wat zij denkt dat de uitkomst voor haar zal zijn; wederom winst of verlies. Er wordt dus niet geboden, er is maar één ronde en er kan niet worden gebluft.

 

Vervolgens worden de punten toegekend aan een goede dan wel foute voorspelling. Een goed voorspelde winst levert 2 punten op en een goed voorspeld verlies 1 punt. Wordt er verloren terwijl winst voorspeld was, dan levert dat 2 punten aftrek op. Wordt er gewonnen terwijl er verlies voorspeld was, dan levert dat 1 punt aftrek op. Beide spelers hebben verschillende karakters waaruit gekozen kan worden, dit zal in de volgende paragraaf besproken worden.

 

De reden waarom voor deze opzet is gekozen, is dat Tina nu over Franks kennis kan redeneren. Zij kan aan de hand van haar kaarten gaan bedenken hoe groot haar winkans is. De voorspelling van Frank geeft haar ook informatie over haar kansen, en naarmate zij langer speelt kan ze steeds meer doordat krijgen hoe Frank speelt.

 

2.3 Implementatie

 

2.3.1 Winkans

Het meest essentiële deel van de software is het gedeelte waar de winkans wordt berekend. Elke speler weet exact welke kaarten er van tevoren in het spel zitten en kan met die informatie nadat de kaarten gedeeld zijn zijn/haar eigen winkans in procenten uitrekenen. Dit geschiedt door elke keer uit te rekenen welke combinaties de tegenstander kan hebben en hoeveel hiervan meer opleveren dan de huidige combinatie. Zo kan uitgerekend worden hoe groot de kans op winst is.

 

2.3.2 Karaktertypen

Beide spelers krijgen voordat het spel begint een karaktertype toegekend. Voor Frank (die altijd begint) is dat Normal, Tight of Loose. Deze karaktertypen staan vast per compleet spel (bestaand uit meerdere ronden). Deze karaktertypen hebben alleen invloed op de drempelwaarden die worden gebruikt voor de winkans. Als Frank wordt verteld dat hij Tight speelt, houdt dat in dat zijn winkans minimaal 75% moet zijn wil hij ‘winst’ voorspellen. Met Normal is deze drempel 50% en met Loose is dat 25%.

 

Tina heeft 5 karaktertypen; Blind, Competitive, Cooperative, Smart en Learning. ‘Blind’ is hetzelfde als het type Normal van Tina, er wordt namelijk een winstdrempel van 50% hanteerd en de voorspelling van speler 1 wordt dus compleet genegeerd. ‘Competitive’ houdt in dat Tina altijd hetzelfde zegt als Frank, tenzij haar winstkans beneden de 30% ligt. In dat laatste geval zal zij altijd verlies voorspellen. ‘Cooperative’ is een strategie waarin Tina altijd het tegenovergestelde zegt van Frank, tenzij haar winkans boven de 70% ligt. In dat geval zal zij altijd een winst voorspellen, ongeacht wat Frank heeft gezegd. Dit zijn drie vrij starre karaktertypen, vandaar dat deze verzameling is uitgebreid met twee meer dynamische karakters.

 

Smart is een karaktertype waarbij de voorspelling van Frank invloed heeft op de voorspelling van Tina. Zegt Frank dat hij gaat winnen, dan legt Tina haar drempelwaarde voor de winkans op 60%. In het geval dat Frank voorspelt dat hij gaat verliezen, zal Tina haar drempelwaarde voor de winst op 40% leggen. Deze waarden zijn arbitrair.

 

Het laatste karaktertype is Learning. Tina onthoudt hierbij de combinatie van kaarten uit de vorige ronde, omdat die aan het einde van elke ronde open op tafel komen. Vervolgens rekent ze in de volgende ronde uit wat de winkans van Frank met deze combinatie was en dat koppelt ze aan wat hij voorspeld heeft. Hiermee houdt ze daarna bij wat de laagste winkans is waarmee Frank nog de winst voorspelde alsmede de hoogste winkans waarmee Frank het verlies voorspelde. Deze twee grenzen convergeren na veel iteraties naar elkaar zodat Tina er uiteindelijk achterkomt of Frank Tight, Loose of Normal speelt. Zij heeft geen idee dat deze karaktertypen voor Frank bestaan maar komt er door het leerproces achter wat de drempelwaarde is die Frank hanteert.

 

2.3.3 Grafische interface

De grafische interface laat 3 knoppen zien. De Start knop dient om 1 spel te starten. Alle tekstvelden kunnen met Clear weer geleegd worden. De ‘Loop!’-Knop kan worden ingedrukt nadat in het invulveld ernaast is ingevuld hoeveel keer het spel achter elkaar dient te draaien. Dit is doorgaans een waarde tussen de 50 en de 1000.

Midden in het scherm zien we twee tekstvelden staan, de linker voor speler 1 en de rechter voor speler 2. Aan de buitenste zijkant van beide invulvelden bevindt zich de drop-down box waar het karaktertype van de betreffende speler kan worden gekozen. Het invulveld laat na een spel (of meer) de uitkomst van het laatste spel zien: Cards geeft aan welke twee kaarten een speler heeft (0 t/m 7 voor een pak met 8 kaarten). De kleur van kaarten wordt niet aangegeven omdat kleur niet gebruikt wordt voor het maken van combinaties. Daaronder staat opgeteld het puntentotaal van de speler voor de gespeelde potjes. Bij “Prediction of winning” wordt de voorspelling getoond die de speler heeft gemaakt voor het laatste potje (dus met de huidige kaarten). Als laatste staat daaronder de score. Deze is als volgt:

A.BB.CCCCC

 

A = Staat voor combinatie

BB = Hoogste paar en laagste paar

CCCCC = De overgebleven kickers of highcards

 

Dit houdt met 2.65.00007 in dat de speler de combinatie ‘two pair’ heeft, waarvan één paar zessen en één paar vijven. Als laatste kaart heeft de speler een 7.

 

De codes voor de combinaties zijn als volgt:

0.xx.xxxxx = Alleen een High Card (dus de laatste 5 getallen zijn als enige niet 0)

 

1.xx.xxxxx = One pair.

2.xx.xxxxx = Two pair.

3.xx.xxxxx = Three of a kind.

4.xx.xxxxx = Full House.

5.xx.xxxxx = Four of a Kind.

 

In het voorbeeld met de two pair hierboven eindigt de score dus op .00007 aangezien er na de combinatie nog één kaart (de zogehete ‘kicker’) overblijft. Met alleen een High Card zou de score bijvoorbeeld 0.00.76321 zijn. En een score van 4.36.00000 is bijvoorbeeld een Full House met drie 3’en en twee 6’en. Hier komt dus de drie éérst en daarna pas de (hogere) 6, wat komt doordat er meer 3’en dan 6’en in deze hand zitten.

 

Als laatste is midden onder het grote tekstvak te zien. Hierin staan de 5 kaarten op tafel uit de laatste speelronde vermeld met daaronder de voorspelling :

Voorspelling speler 1 – voorspelling speler 2.

Dit houdt dus in dat truetrue betekent dat beide spelers in de laatste ronde hebben voorspeld die ronde te gaan winnen.

 

3. Resultaten

 

In de volgende tabel staan de winstkansten van Tina (als fractie tussen

0 en 1) afgezet tegen de combinaties van karaktertypen.

 

 

Loose

Normal

Tight

Blind

0.64

0.49

0.49

Competitive

0.05

0.07

0.08

Cooperative

0.47

0.54

0.57

Smart

0.72

0.58

0.54

Learning

0.69

0.55

0.52

 

Hierin is dus te zien dat player 1 in elk karaktertype nog winstkansen heeft, net als speler 2. Ook is te zien dat in 9 van de 15 gevallen de winstkans het grootst is voor speler 2. Dit is ook logisch, aangezien deze speler gebruik maakt van de informatie die wordt verkregen uit de voorspelling van speler 1. Als speler 2 hier actief gebruik van maakt, dus in Smart of Learning modus, dan wint deze bijna altijd van speler 1.

 

De beste winkans heeft speler 2 in de modus Smart. Dit is tegen de verwachtingen in, aangezien Learning nog veel dynamischer met de verkregen informatie omgaat. Daarom was de verwachting dat deze modus na veel training (meer dan 100 rondes) beter zou kunnen presteren dan Smart.