论文完成

This commit is contained in:
2026-09-13 18:05:59 +08:00
parent 9fb15f53f5
commit 89021eb9f8
234 changed files with 28597 additions and 2164 deletions
+124 -21
View File
@@ -1,22 +1,108 @@
\section{正式数据清单与复算说明}\label{app:data}
六份正式导出文件及其 SHA-256 校验值列于表~\ref{tab:packages}。
论文采用原项目模板,按2026年格式规范设置 A4 纸张、四边距 $2.5$ cm,
电子版从摘要页开始连续编号\cite{format}。
所给往届论文用于章节组织与版式参考。
\section{官方正式测试的效果验证}\label{app:formal}
\subsection{数据选择及对应关系核对}
正文的机制论证与定量结论取自自建模拟器演练局,
本节则用官方模拟器的正式测试验证算法在正式环境下的效率与正文结论是否一致。
实验样本严格限定为官方模拟器
\pathtext{Jammers-simulator-full/test} 下的六份正式导出包,问题三、四各有三次。
文件名、案例编码与完整包校验值见表~\ref{tab:packages},核对说明见 \pathtext{docs/paper/data/audit.md}。
由于官方记录不公开真实源位置和机器人轨迹,本节不绘制搜索/清除路径,
只使用清除数量、总虚拟时间、程序运行时间与动作计数四类可直接观测的量。
这样处理的原因是:正式测试能够检验"算法是否在真实时限内完成清除",
但不能检验"定位是否收敛到真值",后者已由正文的演练局分析承担。
评价指标包括清除数量 $N_c^+$、总虚拟时间 $T$、程序运行时间 $T_{\mathrm{real}}$,
以及检测、换频和清除的动作次数。其中 $T$ 按整数微秒累计,
$T_{\mathrm{real}}$ 采用官方记录的毫秒值;
平均定位清除时间仅作辅助分析,不替代总虚拟时间与程序运行时间这两项直接指标。
六次测试均以主动退出(\texttt{user\_exit})结束,统计提交状态为已确认。
\subsection{问题三与问题四的正式结果}
\input{data/formal-q3-table}
三次正式测试分别清除 $13$、$15$、$10$ 个源,
总虚拟时间分别为 $3094.978$、$3493.335$、$2906.863$ s,合计 $\QThreeTotal$ s;
程序运行时间分别为 $5.596$、$3.024$、$2.680$ s,合计 $\QThreeProgramTotal$ s。
按清除数量加权的平均定位清除时间为 $\QThreeWeighted$ s/个,仅作辅助解释。
第三次的总虚拟时间最短($2906.863$ s),但其清除数也最少($10$ 个),
因此判断优化程度时应以总虚拟时间与清除数量并列报告,不能只看单一平均值。
\input{data/formal-q4-table}
表~\ref{tab:formal4} 给出问题四的三次正式结果。三次分别清除 $13$、$10$、$14$ 个源,
总虚拟时间合计 $\QFourTotal$ s,程序运行时间合计 $\QFourProgramTotal$ s,
加权平均定位清除时间 $\QFourWeighted$ s/个。
第三次清除数最多($14$ 个)且总虚拟时间最短($8608.382$ s),
与自建模拟器演练局中"可见性筛选加后备清除能够压缩定向场景耗时"的结论方向一致;
但三次案例的随机源分布与朝向不同,仍应以绝对时间与清除数量为准。
\subsection{正式测试的动作耗时分解}
按式~\eqref{eq:residual} 由动作计数反推移动时间,得到表~\ref{tab:formalcost}。
其中 Q3-1 表示问题三第一次正式测试,其余编号依此类推。
\input{data/formal-cost-table}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\linewidth]{formal-time-bars.png}
\caption{六次正式测试的累计虚拟耗时分解(数据仅来自正式测试的原始动作计数与总虚拟时间)。}
\label{fig:formalbars}
\end{figure}
六次测试的清除失败计数均为零,移动时间占总虚拟耗时的
$\FormalMovementMin\%$ 至 $\FormalMovementMax\%$,与演练局的构成一致,
说明"移动是主要成本"这一结论在正式环境中同样成立。
由 $L_{\mathrm{eq}}=5T_{\mathrm{move}}$ 反推等效移动距离:
问题三依次为 $12.045$、$13.627$、$10.824$ km,
问题四依次为 $36.386$、$35.507$、$35.027$ km;
对照表~\ref{tab:q3practice} 与表~\ref{tab:q4practice},
正式测试的移动量级与演练局相符(问题三约 $12$--$15$ km,问题四约 $30$--$33$ km),
表明演练局并非经过挑选的乐观样本。
该等效距离由动作计数与移动速度换算得到,不是独立轨迹测得的长度。
\subsection{正式测试结论}
六次正式测试均主动退出且清除失败计数为零。
以题目要求的直接时间指标衡量:问题三累计清除 $\QThreeCount$ 个源,
总虚拟时间 $\QThreeTotal$ s,程序运行时间合计 $\QThreeProgramTotal$ s;
问题四累计清除 $\QFourCount$ 个源,总虚拟时间 $\QFourTotal$ s,
程序运行时间合计 $\QFourProgramTotal$ s;六次合计清除 $\FormalClearCount$ 个源、
总虚拟时间 $\FormalVirtualTotal$ s。
由此可得结论:
1. 全向源场景下,七点解析覆盖与逐频道网格幸存集使三次正式测试均在时限内完成,
总虚拟时间为 $2906.863$ 至 $3493.335$ s,与演练局量级一致;
2. 混合源场景下,前向半盘最小命中集、位置与朝向联合幸存集和后备清除使三次正式测试的
总虚拟时间为 $8608.382$ 至 $9362.226$ s,明显高于全向场景,
印证了正文关于"定向遮挡仍是主要时间成本"的判断;
3. 平均定位清除时间与移动时间分解只用于解释成本结构,
优化程度的结论应以总虚拟时间、程序运行时间和清除数量为准。
由于正式数据未公开源总数与类型组成,本文不据此计算全清率或做跨问题性能排名。
\input{data/formal-file-list}
复算脚本 \pathtext{scripts/audit_paper_formal.py} 将正式导出、结果侧文件与
官方统计记录匹配,生成结构化数据、CSV 和 LaTeX 表格。
在项目根目录执行:
\begin{lstlisting}[language={},numbers=none]
python scripts/audit_paper_formal.py
python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.json
\end{lstlisting}
第一条命令完成来源匹配与统计计算;
第二条根据已有快照重新计算指标,并核对现有正式包的校验值。
耗时图与汇总量由同一统计快照生成。
正文插图统一由 \pathtext{scripts/plot_paper_figures.py} 使用 matplotlib 生成,数据只读取 \pathtext{docs/paper/data/formal-results.csv} 与第四问覆盖计划;逐图来源与生成命令见 \pathtext{docs/figures/manifest.json}。
\section{自建模拟器演练局数据清单}\label{app:practice}
本节列出正文定量结论所依据的全部演练局,共 $\PractTotalCases$ 局,
由 \pathtext{scripts/run\_practice\_episodes.py} 采集、
\pathtext{scripts/build\_practice\_data.py} 从评测机行为日志复算得到,
复算口径为题面计时模型,与日志记录的最大偏差为 $\PractMaxGap$ s。
采集时以固定种子逐局运行生产策略,判定标准为
"清完全部源 $\wedge$ 无缺席误判 $\wedge$ 主动退出 $\wedge$ 零异常 $\wedge$ 零失败清除";
本表所列 $\PractTotalCases$ 局全部满足该标准。
\input{data/practice-summary-table}
\input{data/practice-all-table}
\input{data/practice-cost-table}
\section{支撑材料与运行方法}
\begin{table}[H]
@@ -28,19 +114,37 @@ python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.j
\midrule
\pathtext{src/mcm26b/} & 四问几何、信念、覆盖、调度与串行通信实现\\
\pathtext{src/mcm26b/guarantee/plans/} & 第四问已实现的覆盖计划及验证参数\\
\pathtext{project/} & 四问“最优实现 / 基线实现”配对对比框架与结果\\
\pathtext{referee/} & 自建模拟器(评测机)实现,与官方协议同一边界\\
\pathtext{referee-data/sessions/} & 正文引用的演练局行为日志(含真值)\\
\pathtext{scripts/build_practice_data.py} & 演练局计时复算与论文数据、宏文件生成\\
\pathtext{scripts/plot_paper_figures.py} & 正文插图 matplotlib 生成脚本\\
\pathtext{scripts/audit_paper_formal.py} & 正式文件对应核对、匿名快照及表格复算\\
\pathtext{scripts/build_figure_data.py} & 旧插图数据准备脚本,仅作历史保留\\
\pathtext{docs/figures/manifest.json} & 插图来源与生成命令清单\\
\pathtext{docs/paper/data/} & 六个正式案例的可读统计、表格及校验值\\
\pathtext{docs/paper/data/} & 演练局与正式案例的可读统计、表格及校验值\\
\pathtext{docs/paper/sections/} & 分章论文源文件\\
\pathtext{docs/paper/figures/} & 旧版矢量图源文件,正文不再引用\\
\pathtext{docs/figures/} & 正文插图(PNG)及其数据清单与生成命令\\
\pathtext{Jammers-simulator-full/test/} & 六份原名官方正式日志\\
\pathtext{support-manifest.json} & 支撑包文件清单及逐文件 SHA-256\\
\bottomrule
\end{tabularx}
\end{table}
正文数据与插图的复算命令如下(在项目根目录执行):
\begin{lstlisting}[language={},numbers=none]
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 # 附录正式数据表与支撑包
\end{lstlisting}
第一条命令读取 \pathtext{referee-data/sessions/} 下的行为日志,
按题面计时模型复算每局的移动、检测、换频与清除耗时,
并输出正文引用的宏、表格行与插图数据;
第二条命令据此与覆盖计划重新绘制插图,论文不手抄图内任何数字。
第三条命令按已有快照复算正式统计并核对正式包的校验值;
第四条命令生成附录的正式数据表并打包支撑材料。
Python 运行时需要 \texttt{requests},\texttt{numpy} 提供可选加速。
将 \texttt{src} 加入 Python 模块路径后,可调用
\texttt{python -m mcm26b.geometry} 进行问题一几何分析,
@@ -58,4 +162,3 @@ Python 运行时需要 \texttt{requests},\texttt{numpy} 提供可选加速。
未收录的部分包括独立评测机(按附件协议复现模拟器,与求解代码零耦合)、
命令行入口、数据采集与论文绘图脚本、单元测试,以及经实测未采用的候选方案。
\input{data/source-listings}