6 def __init__(self, global_K = 15, initial = 100, floor = 100, logdistancefactor = math.log(10)/float(400), maxlogdistance = math.log(10)):
7 self.global_K = global_K
10 self.logdistancefactor = logdistancefactor
11 self.maxlogdistance = maxlogdistance
15 def __init__(self, fulltime, mintime, minratio, games_min, games_max, games_factor):
16 self.fulltime = fulltime
17 self.mintime = mintime
18 self.minratio = minratio
19 self.games_min = games_min
20 self.games_max = games_max
21 self.games_factor = games_factor
23 def eval(self, mygames, mytime, matchtime):
24 if mytime < self.mintime:
26 if mytime < self.minratio * matchtime:
28 if mytime < self.fulltime:
29 k = mytime / float(self.fulltime)
32 if mygames >= self.games_max:
33 k *= self.games_factor
34 elif mygames > self.games_min:
35 k *= 1.0 - (1.0 - self.games_factor) * (mygames - self.games_min) / float(self.games_max - self.games_min)
39 # parameters for K reduction
40 # this may be touched even if the DB already exists
41 KREDUCTION = KReduction(600, 120, 0.5, 0, 32, 0.2)
43 # parameters for chess elo
44 # only global_K may be touched even if the DB already exists
45 # we start at K=200, and fall to K=40 over the first 20 games
46 ELOPARMS = EloParms(global_K = 200)