diff options
Diffstat (limited to 'ausbutler')
-rw-r--r-- | ausbutler/butler.py | 21 | ||||
-rw-r--r-- | ausbutler/interface.py | 11 |
2 files changed, 15 insertions, 17 deletions
diff --git a/ausbutler/butler.py b/ausbutler/butler.py index 2fae840..2766069 100644 --- a/ausbutler/butler.py +++ b/ausbutler/butler.py @@ -1,17 +1,10 @@ -import json -from os import path -import __main__ - -config = json.load( - open(path.join(path.dirname(__main__.__file__), 'config', 'butler.json'))) - -def cutoff(score): +def cutoff(score, cutoff_point=32, cutoff_rate=0.1): sign = 1 if score > 0 else -1 score = abs(score) - if score > config['cutoff_point']: - score -= config['cutoff_point'] - score *= config['cutoff_rate'] - score += config['cutoff_point'] + if score > cutoff_point: + score -= cutoff_point + score *= cutoff_rate + score += cutoff_point return score * sign def get_opponents(butler, player): @@ -32,10 +25,10 @@ def get_room(butler, player): if player in [table.closeE, table.closeW, table.closeN, table.closeS]: return 'closed' -def normalize(butler): +def normalize(butler, opp_factor=0.5): if butler.board_count == 0: return 0.0 return ( butler.cut_score / butler.board_count - + butler.opp_score * config['opponent_factor'] + + butler.opp_score * opp_factor ) * butler.board_count diff --git a/ausbutler/interface.py b/ausbutler/interface.py index 99b0e9d..cd8df45 100644 --- a/ausbutler/interface.py +++ b/ausbutler/interface.py @@ -6,8 +6,9 @@ import re class Interface: - def __init__(self): + def __init__(self, config): self.session = Session() + self.config = config def init_db(self, force=False): from .model import Base @@ -28,7 +29,10 @@ class Interface: aus_b.match = int(column_match.group(1), base=10) aus_b.segment = int(column_match.group(2)) aus_b.score = float(value) - aus_b.cut_score = cutoff(aus_b.score) + aus_b.cut_score = cutoff( + aus_b.score, + self.config['cutoff_point'], + self.config['cutoff_rate']) aus_b.board_count = aus_b.table.butler_count[ get_room(aus_b, butler.id)] self.session.add(aus_b) @@ -52,5 +56,6 @@ class Interface: def normalize_scores(self): for butler in self.session.query(AusButler).all(): - butler.corrected_score = normalize(butler) + butler.corrected_score = normalize( + butler, self.config['opponent_factor']) self.session.commit() |