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
集成同源 BYOK 会话隔离、精简模型设置、官方订阅入口和 HTTPS 发布运维;保留本地训练/调参与控制能力。同步 npm 版本及 CHANGELOG,记录公网真实 API 验收仍待用户凭据。
53 lines
2.0 KiB
Python
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,
|
|
}
|