# 论文与支撑材料 论文依据赛题、2026 年格式规范及所给往届参考 PDF 编写,四问的模型、推导与结果分析 均以论文正文与附录为准;本文件只说明论文工程如何重算与编译。 版式采用项目原始 `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 --robot-id <队号> \ --counts 10,13,16 --seeds 300-314 uv run python scripts/run_practice_episodes.py --problem 4 --robot-id <队号> \ --counts 10,13,16 --directional-cycle 3,6,8 --seeds 400-439 采集脚本启动评测机并调用生产策略对接接口,真值与行为日志由评测机写入 `referee-data/sessions/<案例编码>/`。判定标准为 `清完全部源 ∧ 无缺席误判 ∧ 主动退出 ∧ 零异常 ∧ 零失败清除`: 只看“是否清完”会放过“清完了但中途大量 /clear 打空”的无效局, 这类局的总虚拟时间被无效试探撑大,故不纳入统计。 被排除的局保留在 `referee-data/rejected-sessions/`; `build_practice_data.py` 按案例编码白名单只统计论文声明的批次。 ## 交付文件 - main.pdf:论文、演练局数据清单、正式数据清单与四问核心函数代码附录。 - main.tex、sections/:可编辑 LaTeX 源文件。 - data/practice-results.json、practice-results.csv:44 局演练局的结构化复算结果。 - 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/`(HeitiSC / SongtiSC / Times New Roman,约 150 MB), 该目录**已在 `.gitignore` 中排除、不入库**,`mcm26b-paper.cls` 通过 `Path = fonts/` 引用。 若克隆后缺少该目录,按 `mcm26b-paper.cls` 中的「若未携带 fonts/ 目录」注释把那几行 `\setCJKmainfont` / `\setmainfont` 换成系统字体即可照常编译。 ### 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。