fix: import json, use make_env_base in phase switch, and run eval sequentially to avoid second concurrent sim car
This commit is contained in:
parent
f3c89116ee
commit
2b90de2fba
|
|
@ -11,7 +11,7 @@ Exp 14b: Fine-tune mountain champion (v5 reward) — throttle schedule.
|
|||
This script is intentionally conservative: small LR, frequent evals, and
|
||||
saves so we don't lose progress.
|
||||
"""
|
||||
import sys, os, time
|
||||
import sys, os, time, json
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
from datetime import datetime
|
||||
from stable_baselines3 import PPO
|
||||
|
|
@ -197,7 +197,7 @@ try:
|
|||
env0.close()
|
||||
except Exception:
|
||||
pass
|
||||
env0 = VecTransposeImage(DummyVecEnv([make_env(throttle_min)]))
|
||||
env0 = VecTransposeImage(DummyVecEnv([make_env_base(0.2, throttle_floor=throttle_min)]))
|
||||
model.set_env(env0)
|
||||
|
||||
remaining = phase_steps
|
||||
|
|
@ -213,8 +213,17 @@ try:
|
|||
model.save(os.path.join(SAVE_DIR, 'model'))
|
||||
log(f'[{steps_done}/{TOTAL_STEPS}] Checkpoint saved: {ckpt}.zip')
|
||||
|
||||
# Eval
|
||||
# Eval sequentially: close training env first so we do not create a
|
||||
# second concurrent sim connection / second car during checkpoint eval.
|
||||
try:
|
||||
env0.close()
|
||||
except Exception:
|
||||
pass
|
||||
res = evaluate_model(model, throttle_min, sets=EVAL_EPISODES)
|
||||
# Restore training env after eval
|
||||
env0 = VecTransposeImage(DummyVecEnv([make_env_base(0.2, throttle_floor=throttle_min)]))
|
||||
model.set_env(env0)
|
||||
|
||||
# compute mean lap time for episodes that completed at least 1 lap
|
||||
lap_times = [lt for r in res for lt in r['lap_times']]
|
||||
mean_lap = sum(lap_times)/len(lap_times) if lap_times else None
|
||||
|
|
|
|||
Loading…
Reference in New Issue