Inconsistent APS with LiteRumble
Jump to navigation
Jump to search
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page.
Return to Thread:Talk:RoboRunner/Inconsistent APS with LiteRumble.
Here is a Python script that calculates APS correctly. Use this script when you want to align with LiteRumble.
import os
import gzip
import xml.etree.ElementTree as ET
from statistics import mean
from collections import defaultdict
roborunner_dir = os.path.expanduser('~/roborunner') # replace with your roborunner directory
def get_aps_dict(bot):
scores = ET.parse(gzip.open(f'{roborunner_dir}/data/{bot}.xml.gz', 'r')).getroot()
aps_raw = defaultdict(list)
for bot_list in scores:
for battle in bot_list:
battle_scores = {}
total_score = 0
for robot_score in battle.findall('robot_score'):
name = robot_score.find('name').text
score = int(robot_score.find('score').text)
battle_scores[name] = score
total_score += score
aps = 100 * battle_scores[bot] / total_score
for name, _ in battle_scores.items():
if name != bot:
aps_raw[name].append(aps)
return dict((name, mean(aps)) for name, aps in aps_raw.items())
Update: The APS fix is now included in the newest release of my fork. A PR is also made to Voidious’s version.