File size: 703 Bytes
21c7db9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"""Offline policy evaluation."""

from __future__ import annotations

from app.evaluation.simulator_rollouts import run_rollouts


def offline_policy_eval(episodes: int = 10) -> dict[str, float]:
    rows = run_rollouts(episodes=episodes)
    if not rows:
        return {}
    avg_reward = sum(float(r.get("reward", 0.0)) for r in rows) / len(rows)
    legal_rate = sum(1.0 for r in rows if bool(r.get("legal", False))) / len(rows)
    success_rate = sum(1.0 for r in rows if str(r.get("termination_reason", "")) == "safe_resolution") / len(rows)
    return {
        "avg_reward": round(avg_reward, 6),
        "legal_rate": round(legal_rate, 6),
        "success_rate": round(success_rate, 6),
    }