# Math Modeling Solver

> 数学建模竞赛解题全流程指导。覆盖国赛(CUMCM)和美赛(MCM/ICM)全部题型(A-F)，提供12种问题本质分析、95+场景模型决策矩阵、5本算法Cookbook、11本完整例题Playbook、22个Python+7个MATLAB可运行代码模板。与math-modeling-paper形成"解题→写作"配对。当用户提及建模思路、选什么模型、怎么建模、赛题求解、粘贴赛题文本、美赛/国赛题目分析、CVaR/NSGA-II/Monte Carlo/时间序列/ANOVA/灰色关联、网络流/图论/生态建模、模型命名/Memo/Letter/Our Work流程图时，使用此skill。

- Skill: `lupynow/math-modeling-solver` (Agent Skill, multi-file: 56 files)
- Install (CLI): `npx skillmds@latest add lupynow/math-modeling-solver`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lupynow/math-modeling-solver/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: lupynow (https://skillmd.com/u/lupynow)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lupynow/math-modeling-solver

---


# 数学建模竞赛解题指导

> 本 skill 提供的矩阵、cookbook、playbook、代码模板，全部是**知识参考**而非**决策指令**。
> 对于同一道赛题，不同队伍理应有不同的建模路径。矩阵里的推荐只是技术起点——
> 你的任务是结合题目具体约束、数据特征和团队判断，做出**有理由的选择**，而非照搬推荐。

## 使用流程

收到解题任务后，按以下五阶段工作流操作。

### Step 0: 判断用户入口

先判断用户在哪个阶段切入：

- **有新题目文本，从零开始** → 阶段1
- **已有问题分析结果，需要模型推荐** → 阶段2
- **需要先查文献再看选什么模型** → 阶段1.5
- **已确定模型，需要算法展开和代码** → 阶段3
- **建模已完成，需要衔接论文** → 阶段4
- **用户直接指定了模型名**（如"用 GA 求解"）→ 阶段3，跳过阶段1-2
- **用户输入匹配已知题型** → 加载对应 Playbook 获取完整解题示范（12 本 Playbook 覆盖国赛 A/B/C + 美赛 D/E/F 全部题型）

### 阶段识别规则

| 用户说 | 切入阶段 |
|--------|---------|
| "这道题怎么做" + 粘贴题目 | 阶段1 |
| "帮我分析这道题" | 阶段1 |
| "帮我搜一下类似问题的文献" | 阶段1.5 |
| "有没有类似题目的论文可以参考" | 阶段1.5 |
| "选什么模型好" | 阶段2 |
| "XGBoost 和随机森林怎么选" | 阶段2 |
| "帮我写 GA 代码" | 阶段3 |
| "这个公式怎么推导" | 阶段3 |
| "建模做完了，准备写论文" | 阶段4 |
| "帮我写摘要" | 阶段4 → 引导切换 paper skill |

---

### 阶段1：拆题分析

**目标**：判定每个子问题的数学本质，输出结构化的分析结果。

**自动加载**：`references/problem-decomposition.md`

**步骤**：

1. 阅读用户提供的题目文本，提取关键信息
2. 按 `problem-decomposition.md` 的方法论，对每个子问题判定数学本质类型（共 12 种）：
   - 预测/回归、分类/判别、评价/排序、优化/决策、机理/物理、聚类/分组、关联/因果、博弈/策略
   - 几何/运动学、统计推断/实验设计、网络科学/图论、生态系统/环境
3. 明确每个子问题的：输入变量、输出目标、约束条件
4. 分析子问题之间的数据流和递进关系
5. 输出结构化分析结果（见下方输出格式）

**输出格式**：

```
## 题目拆解

### 题目概况
- 比赛类型：[国赛/美赛]
- 题型：[A/B/C/D/E/F]
- 核心场景：[一句话概括]

### 子问题分析

#### 子问题一：[标题]
- 数学本质：[预测/评价/优化/机理/分类/...]
- 输入：[哪些变量/数据]
- 输出：[需要得到什么]
- 约束：[有哪些限制条件]
- 难点：[关键挑战]

#### 子问题二：[标题]
...

### 子问题关系
[描述数据流：问题一的输出如何成为问题二的输入]

### 整体建模流程图（文字描述）
问题一([本质类型]) → [中间结果] → 问题二([本质类型]) → [中间结果] → 问题三([本质类型])
```

**完成后**：停留，等待用户确认分析结果。确认后进入阶段1.5。

---

### 阶段1.5：文献检索

**目标**：用文献证据支撑模型选择——知道「别人怎么解这类题」再决定「我们怎么解」。

**触发条件**：阶段1完成后执行。如用户明确表示不需要文献检索（例如已自行检索、有明确模型偏好、或时间紧迫），可直接进入阶段2。

**自动加载**：`../math-modeling-paper/references/literature-review.md`（跨 skill 读取，仅加载第一部分「文献检索」，不展开全文）

**🚨 硬性上限（防止无限搜索，必须遵守）**：
- **最多执行 5 次 WebSearch 调用**（不是每个检索式都搜，是总共 5 次）
- **找到 5-8 篇高度相关论文后立即停止**，不需要穷尽所有检索式
- **T2/T3 回退仅在用户明确要求时执行**，不要自动级联回退
- **如果前 3 次搜索已经找到满意结果，直接跳到步骤 4 整理证据，不再继续搜**

**步骤**：

1. 从阶段1第4步已生成的检索关键词中，**只挑最核心的 2-3 组**（不是全部），中英文各至少 1 组——英文覆盖国际期刊，中文覆盖知网/万方/维普的核心期刊
2. **告知用户**：简要列出建议的 2-3 组检索式（中英文混合即可，不需要各 3-5 组），说明信源分级。详见 `literature-review.md` 1.3 节
3. **询问用户**：「是否需要我代为搜索？预计 3-5 次搜索即可覆盖核心文献（中英文各半）。如你已自行检索过，可以直接告诉我找到的文献，我们跳过这步。」
   - 用户同意 → 执行步骤 4，英文用 Google Scholar / Semantic Scholar，中文直接用中文关键词 WebSearch（覆盖知网/万方/维普的公开页面），**不要走 T1→T2→T3 三级级联**
   - 用户拒绝或已有文献 → 跳过搜索，直接请用户提供找到的文献，进入步骤 5
4. **执行搜索（遵守硬性上限）**：
   - **中英文分配**：5 次搜索中，英文 2-3 次 + 中文 2-3 次（中文搜索直接在 WebSearch 中用中文关键词，如 `"玻璃文物" "成分分类" 机器学习`）
   - **中文期刊识别**：搜索结果中来自 `cnki.net`、`wanfangdata.com.cn`、`cqvip.com` 的链接通常对应知网/万方/维普收录论文。优先采信标注为「核心期刊」「EI 收录」「SCI 收录」「CSSCI」「CSCD」的中文论文
   - 每次搜索后检查：是否已找到 5+ 篇相关论文（中英文合计）？是→停止搜索
   - 是否已用满 5 次 WebSearch？是→停止搜索
   - 从检索结果中提取：类似问题用了哪些方法？各方法效果对比？是否有公认基准方法？
   - **标注期刊含金量**：英文优先 SCI Q1/Q2，中文优先一级学报/核心期刊（见 `literature-review.md` 1.5 节期刊分级），普刊/会议短文尽量不引用
5. **输出文献证据摘要**（必须标注期刊级别）：

```
## 文献检索摘要

### 子问题一：[标题]
| 检索式 | 关键发现 |
|--------|---------|
| "[检索式1]" | [1-2句话：什么方法被用了、效果如何，来自什么级别期刊] |
| "[检索式2]" | [1-2句话] |

**方法分布**（按期刊含金量排序）：
- 方法A — [N]篇，代表：[Author (Year), 期刊名, SCI Q1/Q2] 在 [场景] 中达到 [性能]
- 方法B — [M]篇，代表：[Author (Year), 期刊名, 中文核心]

**对本题的启示**：[1-2句话]
```

6. 带着文献证据进入阶段2——每个候选模型的推荐都应引用检索发现

**完成后**：停留确认，然后进入阶段2。

---
	
### 阶段2：模型匹配

**目标**：为每个子问题推荐最合适的模型，结合文献证据给出对比和理由。

**自动加载**：`references/model-selection-matrix.md`
**按需加载**：对应领域的 cookbook（如确定是优化问题 → 加载 `cookbook-optimization.md`）

**步骤**：

1. 对每个子问题，查 `model-selection-matrix.md` 中对应本质类型的矩阵
2. 根据场景特征（样本量、线性/非线性、可解释性要求等）匹配模型
3. **结合阶段1.5的文献检索结果**：如文献中类似问题普遍使用某方法，在推荐中标注「文献支撑」；如矩阵推荐与文献主流不一致，应解释原因
4. **每个子问题给出至少 2 个候选模型**，从不同矩阵维度或不同角度提出。矩阵只是起点——你应结合题目具体约束、数据特征、文献证据和团队判断，做出**有理由的选择**
5. 说明每个候选模型的适用边界：在什么条件下更倾向A？什么条件下更倾向B？
6. 如涉及多个矩阵条目同时匹配（如既是0-1变量又是多目标），按 `model-selection-matrix.md` 开头的**冲突裁决规则**处理
7. 如涉及多个领域，加载对应 cookbook 做深入了解

**矩阵使用原则**：

矩阵是**知识参考**而非**查表结果**。对于同一道赛题，不同队伍理应有不同的建模路径。为降低不同用户独立使用此 skill 时模型选择的高度一致：

- 将矩阵中的每行理解为「候选模型A vs 候选模型B，选择取决于具体场景权衡」——不要将矩阵解读为唯一正确答案
- 当矩阵多个条目同时适用时，应列出**各条目分别指向的不同推荐**，让用户根据自身背景和偏好选择
- 鼓励用户在两个实力相当的候选模型之间做选择时，优先选自己更熟悉、代码储备更充足的那个

**输出格式**：

```
## 模型推荐

### 问题一：[标题]
| 维度 | 内容 |
|------|------|
| 数学本质 | [类型] |
| 场景特征 | [样本量/线性度/可解释性要求/...] |
| 匹配的矩阵条目 | [列出所有适用的矩阵行，如：(a)"含整数/0-1变量"→IP, (b)"多目标冲突"→NSGA-II] |
| **候选模型A** | **[模型名]** — 更适用于 [条件] |
| **候选模型B** | **[模型名]** — 更适用于 [条件] |
| 文献证据 | 方法A：[Author (Year), 期刊名, 级别], [性能]；方法B：[Author (Year), 期刊名, 级别], [性能] |
| 选择建议 | [在本题的特定场景下，A和B各自的优势和风险，何种情况下选A、何种情况下选B] |
| 不选A的情况 | [什么具体条件下应放弃A选B] |

### 问题二：[标题]
...
```

**完成后**：停留，等待用户确认模型选择。确认后进入阶段3。

---

### 阶段3：算法展开 + 代码生成

**目标**：针对确认的模型，给出适配问题的公式推导、算法伪代码和可运行代码。

**自动加载**：对应 cookbook + `code-templates/` 下对应语言和领域的模板
**加载规则**：
- 优化类 → `cookbook-optimization.md`
- ML/数据类 → `cookbook-ml.md`
- 评价类 → `cookbook-evaluation.md`
- 机理类 → `cookbook-mechanistic.md`
- 统计类 → `cookbook-statistical.md`
- 图论/网络类 → `cookbook-network.md`
- 聚类/分组类 → `cookbook-clustering.md`
- 博弈/策略类 → `cookbook-game-theory.md`
- 美赛 D/E/F 题或涉及网络科学/生态/政策 → `mcm-specific-guide.md`

**步骤**：

1. 从 cookbook 中提取该算法的"问题适配框架"
2. 将问题的具体变量、约束映射到算法框架中
3. 给出适配后的公式推导（从问题出发，不抄教科书）
4. 生成算法伪代码（Input / Output / Steps 格式）
5. 加载对应代码模板，**将模板中的变量名、函数名、注释全部替换**为本题的具体内容。模板仅提供算法逻辑骨架——最终代码的每一行都应围绕本题改写：变量名用题目中的符号、函数名描述本题的操作、注释解释为什么这样算。两个队伍用同一个模板解同一道题，产出的代码在命名和注释上应当完全不同
6. 如用户没有指定语言，默认 Python；物理/工程类默认 MATLAB

**输出格式**：

```
## 算法展开：[模型名]

### 问题适配
[将本题的具体变量/约束映射到算法框架]

### 公式推导
[从问题出发的公式推导，LaTeX 格式]

### 算法伪代码
\`\`\`
Algorithm: [名称]
Input: [具体输入变量]
Output: [具体输出变量]
Steps:
1. [步骤]
2. ...
\`\`\`

### Python 代码
\`\`\`python
[完整可运行代码，含注释和问题适配点]
\`\`\`

### 关键参数说明
| 参数 | 含义 | 取值依据 | 建议范围 |
|------|------|---------|---------|
| ... | ... | ... | ... |
```

**完成后**：停留，等待用户确认。确认后进入阶段4。

---

### 阶段4：论文衔接

**目标**：将建模结果组织为论文草稿片段，引导切换到 paper skill。

**自动加载**：`references/paper-bridge.md`

**步骤**：

1. 按 paper-bridge.md 的映射表，将各阶段输出重组为论文章节片段
2. 公式统一用 LaTeX 格式（`$$ $$` 或 `$ $`）
3. 结果数据以 Markdown 表格给出
4. 伪代码统一用 algorithmic 风格
5. 输出 `[PAPER_READY]` 切换信号

**输出格式**：

```
## 论文草稿片段

### 问题重述草稿
[阶段1拆解结果整理为论文规范的"问题重述"]

### 问题分析草稿
[阶段1+1.5+2的整合，含文献依据、为什么选这些模型、建模流程图]

### 文献综述草稿（如有检索）
[阶段1.5的文献证据整理为论文可用的综述段落]

### 模型建立与求解草稿
[阶段3的公式+伪代码，按子问题组织]

### 附录代码
[阶段3生成的完整代码]

---

[PAPER_READY] 建模方案已完成。建议切换到 **math-modeling-paper** skill 继续论文写作。
当前输出的论文草稿片段可直接嵌入正文各章节。
```

---

## 阶段间规则

1. **每阶段必须停留**，等待用户确认后再进入下一阶段
2. **用户可跳过阶段**：如用户说"直接给我代码"，相当于跳过阶段1-2。阶段1.5（文献检索）建议执行但可跳过——如用户已自行检索、有明确模型偏好或时间紧迫，可直接进入阶段2
3. **用户可回退**：如阶段3发现模型不合适，可退回阶段2重新匹配；如怀疑模型选择方向，可退回阶段1.5补充文献检索
4. **Playbook 参考**：在阶段1末尾检查是否匹配已知题型模板。如匹配，加载对应 playbook **作为思路参考**——playbook 展示的是一种可行路径，不是唯一路径。你遇到的题目和 playbook 的例题一定不同：数据不同、约束不同、要求不同。playbook 的价值在于让你看到「这类题一般怎么想」，而不是「这道题应该照搬什么」。永远从你的题目出发，而不是从 playbook 出发
5. **语言偏好**：首次交互时确认用户偏好 Python 还是 MATLAB。物理/工程类（A题）默认 MATLAB，数据/ML 类（C题）默认 Python，优化类（B题）两者均可

---

## 参考资源

- `references/problem-decomposition.md` — 拆题方法论（12 种问题类型，含第4步文献检索关键词生成）
- `references/model-selection-matrix.md` — 模型决策矩阵（95+ 场景）
- `references/paper-bridge.md` — 论文衔接规则（含文献→论文桥接）
- `references/mcm-specific-guide.md` — 美赛专项：模型命名/Memo/Letter/Our Work/可迁移性检验
- `references/cookbook-optimization.md` — 优化类算法手册（GA/PSO/SA/LP/DP；NSGA-II 见 `references/code-templates/python/optimization/nsga2_template.py`）
- `references/cookbook-ml.md` — ML 类算法手册（XGBoost/RF/SVM/NN）
- `references/cookbook-evaluation.md` — 评价类方法手册（TOPSIS/AHP/熵权/模糊）
- `references/cookbook-mechanistic.md` — 机理类建模手册（热传导/ODE/几何/光学/流体/振动）
- `references/cookbook-statistical.md` — 统计类方法手册（假设检验/ANOVA/DOE/蒙特卡洛/贝叶斯/成分数据/时间序列/灰色关联）
- `references/cookbook-network.md` — 图论与网络算法手册（网络流/最短路径/中心性/K-Shell/二分图匹配/多层网络）
- `references/cookbook-clustering.md` — 聚类方法手册（层次聚类/K-Means/DBSCAN/GMM/成分数据CLR变换）
- `references/cookbook-game-theory.md` — 博弈论建模手册（静态/动态/演化博弈/Nash均衡/Stackelberg）
- `references/playbooks/` — 12 本完整例题端到端走通（国赛：物理机理/调度优化/策略博弈/ML分类/ML回归/评价决策/路径规划/数据洞察/几何运动学；美赛：网络科学/环境科学/政策分析）
- `references/code-templates/` — Python & MATLAB 可运行代码模板（22 个 Python + 7 个 MATLAB）
- **跨 skill**：`../math-modeling-paper/references/literature-review.md` — 文献检索策略、综述写作、引用格式、参数溯源（阶段1.5自动加载）

