-
Notifications
You must be signed in to change notification settings - Fork 13
/
pst.py
128 lines (112 loc) · 6.84 KB
/
pst.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import numpy as np
import chess
pst = np.array(
[[[[ -0., 0., 0., -0., 0., -0., 0., -0.],
[ 97., 125., 110., 122., 146., 181., 202., 181.],
[ 62., 90., 73., 71., 78., 101., 113., 98.],
[ 20., 39., 25., 12., -0., 7., 41., 39.],
[ -3., 22., 6., -5., -11., -9., 19., 7.],
[ 0., 24., 5., -15., -33., -24., 6., 2.],
[ -20., 23., 15., -26., -62., -35., 1., -2.],
[ 0., 0., 0., -0., 0., -0., 0., 0.]],
[[ -94., 11., 18., 53., 39., 21., 17., -115.],
[ 21., 40., 79., 72., 69., 68., 33., -2.],
[ 60., 82., 100., 108., 107., 65., 68., 21.],
[ 74., 53., 110., 68., 95., 79., 28., 25.],
[ 14., 65., 58., 52., 15., 57., 28., -8.],
[ -43., 6., 8., 41., 34., -12., -18., -58.],
[ -38., -37., -11., -18., -16., -24., -40., -103.],
[-110., -38., -47., -49., -64., -83., -52., -164.]],
[[ -3., 8., -5., 18., 12., 6., 6., -8.],
[ -32., 4., 28., 13., 12., 31., 23., -23.],
[ 43., 46., 7., 42., 55., 21., 32., -2.],
[ 18., 2., 43., 52., 57., 34., 16., 6.],
[ 3., 10., 6., 27., 42., 14., 15., 4.],
[ -1., 3., 8., 16., 11., 17., 13., -0.],
[ -29., 6., -3., -6., -12., 7., -5., -4.],
[ -74., -30., -36., -48., -45., -29., -18., -31.]],
[[ 107., 101., 94., 96., 98., 101., 106., 94.],
[ 108., 105., 118., 120., 120., 123., 115., 113.],
[ 109., 124., 129., 122., 115., 121., 115., 106.],
[ 80., 92., 96., 85., 90., 91., 84., 79.],
[ 24., 54., 39., 34., 36., 45., 38., 29.],
[ 8., 29., 11., 5., 4., 6., 7., -8.],
[ -18., -1., -7., -8., -2., -4., -18., -32.],
[ -36., 22., -0., 15., 19., 16., 3., -15.]],
[[ 214., 212., 213., 205., 187., 184., 165., 137.],
[ 231., 217., 234., 218., 199., 191., 152., 129.],
[ 209., 236., 254., 220., 202., 179., 162., 123.],
[ 178., 189., 187., 199., 181., 168., 134., 120.],
[ 152., 149., 152., 146., 145., 132., 118., 103.],
[ 113., 120., 123., 120., 110., 119., 103., 88.],
[ 84., 71., 94., 108., 119., 111., 95., 81.],
[ 54., 20., 22., 73., 99., 82., 73., 78.]],
[[ -0., 72., 46., 28., 25., 31., 49., 0.],
[ 44., 96., 70., 52., 48., 60., 80., 30.],
[ 24., 78., 59., 37., 42., 52., 64., 24.],
[ 14., 40., 40., 26., 27., 39., 45., 23.],
[ -21., 5., 12., 15., 16., 18., 18., -3.],
[ -41., -16., -11., -5., -8., -12., -4., -26.],
[ -31., -11., -23., -28., -26., -25., -13., -2.],
[ -46., -17., -67., -73., -72., -28., 14., -32.]]],
[[[ 0., -0., -0., 0., -0., -0., 0., 0.],
[ 19., -29., -20., 26., 45., 36., 16., 11.],
[ -2., -22., -6., -1., 10., 26., 5., 8.],
[ 5., -19., -12., 9., 11., 9., -3., -0.],
[ -18., -37., -30., -29., -13., -5., -29., -28.],
[ -63., -88., -84., -80., -94., -93., -90., -83.],
[-108., -142., -135., -148., -154., -183., -191., -177.],
[ -0., 0., 0., 0., 0., 0., 0., -0.]],
[[ 126., 37., 59., 60., 68., 88., 56., 157.],
[ 44., 51., 6., 9., 11., 36., 65., 97.],
[ 40., -15., -13., -44., -38., 6., 14., 61.],
[ -5., -60., -65., -54., -41., -46., -23., 27.],
[ -68., -49., -101., -60., -79., -69., -20., -18.],
[ -46., -67., -93., -93., -98., -57., -46., -18.],
[ -13., -31., -69., -71., -62., -62., -19., 2.],
[ 114., -3., -15., -42., -25., -20., -8., 128.]],
[[ 62., 35., 33., 52., 43., 48., 13., 53.],
[ 10., -9., 5., 5., 29., -4., 14., -8.],
[ 5., -4., -14., -12., -19., -14., -20., 12.],
[ 7., -6., -11., -42., -42., -27., -9., 6.],
[ -6., -4., -48., -49., -60., -32., -9., 8.],
[ -39., -46., -15., -42., -41., 2., -32., -4.],
[ 25., 5., -26., -20., -9., -27., -23., 24.],
[ 7., -4., 18., -13., -12., -5., -4., 5.]],
[[ 41., -9., 0., -7., -13., -10., -2., 23.],
[ 34., -3., 2., 2., 2., 2., 16., 38.],
[ -2., -21., -4., -7., -8., -1., -2., 20.],
[ -30., -52., -43., -46., -55., -44., -41., -25.],
[ -86., -95., -100., -93., -96., -86., -87., -79.],
[-110., -118., -125., -122., -122., -114., -114., -104.],
[-107., -101., -114., -117., -121., -116., -105., -104.],
[-102., -96., -88., -90., -87., -90., -98., -91.]],
[[ -55., -6., -18., -67., -90., -67., -67., -86.],
[ -84., -61., -86., -98., -92., -104., -100., -84.],
[-109., -123., -118., -119., -104., -118., -99., -84.],
[-138., -145., -147., -152., -142., -127., -121., -89.],
[-170., -175., -186., -198., -175., -159., -126., -114.],
[-194., -225., -246., -216., -203., -174., -164., -121.],
[-230., -208., -217., -214., -204., -187., -141., -127.],
[-215., -206., -209., -204., -187., -183., -174., -146.]],
[[ 45., 20., 71., 84., 65., 35., 8., 21.],
[ 28., 12., 24., 25., 27., 18., 14., 6.],
[ 35., 14., 12., 6., 8., 12., 5., 23.],
[ 17., -10., -18., -15., -11., -14., -14., 2.],
[ -18., -43., -43., -30., -31., -39., -42., -22.],
[ -29., -82., -65., -43., -43., -52., -65., -32.],
[ -44., -101., -77., -61., -53., -63., -80., -44.],
[ 0., -67., -58., -38., -28., -36., -57., -13.]]]]).\
reshape(2, 6, 64)[:,:,::-1]
piece = [112., 293., 345., 500., 910., 0.]
check = -33.
turn = 24.
castling = {chess.A1: 10., chess.A8: 21., chess.H1: -24., chess.H8: -31.}
# TODO: This might be an interesting parameter to optimize over.
# Smaller values give more weight to evaluations, hence forcusing search more
# on exploiting evaluations gains over policy exploration.
scale = 572.784
def to_win(cp):
return np.tanh(cp / scale)
def from_win(win):
return np.arctanh(win) * scale