in scripts/check_eval_stats_solutions.py [0:0]
def main(main_tiers_only):
print('Loading eval stats')
eval_stats = phyre.eval_task_complexity.load_all_eval_stats(-1)
print('Loading tasks')
all_tasks = phyre.loader.load_compiled_task_dict()
print('Initializing simulators')
if main_tiers_only:
simulators = {}
for tier in phyre.action_mappers.MAIN_ACITON_MAPPERS:
simulators[tier] = phyre.ActionSimulator([
t for t in all_tasks.values() if t.tier.lower() == tier.lower()
], tier)
else:
simulators = {
tier: phyre.ActionSimulator(all_tasks.values(), tier)
for tier in ('ball', 'two_balls', 'ramp')
}
print('Running eval')
bad = set()
for template_id, template_stats in eval_stats.items():
print(template_id)
for tier, tier_stats in template_stats['solutions'].items():
if tier not in simulators:
continue
sim = simulators[tier]
for task_id, actions in tier_stats.items():
if task_id not in sim.task_ids:
continue
for i, action in enumerate(actions):
status = sim.simulate_action(sim.task_ids.index(task_id),
action,
need_images=False).status
if status != phyre.SimulationStatus.SOLVED:
print('Found bad solution for', task_id, tier, status,
i)
bad.add((template_id, tier))
break
print(sorted(bad))
if bad:
sys.exit(1)