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
|
This script is intentionally conservative: small LR, frequent evals, and
|
||||||
saves so we don't lose progress.
|
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__), '..'))
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from stable_baselines3 import PPO
|
from stable_baselines3 import PPO
|
||||||
|
|
@ -197,7 +197,7 @@ try:
|
||||||
env0.close()
|
env0.close()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
env0 = VecTransposeImage(DummyVecEnv([make_env(throttle_min)]))
|
env0 = VecTransposeImage(DummyVecEnv([make_env_base(0.2, throttle_floor=throttle_min)]))
|
||||||
model.set_env(env0)
|
model.set_env(env0)
|
||||||
|
|
||||||
remaining = phase_steps
|
remaining = phase_steps
|
||||||
|
|
@ -213,8 +213,17 @@ try:
|
||||||
model.save(os.path.join(SAVE_DIR, 'model'))
|
model.save(os.path.join(SAVE_DIR, 'model'))
|
||||||
log(f'[{steps_done}/{TOTAL_STEPS}] Checkpoint saved: {ckpt}.zip')
|
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)
|
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
|
# 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']]
|
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
|
mean_lap = sum(lap_times)/len(lap_times) if lap_times else None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue