MCPcopy Create free account
hub / github.com/CodeClash-ai/CodeClash / evaluate_player

Function evaluate_player

codeclash/arenas/cyborg/runtime/run_cyborg.py:224–291  ·  view source on GitHub ↗
(
    player_name: str,
    policy_path: str,
    *,
    episode_idx: int,
    steps: int,
    drones: int,
    decision_timeout: float,
)

Source from the content-addressed store, hash-verified

222
223
224def evaluate_player(
225 player_name: str,
226 policy_path: str,
227 *,
228 episode_idx: int,
229 steps: int,
230 drones: int,
231 decision_timeout: float,
232) -> dict:
233 seed = 4100 + episode_idx
234 random.seed(seed)
235 np.random.seed(seed)
236 policies = {}
237
238 try:
239 from CybORG import CybORG
240 from CybORG.Agents.Wrappers.PettingZooParallelWrapper import PettingZooParallelWrapper
241 from CybORG.Simulator.Scenarios import DroneSwarmScenarioGenerator
242
243 scenario = DroneSwarmScenarioGenerator(num_drones=drones)
244 env = PettingZooParallelWrapper(CybORG(scenario, "sim"))
245 observations = env.reset()
246 action_spaces = env.action_spaces
247 policies = {
248 agent_name: PolicyController(player_name, agent_name, policy_path, timeout=decision_timeout)
249 for agent_name in env.possible_agents
250 }
251
252 step_rewards = []
253 for _ in range(steps):
254 actions = {
255 agent_name: policies[agent_name].decide(observations[agent_name], action_spaces[agent_name])
256 for agent_name in env.agents
257 }
258 observations, rewards, done, _info = env.step(actions)
259 step_rewards.append(mean(rewards.values()))
260 if all(done.values()):
261 break
262
263 policy_errors = sum(len(policy.errors) for policy in policies.values())
264 invalid_actions = sum(policy.invalid_actions for policy in policies.values())
265 decisions = sum(policy.decisions for policy in policies.values())
266 error_samples = [error for policy in policies.values() for error in policy.errors[:2]][:5]
267
268 return {
269 "player": player_name,
270 "episode": episode_idx,
271 "score": float(sum(step_rewards)),
272 "steps_completed": len(step_rewards),
273 "decisions": decisions,
274 "policy_errors": policy_errors,
275 "invalid_actions": invalid_actions,
276 "policy_error_samples": error_samples,
277 "status": "ok",
278 }
279 except Exception as exc:
280 return {
281 "player": player_name,

Callers 1

mainFunction · 0.85

Calls 3

PolicyControllerClass · 0.70
decideMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected