Files
Mujoco_WASM/training_server/mobile_manipulator/evaluation.py
T
chenlin f3a8a38acd
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
web-platform-ci / Standalone decision service (no cloud credentials) (pull_request) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (pull_request) Has been cancelled
web-platform-ci / Playwright E2E (pull_request) Has been cancelled
lekiwi-compatibility / cpu-compatibility (pull_request) Has been cancelled
feat: release v1.0.1 CADWorld 网站与 LeKiwi 智能抓放
集成同源 BYOK 会话隔离、精简模型设置、官方订阅入口和 HTTPS 发布运维;保留本地训练/调参与控制能力。同步 npm 版本及 CHANGELOG,记录公网真实 API 验收仍待用户凭据。
2026-09-24 09:57:41 +08:00

53 lines
2.0 KiB
Python

"""Seeded held-out rollouts; successful export is never a task-success metric."""
from .env import MobileManipulatorEnv
def evaluate_policy(agent, package, params, reset_options, seed):
env = MobileManipulatorEnv(
package,
stage=params["stage"],
reset_options=reset_options,
position_jitter=params["positionJitter"],
)
episodes = []
try:
for i in range(params["evaluationEpisodes"]):
observation, _ = env.reset(seed=seed + i)
done = False
reward_sum = 0.0
while not done:
action, _ = agent.predict(observation, deterministic=True)
observation, reward, terminated, truncated, info = env.step(action)
done = terminated or truncated
reward_sum += reward
episodes.append(
{
"seed": seed + i,
"success": info["is_success"],
"safetyStop": info["safety_stop"],
"steps": env.kernel.steps,
"maxJointVelocity": info["max_joint_velocity"],
"navigationDistance": info["navigation_distance"],
"reward": reward_sum,
}
)
print(
f"Evaluation episode {i + 1}/{params['evaluationEpisodes']}: "
f"success={info['is_success']} safety={info['safety_stop'] or 'none'} "
f"max_joint_velocity={info['max_joint_velocity']:.5f}",
flush=True,
)
finally:
env.close()
return {
"episodes": len(episodes),
"successRate": sum(x["success"] for x in episodes) / len(episodes),
"safetyStops": sum(bool(x["safetyStop"]) for x in episodes),
"maxJointVelocity": max(x["maxJointVelocity"] for x in episodes),
"meanNavigationDistance": sum(x["navigationDistance"] for x in episodes) / len(episodes),
"seed": seed,
"positionJitter": params["positionJitter"],
"rollouts": episodes,
}