# Submission Checklist 最后提交前**逐项核对**,避免格式扣分。 ## 1. 命名格式 - [ ] zip 文件名:`CW1_<学号>_<姓名拼音>.zip` - 例:`CW1_2012345_ZhangSan.zip` - [ ] PDF 文件名:`CW1_<学号>_<姓名拼音>.pdf` - [ ] 学号 + 姓名拼写**全程一致**(zip / pdf / 报告封面页) - [ ] **PDF 不放进 zip**!分两个文件单独上传 ## 2. zip 内容(提交前检查) ``` CW1__.zip ├── README.md ✅ ├── requirements.txt ✅ ├── train.py ✅ 单环境 legacy ├── train_vec.py ✅ 主训练脚本 ├── train_sb3_baseline.py ✅ SB3 基线 ├── evaluate.py ✅ 评估脚本 ├── scan_checkpoints.py ✅ checkpoint 扫描 ├── src/ │ ├── __init__.py │ ├── env_wrappers.py │ ├── vec_env_wrappers.py │ ├── networks.py │ ├── rollout_buffer.py │ ├── vec_rollout_buffer.py │ ├── ppo_agent.py │ ├── eval_utils.py │ └── utils.py ├── notebooks/ │ ├── 01_explore_env.ipynb │ ├── 02_test_network.ipynb │ ├── 03_test_buffer.ipynb │ ├── 04_test_ppo.ipynb │ └── 05_evaluate.ipynb ├── models/ │ └── ppo_final.pt ⭐ 最佳 checkpoint,重命名后唯一一个 ├── runs/ │ └── vec_main_v3/ ⭐ 主训练 TensorBoard 日志 └── docs/ ✅ 报告素材(可全部保留) ├── step00_skeleton.md ├── step01_env_exploration.md ├── ... ├── step07_evaluation.md ├── issues_and_fixes.md ├── report_outline.md ├── eval_summary.json ├── checkpoint_scan_*.json ├── fig_eval_bar.png ├── fig_training_curves.png └── demo.mp4 ``` ## 3. zip 不应包含的东西(提交前删除) - [ ] `__pycache__/` 目录(src/ 下可能有,删掉) - [ ] `*.pyc` 文件 - [ ] `.ipynb_checkpoints/` 目录 - [ ] `runs/smoke_test/`、`runs/smoke_v2/`、`runs/n8_speed_test/`、`runs/vec_smoke*/` 等无用日志 - [ ] `models/main_v1_baseline/`、`models/smoke_*/`、`models/n8_speed_test/` 等无用 checkpoint - [ ] `models/vec_main_v3/iter_*.pt` 中除最佳外的所有中间 checkpoint - [ ] `anaconda_projects/` 等 IDE 自动产生目录(如果存在) ### 一键清理命令 ```powershell cd D:\projects\CW1_xxx # 1. 把最佳 checkpoint 复制为 ppo_final.pt Copy-Item models\vec_main_v3\<最佳iter>.pt models\ppo_final.pt # 2. 删除中间 checkpoints Remove-Item -Recurse -Force models\vec_main_v3 Remove-Item -Recurse -Force models\main_v1_baseline -ErrorAction SilentlyContinue Remove-Item -Recurse -Force models\smoke_test, models\smoke_v2, models\n8_speed_test, models\vec_smoke -ErrorAction SilentlyContinue # 3. 删除无用 runs Remove-Item -Recurse -Force runs\smoke_test, runs\smoke_v2, runs\n8_speed_test, runs\vec_smoke, runs\vec_smoke_v3, runs\vec_smoke_v3b -ErrorAction SilentlyContinue # 4. 把 vec_main_v3 重命名成 main(提交时更清晰) Move-Item runs\vec_main_v3 runs\main # 5. 删除 __pycache__ 和 .ipynb_checkpoints Get-ChildItem -Recurse -Force -Include "__pycache__",".ipynb_checkpoints" | Remove-Item -Recurse -Force Get-ChildItem -Recurse -Filter "*.pyc" | Remove-Item -Force ``` ## 4. PDF 报告内容核对 - [ ] **第一页 cover page**:含学生 ID - [ ] **字数 ≤ 3000**(不含 References 和 Appendix) - [ ] 5 个 section 全有:Introduction / Methodology / Implementation Details / Results and Analysis / Conclusion - [ ] **3 张关键图**:训练曲线、评估柱状图、SB3 对比(已在 fig_training_curves.png) - [ ] **超参数表**(Table 1 in Section 3.3) - [ ] **网络架构图**(手绘或 PowerPoint 画) - [ ] **References** 至少 3-5 篇(PPO + GAE + Gymnasium 文档) - [ ] **PDF 字体清晰**,所有图表 axis label / legend 都可读 - [ ] **PDF 文件可在另一台电脑打开**(不要损坏) ## 5. 代码可复现性(致关键) 提交前在**不同目录**或**不同电脑**做这个测试: ```powershell # 假设你解压 zip 到一个新位置 cd C:\test_dir\CW1__ # 1. 装依赖 pip install -r requirements.txt # 2. 加载模型测试 python -c "from src.ppo_agent import PPOAgent; agent = PPOAgent(); agent.load('models/ppo_final.pt'); print('OK')" # 3. 跑评估(最少 5 episodes) python evaluate.py --ckpt models/ppo_final.pt --episodes 5 ``` 如果以上 3 步全过,提交内容**复现性 OK**。 ## 6. 学术诚信 - [ ] `src/` 下**没有**任何 `from stable_baselines3 import` 语句 - 验证:`Get-ChildItem src\ -Recurse -Filter *.py | Select-String "stable_baselines3"` - [ ] `train_sb3_baseline.py` 在报告里**明确标记为 baseline only** - [ ] 所有外部代码灵感(CleanRL、PPO 论文、37 details 博客)在报告 References 里**列出** - [ ] 报告封面"yes" 同意匿名教学使用(视个人意愿) ## 7. 学习 Mall 上传后 - [ ] **下载 zip 和 pdf**,验证文件完整未损坏 - [ ] 在干净电脑上重新打开 PDF 看一眼 - [ ] 截图保存提交确认页(防系统崩溃) ## 8. 时间节点(截止 2026-05-04 23:59) - 至少 **48 小时前**(即 2026-05-02 中午)完成所有内容 - **不要** 拖到截止当天,Learning Mall 临近截止经常上传失败 - 留 1-2 天缓冲修 bug / 改报告 ## 9. 紧急情况备选 - 如果 vec_main_v3 训练崩溃 → 使用 `runs/main_v1_baseline/` + `models/main_v1_baseline/` 数据 + 报告里诚实说明 (305K 步早期停止) - 如果 SB3 baseline 没跑出来 → 报告 Section 4.3 删掉对比,改成"plan to compare in future work" - 如果 PDF 超字数 → 删 Implementation Details 里的次要细节,保留 Methodology 和 Results