马尔可夫决策过程建模

强化学习把控制问题写成 MDP:在状态里选动作,环境按转移给出下一状态与奖励。

五元组 M = (S, A, P, R, γ)

符号本任务定义
S 状态s = [x, ẋ, θ, θ̇] ∈ ℝ⁴。θ=0 表示竖直向上。
A 动作a ∈ [-1, 1],力 F = 10 · a(牛顿)施加在小车上。
P 转移确定性物理:分析动力学或 Genesis 刚体一步积分。
R 奖励R = cos(θ) + 0.1 − 0.01 a²(权重可配)
γ 折扣0.99,重视长期平衡而非单步姿态。

马尔可夫性质

「下一状态只依赖当前状态与动作,不依赖更早历史」。对倒立摆,四维状态已是 充分统计量(位置与速度),因此满足马尔可夫性。策略 π(a|s) 只需看当前 s。

终止条件(吸收 / 失败)

terminated ⇔ |x| > 2.4 或 |θ| > 12° ≈ 0.2095 rad
truncated ⇔ 步数 ≥ episode_length(如 500)

终止后环境自动 reset;回报在 episode 边界截断,GAE 用 done mask 处理。

奖励设计直觉

练习:若去掉 alive,策略可能更短视;若加大 action_penalty,训练会变慢但更稳。 可在 configs/train_config.yaml 改权重做对照实验。

代码锚点

# src/mdp/definition.py  → InvertedPendulumMDP
# src/mdp/rewards.py     → compute_reward()
# src/envs/*.py          → reset / step 实现 P 与终止