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 true – true 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.