Skip to main content
ClaudeWave
Skill154 estrellas del repoactualizado 16d ago

math-modeling-solver

# ClaudeWave: math-modeling-solver This Claude Code skill guides users through complete solution workflows for Chinese Mathematical Modeling Competition (CUMCM) and American Mathematical Modeling Competition (MCM/ICM) problems across all six categories. It delivers structured problem decomposition, 95+ scenario-specific model decision matrices, algorithm cookbooks, complete example playbooks with runnable Python and MATLAB code templates, and connects to paper-writing workflows. Deploy this skill when users request modeling strategy guidance, model selection advice, solution methods for specific problem types, or analysis of competition problem texts mentioning optimization techniques, network flows, time series analysis, or other mathematical modeling domains.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/Lupynow/math-modeling-skills /tmp/math-modeling-solver && cp -r /tmp/math-modeling-solver/skills/math-modeling-solver ~/.claude/skills/math-modeling-solver
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# 数学建模竞赛解题指导

> 本 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完成后自动执行,不可跳过。用户确认拆题结果后,必须先检索再推荐模型,确保每个候选模型都有文献证据支撑。

**自动加载**:`../math-modeling-paper/references/literature-review.md`(跨 skill 读取)

**步骤**:

1. 从阶段1第4步已生成的检索关键词出发,锁定 3-5 组最有针对性的检索式
2. **告知用户**:按信源分级(T1: CrossRef/IEEE → T2: Semantic Scholar/arXiv → T3: Google Scholar/知网)给出检索建议,列出中英文各 3-5 组检索式。详见 `literature-review.md` 1.3 节「检索渠道与信源路由」
3. **询问用户**:是否需要代为搜索?如用户同意,优先用 T1 信源执行检索
4. **提取方法证据**:从检索结果中整理:
   - 类似问题用了哪些方法?
   - 各方法的效果对比(精度/速度/鲁棒性)
   - 是否有公认的基准方法?
   - **标注期刊含金量**:优先采信 SCI Q1/Q2、中文核心等高级别期刊论文
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(文献检索)为必做阶段,不可跳过——文献证据是模型选择质量的关键保障
3. **用户可回退**:如阶段3发现模型不合适,可退回阶段2重新匹配;如怀疑模型选择方向,可退回阶段1.5补充文献检索
4. **Playbook 参考**:在阶段1末尾检查是否匹配已知题型模板。如匹配,加载对应 playbook **作为思路参考**——playbook 展示的是一种可行路径,不是唯一路径。你遇到的题目和 playbook 的例题一定不同:数据不同、约束不同、要求不同。playbook 的价值在于让你看到「这类题一般怎么想」,而不是「这道题应该照搬什么」。永远从你的题目出发,而不是从 playbook 出发
5. **语言偏好**:首次交互时确认用户偏好 Python 还是 MATLAB。物理/工程类(A题)默认 MATLAB,数据/ML 类(C题)默认 Python,优化类(B题)两者均可

---

## 参考资源

- `referenc