mcpbeat

Math Modeling Solver

lupynow/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。

114k tokens
context cost
the whole folder, loaded on every use
56
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
170
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Lupynow/math-modeling-skills --skill math-modeling-solver

The instruction itself

6 sections, as written by the author

数学建模竞赛解题指导

> 本 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

步骤

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

输出格式

## 题目拆解

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

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

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

**对本题的启示**:[1-2句话]
  • 带着文献证据进入阶段2——每个候选模型的推荐都应引用检索发现

完成后:停留确认,然后进入阶段2。


阶段2:模型匹配

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

自动加载references/model-selection-matrix.md

按需加载:对应领域的 cookbook(如确定是优化问题 → 加载 cookbook-optimization.md

步骤

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

步骤

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

输出格式

## 算法展开:[模型名]

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

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

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

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

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

完成后:停留,等待用户确认。确认后进入阶段4。


阶段4:论文衔接

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

自动加载references/paper-bridge.md

步骤

  • 按 paper-bridge.md 的映射表,将各阶段输出重组为论文章节片段
  • 公式统一用 LaTeX 格式($$ $$$ $
  • 结果数据以 Markdown 表格给出
  • 伪代码统一用 algorithmic 风格
  • 输出 [PAPER_READY] 切换信号

输出格式

## 论文草稿片段

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

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

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

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

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

---

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

阶段间规则

  • 每阶段必须停留,等待用户确认后再进入下一阶段
  • 用户可跳过阶段:如用户说"直接给我代码",相当于跳过阶段1-2。阶段1.5(文献检索)建议执行但可跳过——如用户已自行检索、有明确模型偏好或时间紧迫,可直接进入阶段2
  • 用户可回退:如阶段3发现模型不合适,可退回阶段2重新匹配;如怀疑模型选择方向,可退回阶段1.5补充文献检索
  • Playbook 参考:在阶段1末尾检查是否匹配已知题型模板。如匹配,加载对应 playbook 作为思路参考——playbook 展示的是一种可行路径,不是唯一路径。你遇到的题目和 playbook 的例题一定不同:数据不同、约束不同、要求不同。playbook 的价值在于让你看到「这类题一般怎么想」,而不是「这道题应该照搬什么」。永远从你的题目出发,而不是从 playbook 出发
  • 语言偏好:首次交互时确认用户偏好 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自动加载)

How to use it

Copy the folder

Take lupynow/math-modeling-solver from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.