添加 PPO 算法实现及相关配置,更新训练入口以支持 SAC 和 PPO 模式

This commit is contained in:
2026-04-04 17:50:02 +08:00
parent f3d2d1a85f
commit a2ce5073c5
10 changed files with 675 additions and 73 deletions
+11 -14
View File
@@ -1,22 +1,19 @@
# ==========================================
# Soft Actor-Critic (SAC) - Pendulum-v1 配置
# Soft Actor-Critic (SAC)
# Pendulum-v1 配置
# ==========================================
# --- 算法核心参数 ---
gamma: 0.99 # 折扣因子 (越接近1越看重长期收益)
tau: 0.005 # 目标网络软更新系数 (EMA平滑系数,越小越稳定)
alpha: 0.2 # 熵温度系数 (控制探索力度,Pendulum中0.2比较合适,如果是复杂环境可能需要调整或自动学习)
lr: 0.0003 # 学习率 (Actor 和 Critic 保持一致,3e-4 是 Adam 优化器的万金油)
gamma: 0.99 # 折扣因子
tau: 0.005 # 目标网络软更新系数 (EMA)
alpha: 0.2 # 熵温度系数
lr: 0.0003 # 学习率 (Adam, 3e-4)
# --- 经验回放池参数 ---
buffer_size: 1000000 # 回放池最大容量 (100万条)
batch_size: 256 # 每次梯度更新抽样的 batch 大小
buffer_size: 1000000 # 回放池最大容量 (100万条)
batch_size: 256 # 每次梯度更新抽样的 batch 大小
# --- 训练循环控制 ---
max_episodes: 200 # 总共训练多少个回合 (Episode)
max_steps: 200 # 每个回合最多走多少步 (Gym Pendulum 默认 200 步截断)
start_steps: 10000 # 纯随机动作探索的步数 (用来快速填补经验池的高多样性数据)
# --- 扩展参数 (为了后续画图和保存模型备用) ---
eval_freq: 10 # 每隔多少个回合评估一次策略
save_model: true # 是否保存最终模型权重
max_episodes: 200 # 总共训练多少个 episode
max_steps: 200 # 每 episode 最多步数 (Pendulum-v1 默认 200 步截断)
start_steps: 10000 # 纯随机动作探索的步数
+25
View File
@@ -0,0 +1,25 @@
# ==========================================
# Proximal Policy Optimization (PPO-Clip)
# Pendulum-v1 配置
# 参考论文: Schulman et al., 2017 (arXiv:1707.06347)
# ==========================================
# --- 算法核心参数 ---
gamma: 0.9 # 折扣因子 (Pendulum 短周期任务用 0.9 比 0.99 更易收敛)
gae_lambda: 0.95 # GAE λ (论文 Table 3)
clip_epsilon: 0.2 # 概率比率裁剪范围 [1-ε, 1+ε]
lr: 0.001 # 学习率 (PPO on-policy 更新少,适当提高 lr)
# --- 网络更新参数 ---
n_epochs: 10 # 每轮收集后用同一批数据重复优化的 epoch 数
batch_size: 64 # mini-batch 大小
vf_coef: 0.5 # 价值损失系数 c1 (公式9)
entropy_coef: 0.0 # 熵奖励系数 c2 (Pendulum 简单任务,不需要额外探索奖励)
max_grad_norm: 0.5 # 梯度裁剪上限
# --- 数据收集参数 ---
steps_per_update: 1024 # 每次更新前收集的步数 (缩短到 5 个 episode 更新一次,加速学习)
# --- 训练循环控制 ---
max_episodes: 500 # PPO 是 on-policy,需要更多 episode 才能收敛
max_steps: 200 # 每 episode 最多步数 (Pendulum-v1 默认 200 步截断)