Trace Schema 参考¶
作用¶
trace 不是普通日志,而是 Python 和 Lean 之间的结构化契约。
- Python 负责导出
- Lean 负责解析和验证
如果 schema 漂移,Lean verifier 会直接失败。
当前版本¶
traceVersion = 3
顶层结构¶
EpisodeTrace 当前包含:
traceVersionparamsinitialStatesteps
每一步包含什么¶
每个 step 当前包含:
statesignalproposedActionappliedActioninterventionReasonsinterventionContextnextState
proposedAction 和 appliedAction¶
proposedAction:agent 原本想执行的动作appliedAction:shield 处理后真正进入环境的动作
如果 proposed action 本身合法,Lean 会要求两者一致。
interventionReasons¶
当前可能包括:
already_validcharge_limitdischarge_limitbattery_boundsgrid_limitunknown_invalid_action
interventionContext¶
当前字段包括:
proposedBatteryDeltaproposedNextSocproposedNetGridchargeLimitdischargeLimitbatteryCapacitygridLimitsocLowerMarginsocUpperMargingridLowerMargingridUpperMargin
margin 字段怎么理解¶
- 正值:还没碰到边界
- 负值:已经越界
例如:
socLowerMargin < 0:proposed next SoC 会低于 0gridUpperMargin < 0:proposed net grid 会超过上边界
Lean 当前会检查什么¶
- trace version 是否匹配
- 参数是否合法
- 初始状态是否合法
- 每一步状态是否和运行中的期望状态一致
- 信号是否合法
- shield 审计是否一致
- intervention reasons 是否一致
- intervention context 是否一致
nextState是否由appliedAction推导
相关文件¶
vpp_rl/model.pyvpp_rl/env.pyvpp_rl/shield.pyVppLeanRl/Trace.leanVppLeanRl/Shield.leantests/test_vpp.py