101 lines
5.8 KiB
Markdown
101 lines
5.8 KiB
Markdown
# 论文与支撑材料
|
||
|
||
论文依据 issue 题目、2026 年格式规范及所给往届参考 PDF 编写,四问算法对应 docs/algo-1.md 至 algo-4.md。版式采用项目原始 mcm26b-paper.cls。
|
||
|
||
## 数据分工(本轮调整的核心约定)
|
||
|
||
| 用途 | 数据来源 | 在论文中的位置 |
|
||
| --- | --- | --- |
|
||
| 机制论证与定量结论 | **自建模拟器**(`referee/`)演练局,本次采集 44 局 | 正文全部表格与插图 |
|
||
| 最优实现与朴素基线的配对对比 | `project/`(内存回环,四问同口径) | 正文“实验结果与分析” |
|
||
| 最终效果验证 | **官方模拟器**六份正式导出包,无可读真值 | 附录 A 及附录 C 数据清单 |
|
||
|
||
正文数字与插图全部由脚本从日志复算生成,不手抄:`scripts/build_practice_data.py` 复算演练局,
|
||
`scripts/plot_paper_figures.py` 据同一份数据绘图;复算累计虚拟时间与评测机日志记录的最大偏差为 0.000000 s。
|
||
|
||
演练局可重新采集(固定种子、可重放):
|
||
|
||
uv run python scripts/run_practice_episodes.py --problem 3 --counts 10,13,16 --seeds 300-314
|
||
uv run python scripts/run_practice_episodes.py --problem 4 --counts 10,13,16 \
|
||
--directional-cycle 3,6,8 --seeds 400-439
|
||
|
||
采集脚本启动评测机并调用生产策略对接接口,真值与行为日志由评测机写入
|
||
`referee-data/sessions/<案例编码>/`。判定标准为
|
||
`清完全部源 ∧ 无缺席误判 ∧ 主动退出 ∧ 零异常 ∧ 零失败清除`:
|
||
只看“是否清完”会放过“清完了但中途大量 /clear 打空”的脏数据,
|
||
这类局的总虚拟时间被无效试探撑大,必须排除。
|
||
被排除的局保留在 `referee-data/rejected-sessions/`,历史留档保留在
|
||
`referee-data/superseded-sessions/`;`build_practice_data.py` 按案例编码白名单
|
||
只统计论文声明的批次。
|
||
|
||
## 交付文件
|
||
|
||
- main.pdf:论文、演练局数据清单、正式数据清单与四问核心函数代码附录。
|
||
- main.tex、sections/:可编辑 LaTeX 源文件。
|
||
- data/practice-results.json、practice-results.csv:25 局演练局的结构化复算结果。
|
||
- data/formal-results.json、formal-results.csv、audit.md:六份正式测试数据、复算结果与校验说明。
|
||
- support-materials.zip:源码、自建模拟器、演练局与正式日志、统计快照、论文工程及逐文件哈希清单。
|
||
- REWRITE_NOTES.md:本次修订及验证说明。
|
||
|
||
## 正文数据
|
||
|
||
演练局问题三 15 局、问题四 29 局,源数覆盖 10 至 16,问题四定向源覆盖 3/6/8 个;
|
||
**44 局全部清完全部源且失败清除为零**,累计清除 557 个源。
|
||
问题三平均总虚拟时间 3261.579 s,问题四 8401.445 s,移动时间占比 78.1% 与 75.8%。
|
||
|
||
正式测试六次累计清除 75 个源,清除失败为零;仅用于附录中的效率与结论验证。
|
||
|
||
## 重算与编译
|
||
|
||
在项目根目录执行:
|
||
|
||
python scripts/run_practice_episodes.py --problem 3 --seeds 300-314 # 需要时重采演练局
|
||
python scripts/build_practice_data.py # 演练局复算,生成正文数据、表格与宏
|
||
python scripts/plot_paper_figures.py # 生成正文全部插图
|
||
python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.json
|
||
python scripts/build_paper_support.py # 附录正式数据表与支撑包
|
||
|
||
`audit_paper_formal.py` 的第一种调用需要原电脑的官方统计队列;
|
||
快照模式重算统计并校验现有正式包的哈希,来源匹配仍需官方统计队列。
|
||
|
||
进入 docs/paper 执行:
|
||
|
||
latexmk -xelatex -interaction=nonstopmode -halt-on-error main.tex # 产物 main.pdf
|
||
latexmk -xelatex -interaction=nonstopmode -halt-on-error -outdir=build main.tex # 产物 build/main.pdf
|
||
|
||
两条口令都完成交叉引用所需的多遍编译,输出均为 57 页。
|
||
需要 TeX Live 的 XeLaTeX、ctex、TikZ,以及原项目 docs/paper/fonts/ 目录。
|
||
|
||
### VS Code(LaTeX Workshop)
|
||
|
||
仓库根的 `.vscode/settings.json` 已把默认配方设为
|
||
**`latexmk (xelatex, outdir=build)`**,即上面的第二条口令;
|
||
另有 `latexmk (xelatex, paper)`(就地产出 `main.pdf`)与
|
||
`xelatex (单遍,调试用)` 两个配方可手动切换。
|
||
|
||
默认配方写 `build/` 而不是就地写 `docs/paper/main.pdf`,原因是 Windows 下
|
||
PDF 预览会锁住已打开的 `main.pdf`,此时 `xdvipdfmx` 报 `gave an error` 且不产出 PDF,
|
||
表现为“保存后编译没反应”。写到 `build/` 后预览读的是 `docs/paper/build/main.pdf`,
|
||
与源码目录互不抢占,`latex-workshop.latex.autoBuild.run: onSave` 才能稳定工作。
|
||
若确需就地产出,切换配方后请先关闭 PDF 预览。
|
||
|
||
> `data/*.tex` 一律使用 LF 换行。CRLF 会让 `\input` 进表格的数据行在 TeX 缓冲中提前 `\par` 化,
|
||
> 触发 booktabs 的 “Misplaced \noalign”;表格因此整表生成,正文只 `\input` 完整 table 环境。
|
||
|
||
生成附录核心函数清单(数据源为单文件核心代码 ipynb,需先更新该 ipynb):
|
||
|
||
python scripts/build_code_appendix.py
|
||
|
||
在项目根目录生成支撑包(需要原电脑的 Jammers-simulator-full 正式包):
|
||
|
||
python scripts/build_paper_support.py --package
|
||
|
||
## 排版与复算
|
||
|
||
正文采用原模板的字体、标题、页边距及页码设置,图解与表题统一使用中文。
|
||
附录代码直接取自单文件核心代码 ipynb,数学符号由导言区的 lstlisting 样式 corecode 映射。
|
||
正文使用集合估计、凸外包、清除充分条件、网格幸存集滤波、信息增益、前向半盘最小命中集、
|
||
位置与朝向联合信念和最近邻路径排序等概念描述模型。
|
||
附录只收录四问主线的核心函数(32 个,约 1300 行),评测机、命令行外壳、采集与绘图脚本、
|
||
测试以及未被采用的方案不进入论文;完整可执行程序见支撑包的 mcm26b-核心代码.ipynb。
|