# PPO + CarRacing-v3 任务进度追踪

> 生成时间：2026/04/30

---

## 作业要求

用 Python 从零实现 PPO 算法，在 CarRacing-v3 环境训练智能体，提交：
- 技术报告（≤3000 词，英文）PDF
- 源代码 + 训练模型 zip 文件
- 截止：04/May/2026 23:59
- **禁止使用**：Stable-Baselines 等 RL 专用库
- **允许使用**：TensorBoard、PyTorch、Gymnasium

---

## 一、已完成 ✅

| 步骤 | 内容 | 文件 |
|------|------|------|
| ✅ 项目结构 | src/ 目录、requirements.txt、README.md | [requirements.txt](requirements.txt)、[README.md](README.md) |
| ✅ 策略/价值网络 | Actor（高斯策略输出 μ, σ）+ Critic 实现，CNN 结构 | [src/network.py](src/network.py) |
| ✅ Rollout Buffer | 轨迹存储 + GAE 优势估计 + 返回值计算 | [src/replay_buffer.py](src/replay_buffer.py) |
| ✅ PPO Trainer | PPO 更新（clip 目标函数 + 熵正则 + 价值损失） | [src/trainer.py](src/trainer.py) |
| ✅ 环境预处理 | 灰度化 + Resize(84×84) + 帧堆叠(4帧) Wrapper | [src/utils.py](src/utils.py) |
| ✅ 评估脚本 | 渲染测试 + 多回合平均分数评估 | [src/evaluate.py](src/evaluate.py) |
| ✅ 训练入口 | 主训练循环、TensorBoard 记录、模型保存 | [train.py](train.py) |

**核心算法实现要点**：
- 策略网络：3 层 CNN + FC(512) → μ, σ（高斯策略，tanh 激活）
- 价值网络：3 层 CNN + FC(512) → V(s)
- GAE：λ=0.95，优势归一化
- PPO clip：ε=0.2，4 epoch 更新，mini-batch 64

---

## 二、待完成 ⬜

| 步骤 | 内容 | 优先级 |
|------|------|--------|
| ⬜ 安装依赖 | `uv pip install --system -r requirements.txt` | **高** |
| ⬜ 环境测试 | 短时间（~10000步）验证代码能跑通 | **高** |
| ⬜ 完整训练 | 运行 500k+ 步，预计 5-8 小时（后台） | **高（耗时）** |
| ⬜ 生成图表 | 从 TensorBoard 提取数据，用 matplotlib 绘图 | 中 |
| ⬜ 撰写报告 | 英文技术报告（≤3000 词），LaTeX 排版 | 中 |
| ⬜ 编译 PDF | XeLaTeX 编译生成 CW1_1234560.pdf | 中 |
| ⬜ 打包 zip | 源代码 + 模型打包 CW1_1234560.zip | 低 |

---

## 三、文件结构

```
强化学习个人项目报告/
├── src/
│   ├── __init__.py
│   ├── network.py          # Actor + Critic CNN 网络
│   ├── replay_buffer.py    # Rollout buffer + GAE
│   ├── trainer.py          # PPO 更新逻辑
│   ├── utils.py           # 环境预处理 wrappers
│   └── evaluate.py         # 评估脚本
├── train.py                 # 主训练入口
├── requirements.txt
├── README.md
└── TASK_PROGRESS.md        # 本文档
```

---

## 四、超参数配置

| 参数 | 值 |
|------|-----|
| Learning rate | 3e-4 |
| Gamma | 0.99 |
| GAE lambda | 0.95 |
| Clip epsilon | 0.2 |
| PPO epochs | 4 |
| Mini-batch size | 64 |
| Rollout steps | 2048 |
| Entropy coefficient | 0.01 |
| Value coefficient | 0.5 |
| Max gradient norm | 0.5 |
| State shape | (84, 84, 4) |
| Action dim | 3（连续：steer, gas, brake） |

---

## 五、下一步行动

### 立即执行
```bash
# 1. 安装依赖
uv pip install --system -r requirements.txt

# 2. 验证代码能跑（短测试）
python train.py --steps 10000

# 3. 开始正式训练（后台运行，预计 5-8 小时）
python train.py --steps 500000
```

### 训练完成后
```bash
# TensorBoard 可视化
tensorboard --logdir logs/tensorboard

# 评估模型
python src/evaluate.py --model models/ppo_carracing_final.pt --episodes 10
```

### 报告撰写后
```bash
# 编译 PDF
cd tex && xelatex CW1_1234560.tex
```

---

## 六、报告结构（≤3000 词）

1. **Introduction** — RL 背景、CarRacing-v3 任务、状态/动作/奖励空间定义
2. **Methodology** — PPO 数学公式、clip 机制、GAE 优势估计
3. **Implementation Details** — 网络结构、训练流程、超参数、问题与解决
4. **Results and Analysis** — 训练曲线图、评估结果、与 SB3 基线对比
5. **Conclusion** — PPO 敏感性、actor-critic 有效性总结

---

## 七、提交清单

- [ ] `CW1_1234560.pdf` — 技术报告（封面 + ≤3000 词）
- [ ] `CW1_1234560.zip` — 源代码 + 训练好的模型 .pt 文件
- [ ] 所有代码使用英文注释
- [ ] 图表坐标轴和图例使用英文
