equal
deleted
inserted
replaced
13 opponentRating :: RatingData, |
13 opponentRating :: RatingData, |
14 gameScore :: Double |
14 gameScore :: Double |
15 } |
15 } |
16 |
16 |
17 τ, ε :: Double |
17 τ, ε :: Double |
18 τ = 0.3 |
18 τ = 0.2 |
19 ε = 0.000001 |
19 ε = 0.000001 |
20 |
20 |
21 g_φ :: Double -> Double |
21 g_φ :: Double -> Double |
22 g_φ φ = 1 / sqrt (1 + 3 * φ^2 / pi^2) |
22 g_φ φ = 1 / sqrt (1 + 3 * φ^2 / pi^2) |
23 |
23 |
33 μᵢ = (ratingValue oppRating - 1500) / 173.7178 |
33 μᵢ = (ratingValue oppRating - 1500) / 173.7178 |
34 φᵢ = rD oppRating / 173.7178 |
34 φᵢ = rD oppRating / 173.7178 |
35 g_φᵢ = g_φ φᵢ |
35 g_φᵢ = g_φ φᵢ |
36 |
36 |
37 |
37 |
38 calcNewRating :: RatingData -> [GameData] -> RatingData |
38 calcNewRating :: RatingData -> [GameData] -> (Int, RatingData) |
39 calcNewRating oldRating [] = RatingData (ratingValue oldRating) (173.7178 * sqrt (φ ^ 2 + σ ^ 2)) σ |
39 calcNewRating oldRating [] = (0, RatingData (ratingValue oldRating) (173.7178 * sqrt (φ ^ 2 + σ ^ 2)) σ) |
40 where |
40 where |
41 φ = rD oldRating / 173.7178 |
41 φ = rD oldRating / 173.7178 |
42 σ = volatility oldRating |
42 σ = volatility oldRating |
43 |
43 |
44 calcNewRating oldRating games = RatingData (173.7178 * μ' + 1500) (173.7178 * sqrt φ'sqr) σ' |
44 calcNewRating oldRating games = (length games, RatingData (173.7178 * μ' + 1500) (173.7178 * sqrt φ'sqr) σ') |
45 where |
45 where |
46 _Es = map (calcE oldRating) games |
46 _Es = map (calcE oldRating) games |
47 υ = 1 / sum (map υ_p _Es) |
47 υ = 1 / sum (map υ_p _Es) |
48 υ_p (_Eᵢ, g_φᵢ, _) = g_φᵢ ^ 2 * _Eᵢ * (1 - _Eᵢ) |
48 υ_p (_Eᵢ, g_φᵢ, _) = g_φᵢ ^ 2 * _Eᵢ * (1 - _Eᵢ) |
49 _Δ = υ * part1 |
49 _Δ = υ * part1 |