/
bankroll_demo.py
54 lines (39 loc) · 1.76 KB
/
bankroll_demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from pklearn import Table
from pklearn.templates import simulate, BasicPlayer
from sklearn.ensemble import GradientBoostingRegressor
if __name__ == '__main__':
try: import matplotlib.pyplot as plt
except: print 'Must install matplotlib to run this demo.\n'
t = Table(smallBlind=1, bigBlind=2, maxBuyIn=200)
players = []
for i in range(6):
#create BasicPlayer that uses GradientBoostingRegressor as machine learning model
#with wealth of 1 million and 10 discrete choices for raising,
#with each raise choice .7 times the next largest raise choice
#Player forgets training samples older than 100,000
r = GradientBoostingRegressor()
name = 'Player ' + str(i+1)
p = BasicPlayer(name=name, reg=r, bankroll=10**6, nRaises=10, rFactor=.7, memory=10**5)
p.stopTraining()
players.append(p)
for p in players: t.addPlayer(p)
#train Player 1 for 1000 hands, training once
players[0].startTraining()
simulate(t, nHands=1000, nTrain=1000, nBuyIn=10)
players[0].stopTraining()
#train Player 2 for 10000 hands, training every 1000 hands
players[1].startTraining()
simulate(t, nHands=10000, nTrain=1000, nBuyIn=10)
players[1].stopTraining()
for p in players: p.setBankroll(10**6)
#simulate 20,000 hands and save bankroll history
bankrolls = simulate(t, nHands=20000, nTrain=0, nBuyIn=10)
#plot bankroll history of each player
for i in range(6):
bankroll = bankrolls[i]
plt.plot(range(len(bankroll)), bankroll, label=players[i].getName())
plt.title('Player bankroll vs Hands played')
plt.xlabel('Hands played')
plt.ylabel('Player bankroll/wealth')
plt.legend(loc='upper left')
plt.show()