50 lines
3.2 KiB
Markdown
50 lines
3.2 KiB
Markdown
# docs/figures —— 论文插图
|
||
|
||
本目录的 10 张 PNG 全部进入论文:`docs/paper/main.tex` 用
|
||
`\graphicspath{{../figures/}}` 直接引用,论文不重绘、也不手抄图内任何数字。
|
||
全部插图由同一脚本生成:
|
||
|
||
```bash
|
||
uv run python scripts/plot_paper_figures.py # 依赖 numpy 与 matplotlib
|
||
```
|
||
|
||
数据来自 `docs/paper/data/` 下的复算结果(`practice-results.json`、
|
||
`practice-geometry.json`、正式统计快照)与第四问覆盖计划;
|
||
逐图来源见 `manifest.json`。图注为中文,并注明数据取自演练局还是正式测试。
|
||
|
||
## 约定
|
||
|
||
- 默认配色与字体沿用 matplotlib 默认样式,不引入自定义调色板;
|
||
- 图内不放标题与解释性文字,只保留坐标轴、图例与必要的元素标注,含义由图注承担;
|
||
- 图例置于坐标区外,散点与角度标注按位置自动避让,保证互不重叠;
|
||
- 输出 PNG(300 dpi、白底)。
|
||
|
||
## 图清单
|
||
|
||
| 文件 | 内容 | 数据来源 | 论文位置 |
|
||
| --- | --- | --- | --- |
|
||
| `framework-decision-loop.png` | 观测—候选集—任务—动作的闭环决策过程 | 论文问题分析的结构 | 图 1 |
|
||
| `steps-state-machine.png` | 会话状态机(未进入 / 倒计时 / 接口开放 / 关闭) | `src/mcm26b/protocol/client.py` | 图 2 |
|
||
| `timing-attachment-example-105-111-194-199.png` | 附件计时示例:逐动作耗时构成与单步合计 | 题面附件 2 的计时示例 | 图 3 |
|
||
| `geo-q1-geometry.png` | 问题一三幅几何:角域交会、定位区域放大(直径圆与最小包围圆)、等边三角形反例 | `practice-geometry.json`(演练局观测复算)、`examples/q1/triangle.json` | 图 4 |
|
||
| `geo-q2-guaranteed-reception-disk.png` | 问题二:截断角域外接圆与安全候选盘,右侧为半径分解 | `src/mcm26b/config.py` | 图 5 |
|
||
| `geo-q4-minimum-cover-31-points.png` | 问题四:31 点最小命中集分布与定向源读图约定 | `src/mcm26b/guarantee/plans/q4_mincover_v2.json` | 图 6 |
|
||
| `selfbuilt-q3-search-clear-path.png` | 问题三演练局:全向源搜索与清除路径(含每次检测的位置、结果与示向度射线) | `referee-data/sessions/<问题三主局>/log.jsonl` | 图 7 |
|
||
| `selfbuilt-q4-search-clear-path.png` | 问题四演练局:混合源路径(含定向源朝向、±90° 可见范围与检测点) | `referee-data/sessions/<问题四主局>/log.jsonl` | 图 8 |
|
||
| `practice-virtual-time.png` | 44 局演练的总虚拟时间分布与全清局均值 | `practice-results.json` | 图 9 |
|
||
| `formal-time-bars.png` | 六次正式测试的累计虚拟耗时分解 | `formal-results.csv` | 图 10 |
|
||
|
||
论文主局案例编码不写死在脚本里:`plot_paper_figures.py` 读取
|
||
`docs/paper/data/practice-macros.tex` 中的 `PractQThreeMainCase` /
|
||
`PractQFourMainCase`,与正文口径同源。
|
||
|
||
## 归档与回放
|
||
|
||
`examples/replay/` 归档了论文主局的行为日志副本,便于在没有 `referee-data/` 时仍能绘图;
|
||
`scripts/archive_replay_logs.py` 用于把新的演练局追加归档:
|
||
|
||
```bash
|
||
uv run python scripts/archive_replay_logs.py --list # 本机有哪些局
|
||
uv run python scripts/archive_replay_logs.py <案例编码> # 追加归档
|
||
```
|