Skill86 estrellas del repoactualizado 13d ago
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。
Instalar en Claude Code
Copiargit 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-solverDespués abre una sesión nueva de Claude Code; el skill carga automáticamente.
Definición
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. **告知用户**:建议在 Google Scholar 和知网搜索以下关键词(列出中英文各 3-5 组) 3. **询问用户**:是否需要代为搜索?如用户同意,用 WebSearch 工具执行检索 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题)两者均可 --- ## 参考资源 - `references/problem-decomposition.md` — 拆题方法论(12 种问题类型,含第4步文献检索关键词生成) - `references/model-selection-mat