# Math Modeling Skill

> 数学建模竞赛全流程助手：审题选题、模型选型与求解、结果检验（误差/灵敏度/稳健性）、论文写作与提交自检， 覆盖国赛 CUMCM、研赛华为杯、美赛 MCM/ICM。当用户准备建模竞赛、写建模论文、问赛题思路、写摘要、 做灵敏度分析、选模型、检查论文格式或提交前自检时使用——即使没说"数学建模"三字也应使用。

- Skill: `anticipate218/math-modeling-skill` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add anticipate218/math-modeling-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/anticipate218/math-modeling-skill/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: anticipate218 (https://skillmd.com/u/anticipate218)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/anticipate218/math-modeling-skill

---


# 数学建模竞赛助手

帮用户把一道赛题变成**评委愿意给高分的论文**。核心不是"算出答案"，而是让模型的**每一步都可解释、可复现、可检验**。

## 三条铁律

1. **问题决定方法，不是方法决定问题。** 先读懂题目要什么，再从方法库挑；堆砌高级模型是新手最常见的失分方式（评委一眼看得出你只是把学过的模型全写上）。
2. **没有检验的结果等于没有结果。** 任何结论都要配误差、对比基线或灵敏度分析。只报"我们算出 X"的论文拿不到高分。
3. **可复现性是底线。** 论文里的每个数字都要能由附录代码重跑出来。国赛规范明确：程序不能运行或结果与论文不符，可能被取消评奖资格。

## 第 0 步：开工前先确认三件事

问清楚（或从上下文推断）再动手，避免做错方向：

| 要知道 | 为什么重要 |
|---|---|
| **哪个竞赛 / 什么题号** | 决定了格式硬规则、页数、语言、评审偏好 |
| **还剩多少时间** | 决定策略：时间紧就主攻一问 + 保证检验与写作完整，而不是贪多 |
| **交付物是什么** | 论文 PDF？支撑材料压缩包？代码？Summary Sheet？ |

竞赛差异（格式、页数、语言、评审侧重）见 `references/contests.md`。

## 第 1 步：审题与选题

1. **逐句拆题**：把题目拆成"已知条件 / 待求目标 / 隐含约束 / 数据清单"四类，写成清单。
2. **识别问题类型**：优化、预测、评价、机理、仿真、分类——多数赛题是多问递进的混合体。
3. **选题目**（若题目可挑）：
   - 优先选**数据齐全、能算出确定结果**的题；数据缺失或需要大量外部调研的题风险高。
   - 避开"看起来简单但无法定量验证"的题——评委要的是可检验的结论。
   - 若队伍有专业背景优势（物理/医学/经济），优先选对口的题。
4. **给每问写一句"可验证的目标"**：例如"给出 3 个配送中心选址方案，使总成本最小且满足 24 小时内送达"。含糊的目标必然导致含糊的模型。

## 第 2 步：问题分析 → 方法选型

**先明确每问的输出形态**（一个数值？一个方案？一个预测序列？一张评价排序表？），再选模型。

打开 `references/model-library.md` 的**快速检索表**，按"赛题信号"定位 2–3 个候选方法，然后：

1. 对每个候选写一句**为什么适用**与**为什么不选它**（论文里可以直接用这段论证）。
2. **优先选能算出、能验证的简单模型**，再用组合/改进体现创新。评委更认可"简单模型 + 严谨检验"而不是"复杂模型 + 无法验证"。
3. 多问赛题要在**同一模型体系上递进**，不要每问换一套毫不相干的模型。
4. 若问题涉及不确定性，从一开始就设计好**随机性怎么处理**（场景、区间、蒙特卡洛），不要等到最后补一句"考虑随机因素"。

## 第 3 步：假设与符号

- **假设必须"可落地"**：每条假设后面在建模中都要真的用到，并在论文里说明它的影响。写了 10 条假设却只用 2 条，是典型的凑数。
- 假设来源：题目给定条件 + 合理的简化（忽略次要因素）+ 数据可得性限制。
- **符号说明**用表格：符号 / 含义 / 单位。全文符号唯一，正文与附录一致。
- 单位必须统一——同一模型里混用小时与分钟、元与万元，是低级但致命的错误。

## 第 4 步：建模与求解

1. **写出数学模型的三要素**：决策变量、目标函数、约束条件（优化类）；或状态变量、演化方程、初边值条件（机理类）；或模型形式与参数（统计/预测类）。论文里必须有**公式**，不能只有文字描述。
2. **先做小规模验证**：用小算例/已知答案的子问题验证代码正确，再跑正式规模。这能避免"跑了两小时发现建模就写错了"。
3. **求解要说清方法**：精确求解器（含版本与参数）还是启发式（含种群、迭代次数、收敛判据）。启发式必须**多次独立运行并报告均值±标准差**。
4. **代码规范**：一个脚本对应一问，固定随机种子，输出结果同时落盘（CSV/JSON）供论文引用，避免手抄数字。
5. **不确定参数要做敏感性**：不要只报一个点估计。

## 第 5 步：检验（这一步决定能不能上奖）

至少完成以下三项中的两项，并写进论文。**不必为检验单设一章**——实证显示 64 篇国赛获奖论文中只有约 19% 单设灵敏度章节、约 28% 单设模型评价章节，多数做法是把它写在每一问的求解结果之后；但**内容必须在**，只给结果不做检验仍会失分。（美赛不同：官方点名要求 sensitivity 与 strengths and weaknesses，必须显式写。）

| 检验 | 做法 | 论文里写什么 |
|---|---|---|
| **误差/精度** | 与真实值、解析解、或基线模型对比 | MAE/RMSE/MAPE、相对误差，或与贪心/现状方案对比 |
| **灵敏度分析** | 关键参数 ±10%/±20% 扰动，看结论是否改变 | 参数-结果曲线或表格 + "当 X 在 [a,b] 内变动时，Y 波动不超过 Z%" |
| **稳健性/交叉验证** | 换数据切分、换方法、换权重、多次仿真 | 多方法排序一致性（Spearman）、结果区间、稳定性结论 |

写法要求：**给出具体数字和结论**，不要写"结果比较稳定"这种无信息的话。

## 第 6 步：写作

论文结构骨架、各部分篇幅占比、真实章节标题样例见 `references/paper-structure.md`。
摘要模板（中文版 + MCM 英文版）见 `assets/abstract-template.md`。

写作要点：

- **摘要最后写、最先定稿**。评委的第一印象来自摘要：每一问都要有"方法 + 具体结果 + 检验结论"。摘要里没有数字 = 摘要失败。
- **先写正文再回填摘要数字**，定稿前逐句核对摘要与正文的一致性（问号顺序、数值、结论）。
- **图表**：坐标轴写清物理量与单位；图例清晰；≥300 dpi；中文字体需显式设置否则乱码；关键结论标注在图上。图题在下、表题在上（遵循模板要求）。
- **不要目录**（国赛规范明确正文不要目录），不要在第一页放个人/学校信息。
- **语言**：中文题目用规范书面语（不用"我们组""感觉"）；美赛必须英文写作，且语法错误直接影响评级。
- **篇幅**：正文写满但不要灌水——用模型论证、灵敏度、对比实验填充，而不是重复题目。

## 第 7 步：自检与提交

**机械检查**（先跑脚本，再人工过清单）：

```bash
python scripts/check_paper.py paper.md --contest cumcm     # 国赛
python scripts/check_paper.py paper.md --contest yjs       # 研赛
python scripts/check_paper.py paper.md --contest mcm       # 美赛
```

脚本会检查：必备章节、摘要要素、匿名合规（国赛/研赛）、图表编号连续性、引用标注、附录程序声明等。**它只做机械校验，模型合理性与正确性必须人工复核。**

**提交前**逐项过 `references/checklists.md` 里对应竞赛的清单。最容易导致"直接出局"的五件事：

1. 论文里出现**学校、姓名、赛区、队号**（国赛/研赛严禁，可能取消评奖资格）。
2. **附录缺少可运行源程序**，或程序运行结果与论文不一致。
3. **超限**：国赛正文超 30 页、提交文件超 20MB、电子版首页不是摘要页；美赛超 25 页（**含附录与代码**）。
4. **AI 使用声明缺失或不实**。国赛 2026 年 9 月起试行规定：须在**参考文献之前**设「AI工具使用声明」（未使用也要声明），使用 AI 还要在支撑材料放 `AI工具使用详情.pdf`；隐瞒或虚假声明 → 取消评奖资格。研赛 2025 规定：无法溯源的 AI 生成模型与公式**一律不予认可**，程序与数据分析处须加注释说明。美赛：须披露并附 `Report on Use of AI`。合规要点见 `references/contests.md`。
5. **查重**：国赛知网库与自建库任一相似度 **≥25%** 原则上不能报送全国评阅（赛区可能执行更严）。不得大篇幅照抄，文字与代码都算。

> 另需提醒用户：国赛纪律严禁竞赛期间与队外任何人（含指导教师）讨论赛题，也禁止在贴吧/QQ群/知乎/CSDN/GitHub 等平台浏览或发布赛题相关内容。本技能适合**备赛训练、赛后复盘、论文写作与自检**；竞赛进行中不要把赛题贴进来求解答。

## 官方评奖标准：只有四个维度（写论文时对齐它）

国赛《章程》第二条给出的唯一官方评奖标准是：**假设的合理性、建模的创造性、结果的正确性、文字表述的清晰程度**——没有权重表、没有分值表（网上流传的百分比都是编的）。同一句话还规定了答卷必须覆盖的五大内容块：**模型的假设、建立和求解、计算方法的设计和计算机实现、结果的分析和检验、模型的改进**。

落笔时逐条对齐：

| 官方维度 | 你的论文必须做到 |
|---|---|
| 假设的合理性 | 每条假设有依据，且后文真的用到 |
| 建模的创造性 | 有"针对本题特性"的改动与理由，而非套模板 |
| 结果的正确性 | 误差/对比基线/灵敏度，三者至少给两个 |
| 文字表述的清晰度 | 技术路线图 + 符号表 + 图表规范 + 每章一句导语 |
| 计算方法与计算机实现 | 算法步骤、工具与版本、规模与运行时间都要交代 |
| 模型的改进 | 单列一节写局限、改进方向与可推广场景 |

评委还会**面试（答辩）**，所以论文里出现的模型你必须真懂——不要在论文里写自己解释不了的模型。详见 `references/scoring-rubric.md`。

## Gotchas（这些是新手一定会踩的）

- **国赛电子版第一页必须是摘要页**，承诺书与编号专用页**不要**放进电子版；纸质版则必须有这两页。
- **摘要"原则上不超过一页"**：正文里塞了 2000 字的摘要是要被打回的，脚本会给出字数预警。
- **支撑材料要单独打包**（RAR/ZIP，≤20MB），其文件列表必须写进论文附录；两者内容不符可能被取消资格。
- **预测类题目必须打败"朴素基线"**（上一期值/均值）。做不到就说明模型没有价值——这件事评委看得很重。
- **评价类题目只用一种赋权方法**（比如只做 AHP）几乎肯定被质疑，要做权重敏感性 + 多方法交叉验证。
- **不要把仿真当证明**：蒙特卡洛是估计，必须给样本量、标准误与收敛性；只跑一次就下结论等于没做。
- **有效数字要与数据精度匹配**：用 3 位有效数字的数据报 8 位结果会显得不懂统计。
- **MAPE 在真值接近 0 时会爆炸**，这类序列改用 MAE/RMSE。
- **元胞自动机/机器学习的随机性**必须固定种子，否则结果不可复现。
- **美赛的 Summary Sheet 单独成页且置于全文最前**，它往往比正文更决定评级。
- **美赛 Summary Sheet 必须单页、字号 ≥12pt**。官方 FAQ 原话："It is unlikely the judges will read much beyond a poorly constructed summary."
- **美赛 25 页含附录、代码、目录与参考文献**，但 `Report on Use of AI` 不计页数；**Memo/Letter 是逐题面要求**，近年在多数题目中出现，选题后第一时间确认并预留 1–2 页。
- **研赛没有"承诺书 + 编号专用页"**（那是国赛独有），摘要页就是第 1 页；研赛国家级规范**不设正文页数上限**，只限摘要 ≤2 页（部分省级规范更严）。
- **国赛获奖论文多数不单设"检验""模型评价"章节**（独立成章仅约 19%/28%），但美赛官方点名要求 sensitivity 与 strengths and weaknesses——**两赛事不要套同一结构**。

## 反面模式（出现即扣分）

模型堆砌（AHP+熵权+TOPSIS+神经网络全上但互不相关）· 无检验 · 只给结果不给过程 · 假设写了不用 · 符号表与正文不一致 · 数据来源不明 · 结论超出模型适用范围 · 附录代码与论文数字不符 · 摘要与正文结论矛盾 · 直接复制网络资料（学术不端）。

## 参考文件索引（按需读取，不要一次全读）

| 什么时候读 | 读哪个 |
|---|---|
| 需要确认格式/页数/提交要求/语言/赛制差异 | `references/contests.md` |
| 需要选模型、找适用方法、查工具与陷阱 | `references/model-library.md` |
| 需要按题目类别比较基线、改进和验证设计 | `references/model-implementations.md` |
| 需要查具体算法、复杂度、本仓库实现位置与陷阱 | `references/algorithm-implementations.md` |
| 需要某个算法的数学形式、步骤、参数表、复杂度与检验方法 | `references/algorithm-details.md` |
| 需要想创新点、判断哪些参数能改、怎么证明创新有效 | `references/innovation-playbook.md` |
| 需要查 GitHub 模型库、许可证和资源边界 | `references/github-resources.md` |
| 需要优秀论文/官方来源链接，或想知道为什么仓库不放他人论文图 | `references/paper-examples.md` |
| 需要参考带注释的 Python 基线实现 | `examples/modeling_patterns.py` |
| 需要可直接运行的算法实现（仅 numpy + 标准库） | `examples/algorithms/`、`examples/run_algorithms.py`、`examples/algorithms_golden.json` |
| 要写论文、搭章节骨架、安排篇幅 | `references/paper-structure.md` |
| 想知道评委怎么打分、哪里最容易丢分 | `references/scoring-rubric.md` |
| 提交前逐项自查 | `references/checklists.md` |
| 选 LaTeX 模板、编译报错、图表与参考文献排版 | `references/templates.md` |
| 要一份可直接编译的论文模板（国赛/研赛/美赛） | `assets/latex/`（先读 `assets/latex/README.md`） |
| 要**竞赛官方文档类**的完整模板（真正提交用这套，含预编译样例 PDF） | `assets/latex/full/`（先读 `assets/latex/full/README.md`） |
| 要把模板按竞赛一键拷到工作目录、或打包成 zip 分发 | `scripts/download_templates.py`（`--contest` / `--out` / `--zip` / `--list` / `--fontset`） |
| 模板改完后想确认还能不能编过、引用是否解析、AI 声明位置对不对 | `scripts/check_latex.py`（`--require` / `--self-test`） |
| 改了完整文档类模板的 `.cls`/字体设置，要确认 Windows 字体缺失时还能编过 | `scripts/check_latex_full.py`（`--require` / `--only` / `--self-test`） |
| 要论文配图范本、图注写法与绘图规范 | `assets/gallery/`（先读 `assets/gallery/README.md`） |
| 重新生成配图库或跑配图数值自检 | `scripts/make_figures.py`（`--dpi` / `--only` / `--self-test`） |
| 检查配图配色是否对色觉障碍友好、灰度下是否还分得开 | `scripts/check_palette.py`（`--quiet` / `--self-test`） |
| 写摘要 | `assets/abstract-template.md` |
| 一页纸红线清单（可打印） | `assets/cheatsheet.md` |
| 可填空论文骨架（含占位符提示） | `assets/paper-outline.md` |
| 生成论文骨架 + 机械检查论文草稿 | `scripts/check_paper.py --init` / `scripts/check_paper.py` |
| 校验技能自身结构（frontmatter/篇幅/文件引用） | `scripts/validate_skill.py` |
| 用户要装/更新/换宿主重装这个技能，或问"技能目录在哪" | `INSTALL.md`（给助手看的安装流程）、`scripts/install_skill.py`（`--list-targets` / `--target auto` / `--force` / `--dry-run` / `--self-test`） |
| 了解本技能的触发评测方法 | `evals/README.md`、`evals/trigger-queries.json`、`evals/evals.json` |

