user_data_based_AI_based_rank_estimation-simplification

This commit is contained in:
bale-go committed 2020-06-27 00:49:42 +02:00
1 parent 9708680504
commit 142ae577a1
1 file changed
+8 -8
+8 -8
View File
@@ -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()