用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/lix965996-art/MMM --skill comp-modeling命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission. Codex designs ablations from a reviewer's perspective, CC reviews feasibility and implements.
Analyze ML experiment results, compute statistics, generate comparison tables and insights. Use when user says "analyze results", "compare", or needs to interpret experimental data.
Search, download, and summarize academic papers from arXiv. Use when user says "search arxiv", "download paper", "fetch arxiv", "arxiv search", "get paper pdf", or wants to find and save papers from arXiv to the local paper library.
基于 SOC 职业分类
正在显示 SKILL.md
| name | comp-modeling |
| description | 数学建模竞赛核心建模与求解。建立数学模型、推导公式、设计算法。Use when user says "建模", "modeling", "模型建立". |
| argument-hint | ["problem-analysis-or-topic"] |
| allowed-tools | Bash(*), Read, Write, Edit, Grep, Glob, WebSearch, WebFetch, Agent |
基于赛题分析进行数学建模与求解:$ARGUMENTS
COMPETITION / PROBLEM_ID — 从 Additional Parameters 读取
TOOLS — 默认 python
CUSTOM_REQUIREMENTS — 用户自定义要求
PROBLEM_ANALYSIS.md — 赛题分析报告(必须存在)
user_data/ — 赛题附件数据
提取子问题列表、推荐方法、变量定义、数据特征。
⛔ 对照 PROBLEM_ANALYSIS.md 的推荐方法: 如果选择了不同于推荐的方法,必须在 MODELING_REPORT.md 中明确说明理由(为什么推荐方法不适用、替代方法的优势)。不能无声地忽略推荐方法。
⛔ 防错审查(必做): 读取 _references/error_prevention.md,根据本题涉及的题型(优化/微分方程/统计/评价/图论/几何/动态规划),对照对应章节的"必须做"和"禁止做"条目。在 MODELING_REPORT.md 末尾写一行:本题涉及题型:[X, Y, Z],已对照防错手册审查。
每个假设必须有合理性说明。假设要合理且必要,不做不切实际的简化。
⛔ 假设参数化原则: 关键假设必须在代码层面做成可切换的参数,而不是硬编码到逻辑里。这样发现假设错误时,改一个参数就能修正,不需要重写整个求解逻辑。
在 MODELING_REPORT.md 中,每个假设旁边必须写明:
假设 1: [假设内容]
- 理由: [为什么这样假设,不能留空]
- 参数化: [对应代码中的哪个变量/开关]
- 替代假设: [如果这个假设不成立,替代方案是什么]
示例:
假设 3: 每类设备允许多台并行分担同一工序的工程量
- 理由: 题目说"各类设备须分别完成该工序对应的工程量","各类"指设备类型而非单台设备;且问题四增加预算购买设备才有意义
- 参数化: ALLOW_PARALLEL = True(代码中的开关变量)
- 替代假设: 每类设备只用 1 台(ALLOW_PARALLEL = False),但这会导致问题四退化为问题三
⛔ 如果某个假设写不出有力的理由,说明这个假设需要再推敲。 回到 PROBLEM_ANALYSIS.md 的假设预检结果重新审视。
每个子问题:
方法调研 — 用 WebSearch 搜索"[问题类型] 数学建模 方法"或"[problem type] optimization method",了解这类问题的主流求解方法。不要只凭训练知识选方法——同一类问题在不同规模下最优方法可能完全不同(如 TSP 小规模用精确求解,大规模用 LKH 启发式)
模型选择与理由 — 为什么选这个模型,与候选模型的优势对比,引用调研到的文献支撑
数学公式推导 — 完整严谨,使用 LaTeX 数学环境(目标函数+约束条件)
求解算法设计 — 伪代码或流程描述
方法选择参考 _references/methods_table.md。
确保所有公式中的符号都有定义:
| 符号 | 含义 | 单位 | 取值范围 | 首次出现 |
|------|------|------|----------|----------|
模型检验:回代检验、交叉验证、残差分析
灵敏度分析:关键参数的变化范围和影响
鲁棒性检验:数据扰动下的稳定性
核心原则:物理约束 > 数据忠实度 > 计算正确性
编码阶段是纯执行者,遇到"结果不对"只能按建模阶段的预案操作,不得自行发明修正方法。因此建模阶段必须把所有决策做完。
执行步骤:
对照防错手册审查模型:重新查阅 _references/error_prevention.md 中本题对应题型的"必须做"和"禁止做"条目,逐条确认模型是否满足。不满足的当场修改模型。
输出建模报告的 5 项必备内容(在 MODELING_REPORT.md 末尾,comp-code 必须对照执行):
① 结果约束清单(硬边界,超出即判定代码有误):
## 结果约束清单
- [变量名] ∈ [下界, 上界],物理含义:[为什么是这个范围]
- [变量名] 的符号/方向约束:[说明]
- [守恒量]:[应满足的恒等式或误差上限]
② 预期行为描述(定性描述合理结果的"形状"):
## 预期行为
- 时间尺度:系统应在 [X] 时间内达到 [什么状态]
- 稳态特征:[哪些量] 应趋于常数/周期/衰减
- 瞬态特征:[初始阶段应该看到什么现象]
- 单调性/对称性:[哪些量应该单调递增/对称/...]
③ 异常处理预案(每种异常只给一种修正方法,不留选择空间):
## 异常处理预案
若出现 [具体异常描述]:
→ 原因判断:[最可能的原因]
→ 唯一修正方法:[具体步骤]
→ 禁止:[不允许的替代方案]
④ 方法唯一性声明(每个计算步骤指定唯一方法,包括预处理/后处理/插值/滤波):
## 方法指定
步骤 N:[做什么]
方法:[唯一指定的方法名 + 关键参数]
输入:[从哪来]
输出:[到哪去]
禁止替代:[不允许用的方法,以及为什么不用]
⑤ 验证检查点(编码阶段必须执行的 pass/fail checklist):
## 验证检查点
□ [检查项]:[判定条件],若 fail → [跳转到哪个异常预案]
□ [检查项]:[判定条件],若 fail → [跳转到哪个异常预案]
□ 最终:所有输出量均在约束清单范围内
⛔⛔⛔ 建模阶段强制修复原则(不可跳过):
审查中发现任何问题,必须当场修复模型再继续,不能留给 comp-code 阶段:
模型缺少约束 → 立即补充约束条件
开环积分可能漂移 → 立即加入反馈/阻尼/去漂移机制
守恒律不满足 → 立即补充遗漏项
极端输入导致发散 → 立即加入饱和/截断/正则化
⛔ 禁止的做法:
❌ 发现问题但写"留给 comp-code 阶段处理"
❌ 在预期范围表里写了修正方案但不修改模型本身
❌ 只在文字中提到"需要注意XXX"但模型公式没变
⛔ 检测到问题 = 必须修复。解释原因 ≠ 处理完毕。本步骤不允许带着已知问题输出 MODELING_REPORT.md。
保存到 MODELING_REPORT.md:模型假设、符号说明、每个子问题的模型/公式/算法、检验方案、灵敏度分析方案、编程实现要点。
⛔ 必须将 PROBLEM_ANALYSIS.md 中的图表预规划带入 MODELING_REPORT.md。 在报告末尾附上图表预规划章节(从 PROBLEM_ANALYSIS.md 复制或更新),确保 paper-figure 能读到完整的图表清单。如果建模过程中发现需要额外的图表(如灵敏度分析曲线、模型对比热力图),在此处补充。
⛔ MANDATORY: 输出前自检(写完 MODELING_REPORT.md 后必须逐项检查):
echo "=== 建模报告自检 ==="
[ -f MODELING_REPORT.md ] || { echo "❌ MODELING_REPORT.md 不存在!"; exit 1; }
# 1. 子问题覆盖度
PROB_COUNT=$(grep -c '问题[一二三四五六七八九十0-9]' PROBLEM_ANALYSIS.md 2>/dev/null || echo 0)
MODEL_SECTIONS=$(grep -c '## .*问题[一二三四五六七八九十0-9]\|## .*Problem' MODELING_REPORT.md 2>/dev/null || echo 0)
echo "赛题子问题数: $PROB_COUNT, 建模报告覆盖: $MODEL_SECTIONS"
[ "$MODEL_SECTIONS" -lt "$PROB_COUNT" ] && echo "❌ 有子问题未建模!"
# 2. 每个子问题是否有目标函数或模型公式
OBJ_COUNT=$(grep -c '目标函数\|min\|max\|最小化\|最大化\|objective\|模型公式\|数学模型' MODELING_REPORT.md 2>/dev/null || echo 0)
echo "目标函数/模型公式出现次数: $OBJ_COUNT"
[ "$OBJ_COUNT" -eq 0 ] && echo "❌ 未找到任何目标函数或模型公式!"
# 3. 约束条件(优化类必须有)
CONSTRAINT_COUNT=$(grep -c '约束\|s\.t\.\|subject to\|限制条件\|≤\|≥' MODELING_REPORT.md 2>/dev/null || echo 0)
echo "约束条件出现次数: $CONSTRAINT_COUNT"
# 4. 符号说明表是否存在
grep -q '符号.*说明\|符号.*含义\|Symbol.*Description' MODELING_REPORT.md && echo "✅ 符号说明表存在" || echo "❌ 缺少符号说明表"
# 5. 灵敏度分析方案是否存在
grep -qi '灵敏度\|sensitivity\|鲁棒性\|robustness\|稳健性' MODELING_REPORT.md && ||
grep -qi MODELING_REPORT.md && ||
grep -qi MODELING_REPORT.md && ||
PARAM_COUNT=$(grep -c MODELING_REPORT.md 2>/dev/null || 0)
[ -eq 0 ] &&
如果有 ❌ 项,必须补充后再结束本步骤。⚠ 项建议补充但不强制。
公式必须严谨:每个变量定义,每个等式有推导依据
⛔ Markdown 中的 LaTeX 公式格式规范(确保前端能正确渲染):
块级公式:$$ 必须单独占一行,前后各空一行
行内公式:用 $...$,内部避免用 _ 做下标时与 markdown 斜体冲突,复杂公式用块级
\begin{aligned} 等多行环境必须放在 $$...$$ 块级公式中,不要放在行内 $...$ 中
避免在公式中使用 \text{} 包裹中文(KaTeX 对中文支持有限),中文说明放在公式外面
模型假设是评审重点:合理、必要、有说服力
符号说明表必须完整
灵敏度分析不能省(评审加分项)
编程实现要点要具体:算法、库、输入输出格式
⛔ 主输出文件:MODELING_REPORT.md。不要在根目录写额外报告
⛔ 本步骤只输出 MODELING_REPORT.md,不要写 Python/MATLAB 代码文件。 代码实现是下一步 comp-code 的任务。本步骤只需要在报告中描述算法伪代码、求解思路、编程实现要点即可。如果需要验证某个公式或做简单计算,可以用 Bash 内联 Python 一次性脚本,但不要创建 code/*.py 文件
⛔ 分段写入:每次 Bash heredoc < 150 行。 MODELING_REPORT.md 通常很长,必须分 3-4 段追加写入(cat << 'EOF' >> MODELING_REPORT.md),不要一次性写完整个文件
详细条目见 _references/error_prevention.md,以下为最高优先级的两条硬性禁止:
禁止未声明的几何/物理简化 — 必须用实体完整几何作为约束判据,禁止降维简化(矩形→线段、实体→质心点)。若确需简化必须显式声明适用条件和误差上界。
禁止约束遗漏 — 题目中每个"不超过/至少/必须满足"都必须对应一个数学约束表达式。物理接触约束(不能穿透/重叠/超出边界)必须显式建模为不等式约束。