user_data_based_AI_based_rank_estimation-simplification
This commit is contained in:
1 parent
9708680504
commit
142ae577a1
1 file changed
+8
-8
@@ -163,11 +163,13 @@ def averagemod(data):
|
||||
(int(lendata * 0.8) + 1) - int(lendata * 0.2)
|
||||
) # average without the best and worst 20% of ranks
|
||||
|
||||
def gauss(data):
|
||||
return math.exp(-1*(data)**2)
|
||||
|
||||
class RankGraph(Graph):
|
||||
black_rank_points = ListProperty([])
|
||||
white_rank_points = ListProperty([])
|
||||
segment_length = NumericProperty(60)
|
||||
segment_length = NumericProperty(80)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
@@ -196,13 +198,11 @@ class RankGraph(Graph):
|
||||
if item > num_legal[i]*0.09:
|
||||
rank[i] = num_legal[i]*0.09
|
||||
rank = tuple(rank)
|
||||
averagemod_rank = averagemod(rank)
|
||||
averagemod_rank = averagemod(rank)+1
|
||||
averagemod_len_legal = averagemod(num_legal)
|
||||
# the averagemod_rank is the outlier free average of the best move from a selection of n_moves with averagemod_len_legal of total legal moves
|
||||
if averagemod_rank>0.4:
|
||||
rank_kyu = -0.62842816*math.log(averagemod_rank)/(0.17050253+averagemod_rank*math.exp(-1*(3.373914*(averagemod_len_legal/num_intersec))**2))+13.588577*(averagemod_len_legal/num_intersec)+10.405252*math.log(averagemod_rank)+12.417778*math.exp(-1*(2.5190649*(averagemod_len_legal/num_intersec))**2)-14.579846
|
||||
else:
|
||||
rank_kyu=-10
|
||||
norm_avemod_len_legal = (averagemod_len_legal/num_intersec)
|
||||
rank_kyu = -0.6284*math.log(averagemod_rank)/(0.1705+averagemod_rank*gauss(3.374*(norm_avemod_len_legal)))+13.59*(norm_avemod_len_legal)+10.41*math.log(averagemod_rank)+12.42*gauss(2.519*(norm_avemod_len_legal))-14.58
|
||||
|
||||
return 1 - rank_kyu # dan rank
|
||||
|
||||
@staticmethod
|
||||
@@ -232,7 +232,7 @@ class RankGraph(Graph):
|
||||
for segment_mid in range(0, len(nodes), dx):
|
||||
bounds = (max(0, segment_mid - half_seg), min(segment_mid + half_seg, len(nodes)))
|
||||
for pl, rank in self.calculate_ranks(policy_stats[bounds[0] : bounds[1] + 1], num_intersec).items():
|
||||
if bounds[1]-bounds[0]>self.segment_length * .75 and bounds[0]<250:
|
||||
if bounds[1]-bounds[0]>self.segment_length * .75:
|
||||
ranks[pl].append((segment_mid, rank))
|
||||
self.rank_by_player = ranks
|
||||
self.redraw_trigger()
|
||||
|
||||
Reference in new issue
Block a user