From 4d224e586a550dc62b067782d66fe6eca4eb6120 Mon Sep 17 00:00:00 2001 From: HelixCopex Date: Fri, 11 Sep 2026 17:56:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=BA=E5=8C=96=E5=AD=A6=E4=B9=A0=E7=AC=AC?= =?UTF-8?q?=E4=BA=8C=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + docs/algo-rl.md | 41 ++-- docs/paper/main.pdf | Bin 413571 -> 413577 bytes docs/强化学习适用性审核与改进-20260911.md | 165 +++++++++++++++ .../rl/review-20260911/benchmark-smoke.json | 97 +++++++++ .../rl/review-20260911/review_evidence.json | 193 ++++++++++++++++++ scripts/benchmark_rl.py | 6 +- scripts/summarize_rl_revision.py | 72 +++++++ scripts/verify_rl_practice.py | 2 +- src/mcm26b/rl/env.py | 2 +- 10 files changed, 561 insertions(+), 18 deletions(-) create mode 100644 docs/强化学习适用性审核与改进-20260911.md create mode 100644 output/rl/review-20260911/benchmark-smoke.json create mode 100644 output/rl/review-20260911/review_evidence.json create mode 100644 scripts/summarize_rl_revision.py diff --git a/README.md b/README.md index eb872ef..08697f5 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ - [问题一完整解答](docs/问题一解答.md) - [问题三搜索与总耗时改进方案(含七点覆盖证明和自建消融)](docs/algo-3.md) - [问题3/4 强化学习选点(PPO + CUDA)](docs/algo-rl.md) +- [强化学习审核、修复与独立验证(2026-09-11)](docs/强化学习适用性审核与改进-20260911.md) - [论文](docs/paper/main.tex) ## 项目结构 diff --git a/docs/algo-rl.md b/docs/algo-rl.md index feda313..bddae47 100644 --- a/docs/algo-rl.md +++ b/docs/algo-rl.md @@ -2,10 +2,17 @@ ## 0. 摘要 +**2026-09-11审核更新:**本文件下方的训练成绩与BC准确率是第一版历史记录。 +复核发现训练/部署特征错位、BC激活函数不一致以及评测只检查completed等问题。 +当前修复、Maskable PPO新模型和独立配对验证见 +[强化学习适用性审核与改进](强化学习适用性审核与改进-20260911.md)。 +新模型未替换原默认检查点;通过`--rl-model`显式加载。 + 本项目在保持 P0–P5 保守性与可解释证明不变的前提下,为问题3(全向源)与 问题4(定向源)增加了一个可选的**强化学习测量点选择策略**: -- 把“下一检测点去哪”建模为离散决策马尔可夫决策过程(MDP); +- 把“下一检测点去哪”建模为离散动作的局部决策问题;401维特征是压缩观测, + 不能认定为完整马尔可夫状态,尤其第四问仍有未知朝向和被省略的历史约束; - 状态由逐频道信念的几何特征 + 60 个候选检测点的几何特征组成(401 维); - 动作为 60 选 1(保证接收盘环候选、对称交会候选、定向遮挡环探候选); - 使用 Stable-Baselines3 的 PPO 训练,MLP 策略与价值网络在 **CUDA GPU** @@ -13,11 +20,11 @@ - 训练环境基于自建评测机 `referee`(内存回环,与真实 HTTP 协议同边界); - 运行闭环仅替换既有选点排序器,覆盖证明、清除证书、定向后备清除全部保留。 -结论(自建配对消融,5 个种子):Q3 用 12 万步随机初始化 PPO(与 `bayes` +历史结果(第一版自建配对消融,5 个种子):Q3 用 12 万步随机初始化 PPO(与 `bayes` 基本持平,+1.18%);Q4 用**专家行为克隆初始化 + PPO 微调**,混合源平均 虚拟时间相对 `directional` 基线降低 **7.16%**(14250.1s → 13230.2s)。 Q3 的 BC 初始化在消融中反而退化,因此保留随机初始化模型;Q4 的 BC 初始化 -是当前最优。官方演练验证见 §5:两次 Q4 演练(3 定向混合源、10 定向全定向 +是当时五场比较中均值最好的版本。官方演练验证见 §5:两次 Q4 演练(3 定向混合源、10 定向全定向 场景)与一次 Q3 演练均全清,且通过离线审计。 ## 1. 环境搭建(CUDA) @@ -33,9 +40,9 @@ uv run python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_ `pyproject.toml` 中 `[tool.uv.sources] torch = { index = "pytorch-cu128" }` 与 `[[tool.uv.index]]` 指向 PyTorch 官方 CUDA 12.8 轮子;下载约 2.6 GB, 首次同步建议 `$env:UV_HTTP_TIMEOUT='300'`。默认 PyPI 的 Windows torch 轮子 -为 `+cpu`,不能直接训练。 +为 `+cpu`,可以使用CPU训练;本轮修订模型即采用CPU,CUDA并非训练前提。 -## 2. MDP 定义 +## 2. 第一版局部决策环境 训练环境:`src/mcm26b/rl/env.py::LocalizationEnv`。 @@ -49,7 +56,9 @@ uv run python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_ 约束说明:候选点全部来自既有几何生成器(`planner.candidate_points`、 `planner.safe_disk_radius`、定向环探梯子),RL 不生成新的空间候选;它只做 -排序。因此 RL 决策不能破坏“保证接收盘内必收到方向”与清除证书的数学保证。 +排序。清除仍须通过几何证书;但“保证收到方向”只适用于全向源且实际点位于 +距离保证盘内。第一版的52—59号环探点可能在盘外,第四问的定向遮挡也不受 +距离盘保证。v2对第三问加入盘外动作屏蔽,第四问保留探索分支。 ## 3. 训练与自建模拟器逻辑利用 @@ -58,8 +67,8 @@ uv run python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_ uv run python scripts/pretrain_rl_expert.py --problem 3 --episodes 3000 uv run python scripts/pretrain_rl_expert.py --problem 4 --episodes 3000 -# 2) 从 BC 初始化继续 PPO 微调(CUDA) -uv run python scripts/train_rl.py --problem 4 --timesteps 40000 \ +# 2) 从当前v2 BC初始化继续普通PPO(算法类型需显式匹配) +uv run python scripts/train_rl.py --problem 4 --algorithm ppo --timesteps 40000 \ --init output/rl/q4_ppo_bc_init.zip # Q3 保留随机初始化长训练版本: @@ -73,8 +82,8 @@ uv run python scripts/train_rl.py --problem 3 --timesteps 120000 实测:Q3 专家数据 5141 条、BC 验证准确率 38.9%,微调后自建消融退化 (保留 12 万步随机初始化模型);Q4 专家数据 14181 条、BC 验证准确率 -65.3%,微调后自建消融从 −3.84% 提升到 **−7.16%**。这说明自建模拟器逻辑 -在遮挡分支上可直接转化为 RL 的强先验,而全向分支的随机 PPO 已足够。 +65.3%,微调后自建消融从 −3.84% 提升到 **−7.16%**。但审核确认BC与PPO的 +激活函数不一致,这些数字不能证明成功迁移了专家策略,也不足以判断全向分支已最优。 输出:`output/rl/q3_ppo.zip`、`output/rl/q4_ppo.zip` 及同名 JSON 报告; 训练脚本先打印 `train_start`(含 device/gpu 字段),再执行 PPO 并在独立 @@ -99,7 +108,7 @@ Q3 12 万步约 625s(RTX 4060 Laptop,2 个 CPU 环境)。 uv run python scripts/benchmark_rl.py --seeds 5 ``` -同种子同场景配对比较,结果写入 `output/rl/benchmark.json`。当前版本: +同种子同场景配对比较,结果写入 `output/rl/benchmark.json`。以下为第一版历史结果: | 场景 | 基线 | 平均虚拟时间(基线 / RL) | 相对差 | 全清 | | --- | --- | --- | --- | --- | @@ -107,7 +116,7 @@ uv run python scripts/benchmark_rl.py --seeds 5 | Q4(10 源、3 定向 ×5 种子,BC+PPO) | `directional` | 14250.1s / 13230.2s | −7.16% | 5/5 | 训练局评估:Q3 单源 40 局成功率 100%、平均 3.55 步;Q4 定向单源 40 局 -成功率 90%、平均 4.45 步(其余由后备清除/二次定位兜底)。随机策略对照: +成功率 90%、平均 4.45 步;其余单源训练局未完成,不能由此宣称已兜底成功。随机策略对照: Q3 平均回报 13.28 vs PPO 17.71;Q4 平均回报 8.72 vs BC+PPO 12.62。 ### 5.1 官方模拟器演练验证(仅演练,未触碰正式测试) @@ -142,11 +151,13 @@ SHA-256 校验全部通过。归档目录:`output/rl/official-practice/`。 ## 6. 结论与边界 +以下是第一版结论;BC权重拷贝缺陷使“同构初始化”的解释不成立,性能判断 +应以新审核报告的同场景验证及不确定性为准,而不能由BC分类准确率推出。 + - RL 已接入问题3/4 完整闭环,并在自建 referee 演练与官方模拟器演练中 全清验证;这是方法验证,不是对正式成绩的承诺。 -- 利用自建模拟器逻辑做专家行为克隆,对 Q4 遮挡分支带来明确收益 - (−3.84% → −7.16%);Q3 全向分支空间有限,BC 初始化无收益,保留随机 - 初始化的长训练模型。 +- 第一版Q4的BC初始化后均值变化为−3.84% → −7.16%,但初始化存在激活函数 + 缺陷,样本数也不足以支持“明确收益”的归因;当前判断见新审核报告。 - 训练环境使用自建场景假设(源均匀分布、逐点固定误差场、定向源朝向随机); 官方隐藏分布未必相同。正式测试仍应默认使用经过演练验证的手写策略; `--strategy rl` / `--q4-strategy rl` 适合消融、方法对比与后续调参。 diff --git a/docs/paper/main.pdf b/docs/paper/main.pdf index 0a50027e2cd0ec559b17b6ef673b5289f0ba69ae..81bd093bfdb9f5b6e7b05692eb4724b1d3f68dcc 100644 GIT binary patch delta 37510 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�-J_CsHP?Y(6(Uwi9$)kSQb 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 C;!k-1 delta 37487 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 int: for row in rows] cleared = all(row["rl"]["all_cleared"] and row[baseline]["all_cleared"] for row in rows) + valid = all(part['completed'] and part['all_cleared'] and part['correct_absence'] + and part['normal_exit'] and not part['anomalies'] and not part['timing_mismatches'] + for row in rows for part in (row[baseline],row['rl'])) report[key + "_summary"] = { "mean_virtual_s": { baseline: statistics.mean(row[baseline]["virtual_time_s"] for row in rows), @@ -107,6 +110,7 @@ def main(argv=None) -> int: "rl": statistics.mean(row["rl"]["measures"] for row in rows), }, "all_cleared": cleared, + "all_valid": valid, } output = Path(args.output) output.parent.mkdir(parents=True, exist_ok=True) @@ -116,7 +120,7 @@ def main(argv=None) -> int: "q3": report["q3_summary"], "q4": report["q4_summary"]}, ensure_ascii=False, indent=2)) - return 0 + return 0 if report['q3_summary']['all_valid'] and report['q4_summary']['all_valid'] else 1 if __name__ == "__main__": diff --git a/scripts/summarize_rl_revision.py b/scripts/summarize_rl_revision.py new file mode 100644 index 0000000..f13c936 --- /dev/null +++ b/scripts/summarize_rl_revision.py @@ -0,0 +1,72 @@ +"""汇总配对置信区间、历史官方证据与BC/特征错位探针,不连接模拟器。""" +from pathlib import Path +import json +import hashlib +import numpy as np +import torch + +import verify_rl_practice +from mcm26b.rl.env import LocalizationEnv +from mcm26b.rl.features import build_observation + + +def main(): + root = Path('output/rl/review-20260911') + records = json.loads((root/'evaluation/validation/final/results.json').read_text(encoding='utf-8')) + rng = np.random.default_rng(20260911) + comparisons = {} + for problem in (3,4): + part = [r for r in records['rows'] if r['problem']==problem] + for label in ('baseline','legacy'): + baseline = {r['case']:r for r in part if r['variant']==label} + selected = sorted((r for r in part if r['variant']=='revised'),key=lambda r:r['case']) + a = np.array([baseline[r['case']]['virtual_s'] for r in selected]) + b = np.array([r['virtual_s'] for r in selected]) + samples = rng.integers(0,len(a),(10000,len(a))) + changes = (b[samples].mean(axis=1)/a[samples].mean(axis=1)-1)*100 + comparisons[f'q{problem}-revised-vs-{label}'] = dict( + relative_change_pct=(b.mean()/a.mean()-1)*100, + paired_bootstrap_95_pct=np.quantile(changes,[.025,.975]).tolist(), + faster_cases=int(sum(b dict: checks["official_problem_matches_summary"] = ( official["problem_no"] in (3, 4) - and summary["strategy"] in ("rl", "rl_q4") + and summary["strategy"] == ("rl" if official["problem_no"] == 3 else "rl_q4") and 10 <= official["jammer_count"] <= 16 and official["omnidirectional_jammer_count"] + official["directional_jammer_count"] == official["jammer_count"]) diff --git a/src/mcm26b/rl/env.py b/src/mcm26b/rl/env.py index 8a80227..ea48e40 100644 --- a/src/mcm26b/rl/env.py +++ b/src/mcm26b/rl/env.py @@ -104,7 +104,7 @@ class LocalizationEnv(gym.Env): heading = rng.uniform(0.0, 360.0) if directional else 0.0 # 首次检测点:距离 [300, min(1450, r_eff-20)] 内随机,定向源取朝向 - # ±80°(远离 90° 边界,保证 direction)。机器狗可到 Ω 外 [题面]。 + # ±89.9°(接近但不跨越90°边界,保证direction)。机器狗可到Ω外 [题面]。 max_distance = max(310.0, min(1450.0, r_eff - 20.0)) if max_distance < 310.0: max_distance = 310.0