一个给 AI 编码/科研助手用的 数学建模竞赛技能(Agent Skill):把一道赛题变成一篇评委愿意给高分的论文。
覆盖三大赛事:全国大学生数学建模竞赛(国赛 CUMCM)、中国研究生数学建模竞赛(华为杯研赛)、美国大学生数学建模竞赛(MCM/ICM 美赛)。
它不是一个"自动写论文"的工具,而是一位懂规则、懂评阅、懂建模流程的教练:帮你审题选题、选对模型、把检验做扎实、把论文写到规范里,并在提交前逐项卡住那些"会直接出局"的红线。
English: An agent skill for mathematical modeling competitions (China Undergraduate/Graduate MCM and COMAP MCM/ICM), providing workflow coaching from problem analysis to submission compliance, grounded in official rules and award-winning paper practices.
第 0 步:装上它(初次使用,详见下载与安装)
最省事的方式是把这句话发给你正在用的 AI 助手,让它自己装:
请阅读并按 https://raw.githubusercontent.com/anticipate218/math-modeling-skill/main/INSTALL.md 的说明,把
math-modeling-skill这个技能安装到我当前使用的助手环境里;装完告诉我装到了哪个路径、是哪个版本、以及怎么开始用。
想自己动手的话,一行命令也行:
git clone https://github.com/anticipate218/math-modeling-skill.git ~/.agents/skills/math-modeling-skill或者用技能包自带的安装器(会自动挑位置、丢掉 .git/、装完自校验):
python scripts/install_skill.py --list-targets # 先看装哪儿合适
python scripts/install_skill.py --target auto第 1 步:生成论文骨架(选择你的竞赛)
python scripts/check_paper.py --init --contest cumcm -o my_paper.md第 2 步:拷出对应竞赛的 LaTeX 模板(想用 LaTeX 排版的话)
python scripts/download_templates.py --contest cumcm --out my_paper第 3 步:填写【占位符】提示的内容
第 4 步:边写边自检
python scripts/check_paper.py my_paper.md --contest cumcm示例输出(FAIL=0 即可提交):
论文自检报告 — my_paper.md(cumcm)
结果:FAIL 0 项,WARN 2 项
[INFO] structure: 必备章节齐全(10 项)
[INFO] abstract-ingredients: 摘要要素齐备
[INFO] anonymity: 未检出疑似身份信息
[WARN] references: 参考文献仅 3 条,偏少
[INFO] ai-disclosure: AI 工具使用声明存在(声明为:未使用)
[INFO] validation: 存在结果验证/误差分析
以上脚本都不需要安装任何依赖(纯 Python 标准库),也不需要联网。唯一的外部依赖是可选的:想真的把 LaTeX 模板编译成 PDF,才需要本机有 TeX 发行版。
数学建模竞赛的失分,绝大多数不是因为"模型不够高级",而是因为四类可避免的问题:
- 没检验——只给结果,没有误差、对比基线、灵敏度/稳健性分析。评委无从判断对错。
- 摘要失败——摘要里没有具体数值结果。而评委往往先读摘要再决定是否细看。
- 格式红线——匿名信息、页数超限、附录缺可运行程序、AI 使用声明缺失。这些可能直接取消评奖资格。
- 模型堆砌——把 AHP+熵权+TOPSIS+神经网络全塞进去,却不解释为什么要用、各解决哪一问。
本技能把这些"规则知识"和"评阅视角"固化成可执行的流程与清单,让 AI 助手在每一步都按竞赛标准来要求你。
技能遵循 Agent Skills 开放标准:一个目录 + 一个 SKILL.md(含 YAML frontmatter)。目录名必须与 frontmatter 里的 name 一致(本仓库已满足)。
不用记任何命令,也不用打开浏览器。 把下面这句话(连同链接一起)发给你正在用的 AI 助手,它就会自己下载、找到技能目录、装好、再向你汇报:
请阅读并按 https://raw.githubusercontent.com/anticipate218/math-modeling-skill/main/INSTALL.md 的说明,把
math-modeling-skill这个技能安装到我当前使用的助手环境里;装完告诉我装到了哪个路径、是哪个版本、以及怎么开始用。
English:
Read and follow https://raw.githubusercontent.com/anticipate218/math-modeling-skill/main/INSTALL.md to install the
math-modeling-skillagent skill into the environment I'm using. When done, tell me the install path, the version, and how to start using it.
INSTALL.md 是专门写给 AI 助手看的:里面写了怎么拿到技能包、怎么确定技能根目录、怎么校验,还有一张「不要做」的清单(不要改目录名、不要覆盖别人的技能、不要装错层级、不要为了验证去跑算法或下载模板)。这份文档对不熟悉本仓库的助手也是自解释的。
如果你的助手抓不了网页链接,让它从 Release 包装:
请到 https://github.com/anticipate218/math-modeling-skill/releases/latest 下载最新的
math-modeling-skill-v*.zip,解压后把里面的math-modeling-skill整个文件夹放到你(助手自己)的技能目录里——目录名不要改——然后告诉我放在哪了、怎么开始用。
| 宿主 / 约定 | 技能目录(安装后应形如 <技能根>/math-modeling-skill/SKILL.md) |
说明 |
|---|---|---|
| DSH(项目级) | <项目根>/.dsh/skills/math-modeling-skill |
DSH 技能根表里优先级最高;只对当前项目生效 |
| DSH(用户级) | ~/.dsh/skills/math-modeling-skill |
设置过 $DSH_HOME 时以它为准($DSH_HOME/skills) |
| Agent Skills 通用约定(项目级) | <项目根>/.agents/skills/math-modeling-skill |
跨宿主通用的开放标准位置 |
| Agent Skills 通用约定(用户级) | ~/.agents/skills/math-modeling-skill |
跨宿主通用的开放标准位置 |
| Claude Code(项目级) | <项目根>/.claude/skills/math-modeling-skill |
|
| Claude Code(用户级) | ~/.claude/skills/math-modeling-skill |
<项目根> = 从当前目录向上找到的最近一个含 .git 的目录;找不到就用当前目录。
上表只列了能核实的路径。 其它宿主(Codex、Cursor、Gemini CLI、OpenCode……)的技能目录各不相同,本仓库故意不写死猜测值——猜错的代价是"装成功了但永远不被扫描",比装不上更难查。请让助手去读它自己的文档,或问它"你之前装的技能放在哪个目录",然后用
--into指定。
不知道自己宿主的技能根在哪? 先让助手跑一次探测(技能包自带,只用标准库):
python scripts/install_skill.py --list-targets它会打印每个候选根目录的绝对路径、是否已存在、以及那里已经装的是哪个版本。
技能包里带了一个只用标准库的安装器:它自己挑技能根、复制时丢掉 .git/ 与各种缓存、并在覆盖前做安全校验。
python scripts/install_skill.py --list-targets # 先看有哪些位置、哪个已存在、已装的是哪个版本
python scripts/install_skill.py --target auto # 装到自动挑出的位置
python scripts/install_skill.py --target auto --dry-run # 只看会做什么,不动磁盘
python scripts/install_skill.py --target dsh-user # 显式指定(--target agents-user / claude-user / ...)
python scripts/install_skill.py --into "~/.agents/skills" # 给技能根:自动补一层 math-modeling-skill
python scripts/install_skill.py --into "~/.agents/skills/math-modeling-skill" # 精确指定目标目录本身(给技能根也一样对)
python scripts/install_skill.py --from-zip math-modeling-skill-vX.Y.Z.zip # 从发布包装(X.Y.Z 换成 Release 页上的版本号)
python scripts/install_skill.py --download # 拉最新 Release 的 ZIP 再装(唯一联网的动作)
python scripts/install_skill.py --self-test # 固件测试:不联网、不碰真实技能目录--target auto 的挑选顺序是 项目级 DSH → 项目级 Agent Skills → 用户级 DSH → 用户级 Agent Skills,取第一个已存在的技能根;一个都不存在时落到 ~/.agents/skills(跨宿主通用约定)。
三条安全约定,值得知道:
- 默认拒绝覆盖已存在的技能目录(想覆盖得显式
--force); --force只肯删"确实是本技能"的目录——目标里必须有name: math-modeling-skill的SKILL.md,这道闸门是防--into手滑指到家目录的;- 装完自动用包内的
scripts/validate_skill.py --strict校验一遍,不通过就报错退出。
--into 有个贴心之处:你给技能根(例如 ~/.agents/skills)它会自动补一层 math-modeling-skill,你给技能目录本身它就原样使用——两种写法都对,实际装到哪儿会在动手前打印出来。反过来,如果那个目录里躺着别人的技能(SKILL.md 的 name 不是本技能),它会拒绝,绝不把文件塞进别人的技能目录。
git clone(推荐,方便日后 git pull 拿规则更新)
# Agent Skills 通用约定(用户级,跨宿主)
git clone https://github.com/anticipate218/math-modeling-skill.git ~/.agents/skills/math-modeling-skill# DSH 用户级(所有项目可用)
git clone https://github.com/anticipate218/math-modeling-skill.git "$env:USERPROFILE/.dsh/skills/math-modeling-skill"
# DSH 项目级(只对当前仓库生效)
git clone https://github.com/anticipate218/math-modeling-skill.git .dsh/skills/math-modeling-skill# Claude Code 用户级
git clone https://github.com/anticipate218/math-modeling-skill.git ~/.claude/skills/math-modeling-skillclone 进技能目录后记得把 .git/ 删掉(几 MB 历史,技能本身用不到):
rm -rf ~/.agents/skills/math-modeling-skill/.git下载 Release ZIP(机器上没装 git,或要给队友打包)
到 Releases 下载最新一版的 math-modeling-skill-vX.Y.Z.zip——内含完整技能包 + 全部 LaTeX 模板(轻量三套 + 完整文档类四套),解压出来的顶层目录就叫 math-modeling-skill/,整个目录丢进技能根目录即可,不用改名。
命令行直接拿(不用打开浏览器):
# PowerShell / Windows
$rel = Invoke-RestMethod https://api.github.com/repos/anticipate218/math-modeling-skill/releases/latest
$zip = ($rel.assets | Where-Object name -like '*.zip' | Select-Object -First 1).browser_download_url
Invoke-WebRequest $zip -OutFile math-modeling-skill.zip
Expand-Archive math-modeling-skill.zip -DestinationPath "$env:USERPROFILE/.agents/skills" # 解压后即 .../skills/math-modeling-skill/# bash / macOS / Linux
curl -L -o mms.zip "$(curl -s https://api.github.com/repos/anticipate218/math-modeling-skill/releases/latest \
| grep -o 'https://[^"]*\.zip' | head -1)"
unzip -q mms.zip -d ~/.agents/skills/ # 解压后即 ~/.agents/skills/math-modeling-skill/(unzip 换成 python -m zipfile -e mms.zip ~/.agents/skills/ 也可以,不依赖 unzip 命令。)
GitHub 网页下载(只想看几个文件):仓库页 Code → Download ZIP,解压后必须把目录重命名为 math-modeling-skill——目录名与 SKILL.md 里的 name 不一致时宿主会静默忽略它。
纯手工复制:把整个目录复制到技能根下,确保路径形如 <技能根目录>/math-modeling-skill/SKILL.md(SKILL.md 就在这一层,不要再套一层)。
| 用途 | 需要什么 |
|---|---|
文档、自检脚本(scripts/、references/、assets/) |
只有 Python 3.9+,纯标准库 |
运行自带算法(examples/algorithms/) |
额外需要 numpy(pip install numpy),不需要 scipy / sklearn / pandas / statsmodels |
| 真编译 LaTeX 模板(可选) | 本机装有 TeX 发行版(MiKTeX 或 TeX Live),并有 xelatex(中文模板)、pdflatex(美赛模板)与 bibtex |
除安装器的 --download 这一个开关外,所有脚本都不需要联网,也没有任何交互式提示——都能在 CI 里非交互运行。
仓库自带两套并行的 LaTeX 模板层,按用途二选一:
| 你想要 | 用哪套 | 在哪 | 形态 |
|---|---|---|---|
| 正式参赛提交(要评委熟悉的官方版式,含封面/承诺书/编号页/摘要页等硬性版式) | 完整文档类版(推荐) | assets/latex/full/ |
官方 .cls + 完整正文骨架 + 预编译样例 PDF |
| 想自己掌控排版、或用 AI 生成的论文 Markdown 快速成稿 | 轻量自包含版 | assets/latex/{cumcm,yjs,mcm}/ |
单个 main.tex + refs.bib,不依赖私有宏包 |
完整文档类版的取舍、改了什么、字体怎么处理,见 assets/latex/full/README.md;两套模板的完整对照见 assets/latex/README.md。
四套模板的完整可编译工程,目录内已含所有图片与预编译样例 PDF:
| 竞赛 | 目录 | 文档类 | 引擎 | 预编译样例 |
|---|---|---|---|---|
| 研赛·华为杯 2026 严格格式版 | assets/latex/full/hwcup2026/ |
hwcup2026.cls(本仓库自制,逐条复刻官方附件3) |
xelatex ×3 |
preview.pdf(3 页) |
| 国赛 CUMCM | assets/latex/full/cumcm/ |
cumcmthesis.cls v2.9 |
xelatex ×3 |
example.pdf(12 页) |
| 研赛(华为杯)通用版 | assets/latex/full/gmcm/ |
gmcmthesis.cls v2.2 |
xelatex ×3 |
MathModel.pdf(8 页) |
| 美赛 MCM/ICM | assets/latex/full/mcm/ |
mcmthesis.cls v6.3.3 |
pdflatex ×3 |
mcmthesis-demo.pdf(11 页) |
华为杯两套并存:投 2026 年研赛用
full/hwcup2026/——封面、4 个 Logo、 摘要页固定标签直接取自官方附件3 渲染图,版面尺寸与字号逐条对齐 2026-09-16 官方《论文格式规范》。full/gmcm/是社区沿用的通用排版版(章节/图表/算法环境 更全),保留下来供参考写法。取舍详见assets/latex/full/hwcup2026/README.md。
下载(三选一):
# ① 从 Release 直接下整套(含全部字体与图片,最省事)
# https://github.com/anticipate218/math-modeling-skill/releases/latest
# 资产:hwcup2026-template.zip / gmcm-template.zip / cumcm-template.zip / mcm-template.zip
# ② 已经在技能目录里:直接拷出来
cp -r assets/latex/full/hwcup2026 my_paper
# ③ 只想下单个文件:GitHub 网页进目录逐个另存,或走 raw
# https://raw.githubusercontent.com/anticipate218/math-modeling-skill/main/assets/latex/full/hwcup2026/main.texRelease 资产的直达链接(用 latest,永远指向最新一版):
- 2026 研赛·华为杯严格格式版:https://github.com/anticipate218/math-modeling-skill/releases/latest/download/hwcup2026-template.zip
- 研赛(华为杯)通用版:https://github.com/anticipate218/math-modeling-skill/releases/latest/download/gmcm-template.zip
- 国赛完整模板:https://github.com/anticipate218/math-modeling-skill/releases/latest/download/cumcm-template.zip
- 美赛完整模板:https://github.com/anticipate218/math-modeling-skill/releases/latest/download/mcm-template.zip
整套技能包(文件名带版本号,所以用安装器自动认版本最省事):
python scripts/install_skill.py --download。
编译(四套都不需要 bibtex——参考文献是内联 thebibliography,跑三遍引擎即可):
cd hwcup2026
xelatex -interaction=nonstopmode main.tex # 2026 研赛;国赛换成 example.tex
xelatex -interaction=nonstopmode main.tex # 研赛通用版换成 MathModel.tex
xelatex -interaction=nonstopmode main.tex # 美赛换 pdflatex + mcmthesis-demo.tex字体:gmcm/ 默认调用 Windows 的宋体/黑体/楷体/隶书,仓库里已附带这 5 个 .ttf(约 44 MB,见下方许可提示),Windows 上开箱即用;非 Windows 平台(含 Overleaf)会自动回落到 TeX Gyre + 系统可用字体,不需要改任何配置——这条回落路径由 scripts/check_latex_full.py 在 CI 里真实编译验证。这些 .ttf 必须留在模板目录根部,不要挪进 fonts/ 子目录(文档类按裸文件名引用它们,挪走会静默丢字)。
hwcup2026/ 不带任何字体:有 SimSun/SimHei/Times New Roman 就用(2026 规范点名的就是宋体/黑体),没有则回落 Noto Serif/Sans CJK SC + Liberation Serif,在 Overleaf/Linux 上照样编得过。但最终提交版建议在 Windows 上编,以拿到与官方 Word 附件3 一致的宋体/黑体字形。Debian/Ubuntu 上跑通回落分支需装 fonts-noto-cjk 与 fonts-liberation(CI 已点名)。
字体许可提示:这 5 个
.ttf是 Windows/中易(SinoType)的商业字体,不属于本仓库的 MIT 授权范围,随模板附上仅为保证与 Word 版式字形一致。若你不便使用,直接删掉它们即可——上面的回落路径会接管。详见assets/latex/full/THIRD-PARTY.md。
每套只有 main.tex + refs.bib 两个文件,不依赖任何私有宏包:
| 竞赛 | 模板 | 引擎 | 特点 |
|---|---|---|---|
| 国赛 CUMCM | assets/latex/cumcm/ |
xelatex |
中文;摘要页起排;AI 工具使用声明排在参考文献之前 |
| 研赛(华为杯) | assets/latex/yjs/ |
xelatex |
中文;摘要页即第 1 页;无承诺书/编号页;禁止页眉 |
| 美赛 MCM/ICM | assets/latex/mcm/ |
pdflatex |
英文;Summary Sheet 独占第 1 页;含 Report on Use of AI |
用脚本一键拷出(推荐)——它会连编译命令和注意事项一起打印给你:
# 拷出国赛模板到 my_paper/ 目录
python scripts/download_templates.py --contest cumcm --out my_paper
# 三套一起拷出,并额外打一个 zip 方便分享
python scripts/download_templates.py --contest all --out papers --zip papers.zip
# 只看清单,不拷文件
python scripts/download_templates.py --list--contest 可重复使用(cumcm / yjs / mcm / all)。目标文件已存在时脚本会拒绝覆盖,确认要覆盖再加 --force。
字体的坑,脚本会自动处理:中文模板默认写的是 fontset=windows(调用 Windows 的宋体/黑体,Windows 上开箱即用)。在 Linux / macOS / Overleaf 上这项会因缺字体而失败,所以脚本默认 --fontset auto——在非 Windows 平台自动改写成 fontset=fandol(fandol 字体随 TeX Live 分发)。想手动控制:
python scripts/download_templates.py --contest cumcm --out my_paper --fontset fandol # 强制 Fandol(Overleaf 推荐)
python scripts/download_templates.py --contest cumcm --out my_paper --fontset keep # 一个字都不改不想用脚本,直接从网页拿单个文件(右键另存为即可):
- 国赛:
https://raw.githubusercontent.com/anticipate218/math-modeling-skill/main/assets/latex/cumcm/main.tex(参考文献库refs.bib把文件名换掉即可) - 研赛:
.../main/assets/latex/yjs/main.tex - 美赛:
.../main/assets/latex/mcm/main.tex
拷出来之后怎么编译(4 遍,顺序不能省,否则交叉引用和参考文献会显示成 ??):
xelatex -interaction=nonstopmode main.tex # 美赛模板换成 pdflatex
bibtex main
xelatex -interaction=nonstopmode main.tex
xelatex -interaction=nonstopmode main.tex排版细节、宏包依赖与常见报错见 assets/latex/README.md;模板选择与答疑见 references/templates.md。写完之后可以跑一次编译体检:
python scripts/check_latex.py --require # 需要本机有 TeX
python scripts/check_latex.py --self-test # 不需要 TeX,只验证检查逻辑本身
python scripts/check_latex_full.py --require # 完整文档类版:真编译四套(含"本机无 Windows 字体"的回落路径)
python scripts/check_latex_full.py --self-test # 不需要 TeX,只验证检查逻辑本身cd math-modeling-skill
python scripts/validate_skill.py . --strict # 期望:0 个错误,0 个警告
python scripts/check_paper.py --self-test # 期望:全部 PASS
python scripts/download_templates.py --list # 期望:列出三套模板
python scripts/check_latex_full.py --self-test # 期望:26/26 通过(不需要装 TeX)
python scripts/install_skill.py --self-test # 期望:全部通过validate_skill.py 报错通常意味着目录名被改过(必须叫 math-modeling-skill)或者文件没下全(Release ZIP 比单下几个文件可靠)。
# 更新:拿到新版(git pull 或换一个新 ZIP)后重装,加 --force 覆盖自己的旧版本
git pull
python scripts/install_skill.py --target auto --force
# 卸载:技能就是一堆文件,没有后台进程、不写注册表、不改宿主配置
rm -rf ~/.agents/skills/math-modeling-skill--force 只覆盖本技能的旧安装,别的目录一律不动。
- 目录名是否正好是
math-modeling-skill——改了名不会报错,只会静默失效。 - 层级是否是
<技能根>/math-modeling-skill/SKILL.md(SKILL.md必须在技能目录顶层,不要再套一层)。 - 位置是否真的是宿主扫描的那个根目录——回到第 2 节对一下,或让助手读它自己的文档确认(别猜)。
- 是否要重启:DSH 会持续监视技能根目录,新增/改名/删除技能在下一个技能目录快照就会生效,不需要重启;其它宿主以它自己的文档为准,不确定就重启一次试试。
- 是否被别的技能抢了触发:把话说得更明确一点——开头加一句「用 math-modeling-skill 来做…」。
确认技能有没有被读到,最直接的办法是让助手列出当前可用的技能,或直接说一句建模需求看它会不会用。
技能不需要安装器、不需要常驻进程,也不需要你记住任何命令:宿主启动时扫描技能根目录,读到 SKILL.md 的 frontmatter 后,按其中 description 写明的场景(中英文触发词都覆盖了)自动决定要不要加载。所以最省事的用法就是把任务用中文说清楚。
- 确认装上了:让助手"列出当前可用的技能",应该能看到
math-modeling-skill;或者直接在技能目录里跑python scripts/validate_skill.py . --strict。 - 想强制指定:开头加一句"用 math-modeling-skill 来做…",避免与别的技能抢触发。
- 触发不灵时按顺序查四件事:① 目录名是否正好叫
math-modeling-skill(必须等于 frontmatter 的name);② 路径是否形如<技能根目录>/math-modeling-skill/SKILL.md(SKILL.md必须在技能目录顶层,不能多套一层);③ 装的位置是否真是宿主扫描的那个根目录(DSH 会持续监视技能根,不需要重启;其它宿主以各自文档为准);④ 是否被别的技能同场景抢占——此时用上面的强制指定方式。完整排查步骤见装完没生效?按这个顺序查。
安装后,直接对助手说这些话即可触发:
| 你说 | 它会做 |
|---|---|
| "帮我看看这道题该怎么建模" | 拆题 → 判断问题类型 → 从增强模型库给出基线、改进方案与验证设计 |
| "这个题有没有 GitHub 代码可以参考" | 按模型类别检索已核验资源,说明 README 明确内容、许可证、版本和适用边界;不直接复制结论 |
| "帮我比较 ARIMA、XGBoost 和 LSTM" | 先给朴素/统计基线,再按样本量、可解释性和滚动回测比较升级模型 |
| "国赛论文该怎么写/帮我搭个框架" | 给章节骨架、篇幅配比、真实标题样例 |
| "帮我写摘要" | 用摘要模板要求每一问都有"方法 + 数值结果 + 检验结论" |
| "这个模型够不够" | 按官方四维标准(假设合理性/建模创造性/结果正确性/表述清晰度)逐项挑问题 |
| "提交前帮我检查一遍" | 跑自检脚本 + 逐项过对应竞赛的合规清单(含 AI 声明、匿名、页数、查重提示) |
| "美赛和国赛有什么区别" | 给三大赛事的规则/格式/评审差异对照 |
| "给我一套能直接编译的 LaTeX 论文模板" | 先问是"提交用"还是"自控排版":默认给完整文档类版(官方 .cls + 完整骨架 + 预编译样例),或给轻量自包含版;附编译序列;提醒页数/memo 等可变项以当年官方文件为准 |
| "要 AHP/熵权/TOPSIS/灰色关联的实现" | 给自带的可运行实现 + 自检与黄金值回归,点明正向化、一致性检验等真实陷阱 |
| "帮我找几张优秀论文的图当素材" | 说明不能再分发他人图表,改用自带原创图库当画图范本,并给官方可引用来源索引 |
增强模型库:
references/model-implementations.md:按题目类别归类模型族,逐项说明基线、改进阶梯、适用前提与验证要求。references/github-resources.md:从 GitHub 一手 README/仓库页核验的 OR-Tools、Pyomo、sktime、Darts、StatsForecast、statsmodels、scikit-learn、XGBoost、SciML、FiPy、FEniCS、NetworkX、Shapely、Mesa、Nashpy 等资源。references/algorithm-implementations.md:模型 → 算法 → 复杂度 → 本仓库实现 → 外部库 → 陷阱的对照索引。examples/modeling_patterns.py:带详细注释的 TOPSIS、滚动均值/MAE、Dijkstra、蒙特卡洛基线;只使用示例数据,不冒充完整解题器。
可直接用的成品件:
assets/latex/:两套并行的三赛事 LaTeX 模板。①full/=完整文档类版(推荐参赛提交用),基于各赛事官方.cls,内含完整正文骨架、图片与预编译样例 PDF,xelatex/pdflatex连跑三遍即可;研赛模板默认调用 Windows 字体,仓库已附带.ttf,缺字体时自动回落到 TeX Gyre + fandol。②cumcm/、yjs/、mcm/=轻量自包含版,单个main.tex(不\input外部文件、图表用 TikZ/pgfplots 内联)+refs.bib,走xelatex → bibtex → xelatex ×2。两套都已内置各赛事硬规则(摘要页、页码、AI 声明位置、附录源程序),且每次 CI 都会被真正编译一遍(见下方「质量保障」),不是"文档里写着能编"。examples/algorithms/:17 个算法模块、260 个公开函数(优化/图论/启发式/预测/时间序列/统计/评价/多准则/聚类/机器学习/微分方程/随机仿真/几何/空间与物理场/博弈/多目标/灵敏度),仅依赖 numpy 与标准库;每个模块都带_self_test(),再用examples/run_algorithms.py跑黄金值回归与确定性复跑。逐函数的数学形式、步骤、参数表与陷阱见references/algorithm-details.md。assets/gallery/:16 张原创论文配图(评价权重与敏感性、TOPSIS 排序、预测对比与残差诊断、SIR 机理与参数敏感性、Pareto 前沿、蒙特卡洛收敛、排队仿真、最短路、空间插值、相关矩阵等),由scripts/make_figures.py固定种子生成——逐字节可复现,可当画图与图注范本。配色与排版经scripts/check_palette.py做可访问性体检:Okabe-Ito 色相在该项体检里二色觉最差 ΔE 达 16.1,而常见的"论文风"配色 seaborn deep / ColorBrewer Set2 / tab10 分别只有 2.7 / 2.5 / 4.6;另有线型与标记点两条冗余通道兜住黑白打印,见assets/gallery/README.md§5.7–5.8。
为什么仓库里没有历年优秀论文的原图:论文插图版权归作者/出版方,即使标注出处,未经许可把它们下载进仓库再分发通常也不构成合规使用,还会带来学术诚信风险。因此本仓库改为提供「原创可复现图库 + 官方与作者授权来源的链接索引」,见 references/paper-examples.md。
GitHub 资源使用原则:固定 commit/release,逐项检查仓库/代码/数据许可证,记录访问日期和运行环境;只借实现,不借论文结论,不报告未经核验的 stars 或性能排名。
自检脚本(无需安装依赖,Python 3.9+ 标准库即可):
python scripts/check_paper.py paper.md --contest cumcm # 国赛
python scripts/check_paper.py paper.md --contest yjs # 研赛
python scripts/check_paper.py paper.md --contest mcm # 美赛
python scripts/check_paper.py paper.md --contest cumcm --json # 机器可读输出(接入 CI)
python scripts/check_paper.py --self-test # 验证脚本自身可用它检查:必备章节、摘要要素(问题/方法/结果/关键词)、匿名合规(国赛/研赛)、图表编号连续性与是否在正文被引用、正文引用标注、参考文献数量与著录完整性、附录程序声明、AI 工具使用声明及其位置、结果验证痕迹、单位混用、篇幅提示。输出 FAIL/WARN/INFO 分级,有 FAIL 时退出码为 1,可直接接入 CI。
脚本只做可机械校验的结构与合规检查;模型合理性、创新性与结果正确性必须人工复核。
这一节是拿来就抄的。 技能不用背命令、不用记参数——把下面任意一条模板原样发给你的 AI 助手,再把
【】里的内容换成你自己的题目信息就行。每条模板背后都对应技能里真实存在的一条流程(审题选题 → 选型 → 求解 → 检验 → 写作 → 提交自检),它们不是"咒语":你多写两句、少写两句都不会让它跑偏;反过来,如果你只说"帮我做这道题",拿到的多半是一份什么都沾一点、什么都不落地的泛泛之谈。
想强制触发本技能(避免被别的技能抢走),在任意模板最前面加一句:「用 math-modeling-skill 来做:……」
| 要素 | 缺了会怎样 | 怎么写 |
|---|---|---|
| ① 赛事与约束 | 它按"通用论文"写,页数、匿名、AI 声明全不对 | 先报赛事(国赛 CUMCM / 研赛华为杯 / 美赛 MCM-ICM)与交付物 |
| ② 输入与数据 | 它会凭空编数据、编结论 | 贴题干原文;数据说清"有/无、多大、缺不缺、在哪个附件" |
| ③ 硬约束 | 你会得到一份"每个模型都试了一点"的论文 | 写清禁止项:不许编数据、不许三个方案都说好、必须给可复现代码 |
| ④ 交付物与验收 | 你不知道它算不算做完 | 说清要表格/代码/论文段落,以及"怎么算合格" |
同一件事的两种问法:
| ❌ 太糊 | ✅ 可用 |
|---|---|
| "这道题怎么做?" | "先别给模型:拆出这道题的问题类型、数学内核、数据要求,以及最常见的三个坑。" |
| "帮我建个模型" | "给一个朴素基线 + 两级改进,每级写清前提、代价,以及怎么验证它确实更好。" |
| "结果对不对?" | "给我能证伪的检验:灵敏度、稳健性、与独立实现的交叉验证;并指出哪一步最可能错。" |
| "帮我写论文" | "按评分四维逐条挑我稿子的毛病,给出修改后的段落,不用客气。" |
| "这段代码怎么这么慢?" | "指出复杂度瓶颈在哪、什么规模下会撑不住、什么时候该换成成熟库。" |
| 阶段 | 模板 | 对应技能里的东西 |
|---|---|---|
| 0 · 开局 | T0 开局设定 | references/contests.md、references/scoring-rubric.md |
| 1 · 审题 | T1 审题选题 | references/model-library.md、references/checklists.md |
| 2 · 选型 | T2 模型选型 | references/model-implementations.md、references/github-resources.md |
| 3 · 求解 | T3 算法实现 | examples/algorithms/、references/algorithm-details.md |
| 4 · 检验 | T4 检验与灵敏度 | references/algorithm-implementations.md、examples/algorithms/sensitivity.py |
| 5 · 写作 | T5 论文写作 | references/paper-structure.md、references/templates.md |
| 6 · 提交 | T6 提交自检 | scripts/check_paper.py、references/checklists.md |
| 7 · 专项 | T7 专项任务 | assets/latex/、assets/gallery/、references/paper-examples.md |
| 8 · 全程 | T8 全流程托管 | 全流程编排 + 逐步验收 |
什么时候用:比赛刚开始、还没贴题的时候。目的:把赛事、时限、角色一次性交代清楚,后面每轮都不用重复。
接下来用 math-modeling-skill 带我打【国赛 CUMCM / 研赛华为杯 / 美赛 MCM-ICM】。
先记住这次比赛的约束,之后每轮回答都按它来:
- 赛程:【开始时间】—【截止时间】,我能投入约【72】小时;
- 队伍情况:我负责【建模与写作】,队友负责【编程】,我们的编程水平是【会 Python / 熟练】;
- 交付物:【中文论文 PDF(含摘要页与附录源程序)/ 英文论文 + memo】;
- 硬规则:匿名、页数上限、AI 使用声明等,一律按【当年官方文件】执行;
你拿不准的地方直接说"不确定",并给出官方文件链接,不要凭记忆编。
现在先做三件事,不要解题:
1. 用一张表列出这项赛事与另外两项赛事的评阅差异,标出我最容易踩的 3 条;
2. 给一份从现在到交稿的时间分配建议,必须给检验、交叉验证和排版留出时间;
3. 之后每轮回答末尾加一行「下一步该做什么」。
做完等我贴题。
为什么这样写:① 赛事差异直接影响页数、匿名、摘要页写法,早说省事;② 明确"不确定就说不确定",能挡住它编造当年规则;③ 把"下一步"变成固定输出,你就不会推着走。
什么时候用:拿到 A/B/C 三道题,要在几道题之间做决定。目的:先拆题,不急着上模型。
用 math-modeling-skill。题干和数据在下面(或见附件):
【粘贴 A/B/C 三题的题干与附件说明】
请按顺序给我结论,不要跳过任何一步:
1. 每道题的**问题类型**(优化 / 预测 / 评价 / 机理 / 统计推断 / 仿真 / 多目标 / 图论…),
以及它真正在考的数学内核是什么;
2. 每道题的**数据情况**:数据量级、质量、缺什么、要不要自己找数据(要就说清去哪找、怎么引用);
3. 每道题的**能力匹配度**:我们只会基础 Python、没有专业背景,哪道题对我们更友好;
4. 每道题最容易踩的**坑**:理解歧义、指标陷阱、数据缺失、结论无法检验;
5. 最后给**选题排序**,并说明理由——不要三道题都说"可以选"。
如果某道题我理解错了,先纠正我,再往下讲。
为什么这样写:① 强制"先拆题后建模",避免一上来堆模型;② 要求排序而非平铺,逼它表态;③ 让它主动纠正题干误读,这是最省时间的一条。
什么时候用:题拆清了,要定基线和改进路线。目的:拿到一条"朴素 → 改进 → 进阶"的阶梯,而不是一堆并列的模型名。
用 math-modeling-skill。题目是【一句话概括】,我们已确定做第【2】问,输入数据情况是【…】。
请给我一条模型路线,而不是模型清单:
1. **朴素基线**:最保守、最容易实现、能被评委一眼看懂的那个模型(哪怕很土);
2. **改进方案 1**:解决基线的哪个具体缺陷?前提假设是什么?代码量大概多少?
3. **改进方案 2**(可选进阶):只在方案 1 明显不够时启用,说明触发条件;
4. 每个方案的**失效场景**:什么情况下它会得出错误结论;
5. **验证设计**:每个方案怎么证明它比上一层更好(指标、对比实验、独立实现对拍);
6. **取舍建议**:按我们的时间与编程水平,你推荐停在哪一层,为什么。
要求:给出每个模型在论文里该写成什么形式(目标函数/约束/公式),并标注它属于
references/model-library.md 里的哪一类。不要推荐我们实现不了的模型。
为什么这样写:① "阶梯"比"清单"更容易落到论文的结构里;② 一旦模型要"失效场景"和"验证设计",就没法糊;③ 点名让它对齐技能里的模型库,选型有据可依。
什么时候用:要把模型落成能跑、能贴进论文附录的代码。目的:拿到可复现、可交代、可交叉验证的实现。
用 math-modeling-skill 帮我实现【算法/模型名】。
约束:
- 只允许用 numpy + Python 标准库,不要 scipy / sklearn / pandas / cvxpy 等;
(如果确实必须用,先说清为什么、以及在评测机房没有该库时怎么退化成纯 numpy 版本)
- 随机部分必须接受显式 seed,同一份代码两次运行结果必须逐位一致;
- 代码要能直接跑,含一个 self-test,用闭式解、小规模暴力枚举或独立实现做交叉验证。
先做一件事:检查 examples/algorithms/ 里是否已经有现成实现可以直接用,
有就复用并告诉我模块名与函数名,不要重复造。
交付内容:
1. 代码(带必要注释:变量含义、边界条件、异常输入处理);
2. 复杂度(时间/空间)以及本实现能撑到多大规模,多大就该换成熟库;
3. 这份实现的**陷阱清单**:数值稳定性、退化输入、边界条件、常见误用;
4. self-test 的实际运行输出(贴原始结果,不要只写"通过");
5. 论文里该怎么描述这个算法的步骤(可直接引用的段落)。
为什么这样写:① 依赖边界与 seed 是评测机房复现的前提;② 强制交叉验证,"跑通了"不等于"算对了";③ 最后一条直接产出能进论文的算法描述,省二次加工。
什么时候用:结果算出来了,但你还不知道它站不站得住。目的:把结论变成经得起追问的结论。
用 math-modeling-skill 检验我的结果。以下是我们的模型与结果:
【模型简介 + 关键参数 + 结果表格/图】
请做一份"能被评委挑刺"的检验,逐项给结论:
1. **参数灵敏度**:单因素扰动(关键参数 ±10%/±20%)与全局灵敏度(Morris 筛选或 Sobol 指数),
指出哪几个参数是主导因素;
2. **稳健性**:换种子、换子样本、换边界条件后结论是否翻转;翻转了就直说,不要美化;
3. **误差与不确定性**:误差来源分类(模型误差 / 数据误差 / 数值误差),
能给出置信区间或误差棒的给出,并说明假设;
4. **交叉验证**:与至少一种独立方法/独立实现对比,给出差异量级并解释差异来源;
5. **最脆弱的一步**:如果你只能让我复查一处,是哪里?为什么?
6. 最后给一段可以直接放进论文"模型的检验"章节的文字。
不要只报"检验通过":每个结论都必须带数值和单位,没有数值的结论请标为"未验证"。
为什么这样写:① 技能里 sensitivity.py / statistics.py 提供了真实可用的检验,提示词把它们的用途说清就能直接调用;② "翻转了就直说"是诚实性的护栏;③ 要求产出论文段落,检验工作不会白做。
什么时候用:要写摘要、搭章节、整理图表公式。目的:写出评委愿意给高分的结构与表述。
用 math-modeling-skill 帮我写【国赛 CUMCM / 研赛 / 美赛】论文的【摘要 / 第 3 章 / 全部章节骨架】。
素材:【模型、关键算例、结果数值、图表清单】。
要求:
1. 摘要按"每一问 = 方法 + 数值结果 + 检验结论"组织,逐问对应,
最终结果要具体到数字,不要写"取得了较好效果";
2. 章节骨架给出每节标题、篇幅配比(页或字数)和这一段必须回答的问题;
3. 公式要有符号表,符号在首次出现处定义,全文符号一致;
4. 图表必须有编号、标题、单位,并确保正文里有引用("如图 3 所示"),
缺失的引用直接告诉我缺哪张;
5. 参考文献只允许引用你能给出可核验出处(DOI / 官方页面 / 可访问链接)的条目,
不确定的一律不要写,不要生成任何编造的文献;
6. 语言风格:结论先行、少形容词、每个论断后面跟证据。
不要替我编结果:我给你的数字之外,任何具体数值都用【待补】标出。
为什么这样写:① 摘要"方法 + 数值 + 检验"是评分表上的硬指标;② 明确禁止编文献,这是学术诚信红线(技能里另备了可引用来源索引);③ 要求标【待补】,你就不会被"看起来很完整"的假稿骗过去。
什么时候用:交稿前。目的:把"会直接出局"的红线逐项卡住。
用 math-modeling-skill 做提交前自检,我要交【国赛 / 研赛 / 美赛】。
请按这个顺序来:
1. 先跑机器能查的:
python scripts/check_paper.py 【paper.md】 --contest 【cumcm/yjs/mcm】
把 FAIL / WARN / INFO 逐条解释成人话,并告诉我每一处该怎么改;
2. 再逐条过红线清单(按当年官方规则,逐条给"符合 / 不符合 / 需要我确认"):
摘要页与页码、匿名合规(不得出现学校、姓名、队号等身份信息)、页数上限、
必备章节、图表编号连续且被正文引用、参考文献著录完整、附录源程序、
AI 工具使用声明的**内容与位置**、结果验证痕迹、单位是否混用;
3. 最后给"最可能让我出局的三件事",按严重程度排序。
发现问题就直接指出并给出改法,不要只说"建议进一步检查"。
如果某条规则你不确定是当年最新要求,明确说"这条需要你对着官方文件确认"。
为什么这样写:① 脚本先跑、人工规则后过,顺序对了效率最高;② 匿名与 AI 声明是每年真实出局点;③ 要求它承认不确定项,比给你一份"万事大吉"有用得多。
什么时候用:需要一个具体成品件的时候。四条按需取用。
① 要一套能直接编译的 LaTeX 模板
用 math-modeling-skill 给我【国赛 / 研赛华为杯 2026 / 研赛通用 GMCM / 美赛】的 LaTeX 模板。
先告诉我两套版本的区别(完整文档类版 vs 轻量自包含版),再按我的场景推荐一套:
- 我要正式提交、机器上装好了 TeX:给完整文档类版(assets/latex/full/…),
并给出从 Release 资产 ZIP 下载或从技能目录拷出的命令;
- 我只是想自己排版、字体环境不确定:给轻量自包含版(assets/latex/{cumcm,yjs,mcm}),
用 python scripts/download_templates.py --contest 【…】 --out my-paper 取出来。
最后给出完整的编译序列(xelatex/bibtex 各跑几遍)、缺字体时的回落方案、
以及"哪些是可变量、必须以当年官方文件为准"的提醒。
② 要给论文配图
用 math-modeling-skill 帮我画【图名】。要求:只用 matplotlib,固定随机种子,可逐字节复现;
配色走 Okabe-Ito 这类色盲友好方案,并额外用线型/标记点做冗余通道,保证黑白打印也能区分;
字号、线宽、刻度方向按论文印刷尺寸设定;输出 PDF + PNG 两个版本。
先告诉我 assets/gallery/ 里有没有同类型的现成范本可以参照,再动手写脚本。
不要让我使用他人论文里的图:版权上不能这么干。
③ 要参考文献与来源
用 math-modeling-skill 帮我找【主题】的可引用来源。
只给能核验的:官方文档、正式论文(带 DOI)、稳定维护的仓库(带许可证与版本/commit);
对每条来源说明"它支持我论文里的哪一句结论"以及"适用边界"。
不允许给出无法访问或无法核验的条目;找不到就明确说找不到。
④ 赛后复盘
用 math-modeling-skill 帮我复盘这次比赛(题干、我们的模型、论文、评委可能的质疑都在下面)。
请指出:① 我们选题判断错在哪;② 建模环节最薄弱的一步;③ 检验缺失造成的风险;
④ 论文表达上被扣分最可能的三个地方;⑤ 下次比赛前该优先补的三项能力。
每条都要引用我们的具体做法作为证据,不要给通用建议。
什么时候用:想让助手按流程一步步带你走完,你只做决策。目的:把"技能的工作流"变成一次可验收的协作。
用 math-modeling-skill,按下面的流程带我走完这道题。题目与数据:
【题干 + 数据说明】
流程(每个阶段结束后停下来等我确认,再进入下一阶段):
1. 审题:问题类型、数学内核、数据要求、坑 → 给选题/建模方向建议;
2. 选型:朴素基线 → 改进 1 → 改进 2,含前提、失效场景与验证设计;
3. 求解:可复现代码(numpy + 标准库、固定种子)+ 复杂度 + 陷阱清单 + self-test 原始输出;
4. 检验:灵敏度、稳健性、误差分析、独立实现交叉验证,明确指出最脆弱的一步;
5. 写作:章节骨架、摘要、公式与符号表、图表清单;
6. 提交:跑 python scripts/check_paper.py 【paper.md】 --contest 【…】 并逐条过红线。
全程遵守三条纪律:
- 不许编数据、编文献、编结论;缺什么就说缺什么;
- 每个结论都要有数值或出处;没有的标为"未验证";
- 每阶段给我一个"结论 + 证据 + 下一步"的小结,我确认后才继续。
为什么这样写:① 分阶段停下确认,比"一次生成一整篇"质量高得多;② 三条纪律把"它编东西"的风险压到最低;③ 验收点明确,你自己也能照着检查。
提示词跑偏时,多数情况是少了一句话。对照下表加一句即可:
| 症状 | 加这句 |
|---|---|
| 只有定性描述,没有数字 | "每个结论后面必须跟具体数值和单位,没有数值的标为未验证。" |
| 它开始编参考文献 | "只允许引用你能给出可核验出处的来源,找不到就说找不到。" |
| 它跳过检验直接下结论 | "没有经过灵敏度/稳健性检验的结论,请单独列一节并标注未验证。" |
| 它同时推荐了五个模型 | "只保留一个推荐方案,其余降级为备选,并说明触发切换的条件。" |
| 输出太长、抓不住重点 | "先用不超过 10 行的表格给结论,再展开细节。" |
| 它反复换模型、越改越飘 | "先固定基线,除非基线被证明失效,否则不要在基线上加复杂度。" |
| 它假装跑过代码 | "贴出实际的运行输出(原始文本),不要复述、不要写'运行成功'。" |
| 它写的内容和你的赛事规则不符 | 把当年官方 PDF 贴给它,并说"以这份文件为准,逐条对照。" |
两条使用建议:
- 把模板存下来:把 T0–T8 存成你们队的
prompts/目录(例如prompts/t1-审题.md),赛前填好【】里的固定信息,比赛时直接复制——限时比赛里,省下的每次打字都是分数。 - 模板要跟着赛事改:规则类内容(页数、匿名、AI 声明、摘要页格式)以当年官方文件为准,模板里已经把这类条款标成"需要确认",请务必真的去确认。
这些模板不会替你比赛:它们的作用是把"该想清楚的事"按顺序摆到你面前,让你把时间花在判断和写作上,而不是花在跟助手来回纠正上。
技能不只是文档——examples/algorithms/ 里有一整套可以直接跑、可以贴进论文附录的算法实现:
- 依赖边界:只用
numpy+ Python 标准库。不含 scipy / sklearn / statsmodels / pandas / cvxpy / pulp / torch。CI 用 AST 静态扫描强制这条规则——所以你拿到的代码在任何只装了 numpy 的机器(包括评测机房)上都能跑。 - 确定性:所有随机算法统一走
_common.rng(seed),默认种子20240101,同一份代码两次运行结果逐位一致。论文里报的数字经得起复现。 - 每个模块自带
_self_test(),内含闭式解或独立实现的交叉验证(例如 PCA 与np.linalg.svd对拍、乘法 Holt-Winters 与已有实现逐点对拍、离线黄金值与闭式解对拍),并全部由examples/run_algorithms.py与黄金值基线比对,含确定性复跑。
python examples/run_algorithms.py # 全量自检 + 黄金值回归
python examples/run_algorithms.py --list # 看有哪些模块
python examples/run_algorithms.py --module graphs --verbose # 只跑一个模块覆盖的算法族(按题目类型):
| 题目族 | 模块 | 你会拿到什么 |
|---|---|---|
| 优化与规划 | optimization.py |
单纯形(含灵敏度分析)、内点法、分支定界整数规划、背包 DP、匈牙利指派、Vogel 运输、目标规划、情景鲁棒与机会约束 LP |
| 图论与网络 | graphs.py |
最短路(Dijkstra/Bellman-Ford/Floyd/A*)、最小生成树、最大流/最小割、最小费用流、TSP、PageRank、连通性、社区发现、拓扑排序与关键路径、VRP |
| 元启发式 | heuristics.py |
模拟退火、遗传算法、粒子群、蚁群、差分进化、禁忌搜索、灰狼、变邻域搜索、人工蜂群、标准基准函数库 |
| 时间序列与预测 | forecasting.py、timeseries.py |
平滑与 Holt-Winters、AR、平稳性检验(含趋势/漂移型)、滚动回测、季节分解、GM(1,1)、ARIMA/SARIMA、GARCH、卡尔曼滤波与平滑 |
| 统计与回归 | statistics.py |
相关/检验/正态性、非参数检验(Mann-Whitney/Wilcoxon/Kruskal-Wallis/ANOVA)、OLS 与诊断、HAC(Newey-West) 标准误、岭回归/Lasso、逻辑与泊松回归、PCA/因子分析、Bootstrap(含 BCa)与置换检验 |
| 评价与决策 | evaluation.py、multicriteria.py |
AHP/熵权/CRITIC/组合赋权、TOPSIS、VIKOR、灰色关联、DEA(CCR/BCC)、模糊综合评价、RSR、PROMETHEE II、ELECTRE I/II/III、Borda/Copeland、Kendall 协调系数、排序稳健性 |
| 机器学习 | ml.py |
KNN、决策树(Gini/熵)、随机森林、梯度提升、朴素贝叶斯、LDA、PCA、交叉验证、不平衡处理、PR 曲线与平均精度 |
| 聚类 | clustering.py |
K-means++、轮廓系数、层次聚类、DBSCAN、GMM、谱聚类、模糊 C 均值、K-medoids、Gap 统计量 |
| 微分方程与机理 | differential.py |
Euler/RK4/RK45、隐式 Euler、SIR/SEIR 仿真与拟合、Logistic、Lotka-Volterra、收敛阶、雅可比稳定性、Euler-Maruyama(SDE) |
| 随机与仿真 | stochastic.py |
蒙特卡洛、排队论 M/M/1、M/M/c、M/M/c/K、M/G/1 与离散事件仿真、马尔可夫稳态/吸收、MCMC(MH/Gibbs)、Copula、几何布朗运动 |
| 几何与空间 | geometry.py、spatial.py |
凸包/点在多边形内/Haversine/IDW/克里金/泰森多边形/多边形裁剪;一维热传导、二维 Poisson 松弛、林火与交通流元胞自动机、量纲分析、空间自相关 Moran's I |
| 多目标与灵敏度 | multiobjective.py、sensitivity.py |
Pareto 前沿与支配关系、NSGA-II、MOEA/D、超体积/IGD/Spacing/拐点;OAT/弹性/Morris/Sobol(含二阶)、插补与异常检测 |
| 博弈与分配 | game.py |
零和博弈值、Nash 枚举、Shapley 值、稳定匹配、演化动力学、迭代剔除、ESS(演化稳定策略)、相关均衡 LP |
逐算法的细节(数学形式 → 步骤 → 复杂度 → 参数表 → 陷阱 → 怎么检验)见 references/algorithm-details.md;"该用哪个族、什么时候换成熟库"见 references/algorithm-implementations.md;"这题该用哪类模型"见 references/model-library.md。
诚实提醒:这些实现是教学透明版,目的是"让论文能交代清楚每一步",不是工业级数值库。规模上到几千个决策单元/样本时请换成熟库,并用本仓库实现做原理说明、用成熟库做交叉验证。
references/algorithm-implementations.md第 4 节给了替换建议。
"创新"是国赛/研赛/美赛评奖词里都出现的字眼,也是最容易被写成自嗨的部分。本技能把这件事拆成可执行的步骤,全在 references/innovation-playbook.md:
- 创新的五个层级(数据与假设层 → 模型结构层 → 求解算法层 → 理论层),以及"这道题该往哪层使力"的判断依据。
- 参数创新总表:按 17 个算法族逐条列出哪些参数能动、动了属于"调参"还是"结构化改造",例如——
- 传播率 β 从常数改成 β(t)(干预强度随时间衰减)=结构化创新;
- 目标函数权重改几个数 = 只是调参,得配权重-解轨迹才算数;
- 时间序列的平滑系数手调 = 调参;改成逐折滚动交叉验证选参 = 消除数据泄漏,算改进。
- 四步法:机制假设 → 可辨识化(多起点/剖面似然/断点检验)→ 消融实验(逐个关掉你加的机制项)→ 结论边界。
- 12 条伪创新反面模式:换库不换模型、重命名式创新、无量纲叠加、只报最好的一次运行、用未来信息、虚假对比、相关当因果……
- 定稿自查清单:十项打勾,确保每个创新点都能填满"参数/机制 → 指标变化 → 机制解释 → 失效条件"这句话。
配套的验证工具就在 examples/algorithms/ 里:消融和灵敏度可以调 sensitivity.py,多目标权衡用 multiobjective.py,参数辨识的残差诊断用 statistics.py,启发式解质量用固定种子的多次运行分布。
这个仓库不只有文档,还带多层可自动运行的检查(CI 每次提交都会跑):
| 层 | 命令 | 检查什么 |
|---|---|---|
| 结构 | python scripts/validate_skill.py . --strict |
frontmatter 字段白名单、name 与目录一致、description/compatibility 长度、正文行数、文件引用是否存在、未索引文件、Windows 反斜杠路径 |
| 自检工具 | python scripts/check_paper.py --self-test |
用「好稿/坏稿」固件验证检查逻辑本身没坏 |
| 安装器 | python scripts/install_skill.py --self-test |
25 项固件测试:复制时确实丢掉 .git/__pycache__、已存在时先拒绝再 --force、非本技能的目录一律不删、--dry-run 不写盘、带/不带顶层前缀的 ZIP 都能解、auto 挑选顺序、项目根向上查找、--into 给技能根会自动补一层 / 给技能目录则原样使用 / 指向别人的技能目录时拒绝、带 UTF-8 BOM 的 SKILL.md 仍可识别、联网动作会退避重试且失败时给出可执行的出路、Release 资产里混着 LaTeX 模板包时仍只认技能包——全程不联网、不碰真实技能目录 |
| 算法回归 | python examples/run_algorithms.py |
自带的 17 个算法模块、1361 个断言键逐个跑数值自检,并与 algorithms_golden.json 黄金值比对(含确定性复跑:每个模块跑两遍,结果必须逐位一致) |
| 配图配色 | python scripts/check_palette.py --quiet |
直接读 make_figures.py 里的设计令牌,算二色觉仿真 CIELAB ΔE、灰度间隔与 WCAG 对比度;并断言「颜色之外还有线型/标记」这条冗余编码确实存在 |
| 模板真编译 | python scripts/check_latex.py --require(CI)/--self-test(本机无需 TeX) |
在临时目录里真的编译 assets/latex/ 三套轻量模板(引擎 → bibtex → 引擎 ×2),核对硬错误、未解析引用、缺字体、页数下限,以及 AI 声明与参考文献的先后顺序 |
| 完整模板真编译 | python scripts/check_latex_full.py --require(CI)/--self-test(本机无需 TeX) |
真的编译 assets/latex/full/ 四套完整文档类模板(各 3 遍,共 7 跑),核对硬错误、缺字、未解析引用、页数下限,并删掉随附的 .ttf + 强制 fontset=fandol + 屏蔽 Windows 字体探测后再编一遍,验证"没有 Windows 字体也能编过、页数不变"这条回落路径 |
| 依赖边界 | 见 .github/workflows/ci.yml |
AST 扫描 examples/algorithms/*.py,禁止引入 scipy/sklearn/pandas 等重型依赖 |
| 触发评测 | 见 evals/ |
22 条查询(11 正例 + 11 个 near-miss 负例)测 description 触发率;14 条行为用例含反幻觉断言(如"不得编造官方评分权重""不得编造 star 数与性能基准""不得再分发他人论文图表") |
| 持续集成 | .github/workflows/ci.yml |
上述全部 + JSON 合法性 + 路径风格 |
其中 validate_skill.py 对所有 Agent Skill 作者都有用:它专门拦"跨工具分发时会硬报错"的 frontmatter 问题(比如多写了非标准字段)。
math-modeling-skill/
├── SKILL.md # 主控:全流程 7 步 + 官方评奖四维 + 红线 + Gotchas
├── references/ # 按需加载的详细资料(渐进式披露第二/三层)
│ ├── contests.md # 三大竞赛规则对照(格式硬规则、AI 规定、纪律、提交物、官方链接)
│ ├── model-library.md # 模型方法库:赛题信号 → 方法 → 工具 → 陷阱 + 历年赛题反查
│ ├── paper-structure.md # 论文结构与写作规范(中/英文两套骨架 + 篇幅配比 + 获奖论文章节实证)
│ ├── scoring-rubric.md # 评阅标准与失分点(官方原文 + 非官方经验明确标注)
│ ├── checklists.md # 提交前自检清单(通用 / AI 合规 / 三赛事各自专用)
│ ├── github-resources.md # 已核验 GitHub 模型库与许可证/边界说明
│ ├── model-implementations.md # 按题目类别的基线、改进阶梯和验证协议
│ ├── algorithm-implementations.md # 模型→算法→复杂度→本仓库实现→外部库→陷阱 对照索引
│ ├── algorithm-details.md # 逐算法详解:数学形式 → 步骤 → 复杂度 → 参数表 → 陷阱 → 怎么检验
│ ├── innovation-playbook.md # 怎么做创新:五个层级 / 参数创新总表 / 四步法 / 伪创新反面模式
│ ├── paper-examples.md # 优秀论文与官方来源索引(只给链接,不再分发他人图表)
│ └── templates.md # LaTeX 模板选择、编译与排版答疑
├── scripts/
│ ├── check_paper.py # 论文自检工具(纯标准库,非交互,支持 --json/--self-test/--init)
│ ├── validate_skill.py # 技能结构校验(frontmatter / 篇幅 / 文件引用,支持 --strict)
│ ├── check_palette.py # 配图配色可访问性体检(二色觉 ΔE / 灰度间隔 / 对比度)
│ ├── check_latex.py # 真编译 assets/latex/ 三套轻量模板并体检(引用/字体/页数/AI 声明顺序)
│ ├── check_latex_full.py # 真编译 assets/latex/full/ 四套完整文档类模板(含无 Windows 字体的回落路径)
│ ├── download_templates.py # 按竞赛一键导出 LaTeX 模板目录(可打包成 zip,支持 --self-test)
│ ├── install_skill.py # 把技能装进宿主技能目录(自动定位 / 默认不覆盖 / 装完自校验)
│ └── make_figures.py # 生成 assets/gallery/ 原创论文配图(固定种子,可完整复现)
├── assets/
│ ├── abstract-template.md # 摘要模板:中文(国赛/研赛)+ 英文 Summary Sheet(美赛)
│ ├── cheatsheet.md # 一页纸红线清单(可打印,提交前 30 分钟核对)
│ ├── paper-outline.md # 可填空论文骨架(三赛事,含占位符提示)
│ ├── latex/ # 两套并行的 LaTeX 模板层
│ │ ├── README.md # 两套模板的取舍与对照(先读这个)
│ │ ├── cumcm/main.tex # 【轻量版】国赛(中文,ctexart + bibtex)
│ │ ├── yjs/main.tex # 【轻量版】研赛(中文)
│ │ ├── mcm/main.tex # 【轻量版】美赛(英文 Summary Sheet + Report on Use of AI)
│ │ └── full/ # 【完整文档类版,推荐提交用】官方 .cls + 完整骨架 + 预编译样例 PDF + 来源与许可说明
│ │ ├── README.md # 用法、与原版的差异、字体说明、验证记录
│ │ ├── THIRD-PARTY.md # 四套模板的来源/commit/许可,以及随附 .ttf 与官方渲染图的许可提示
│ │ ├── hwcup2026/ # hwcup2026.cls(自制,严格复刻 2026 官方附件3;main.tex,3 页样例)
│ │ ├── cumcm/ # cumcmthesis.cls v2.9(example.tex,12 页样例)
│ │ ├── gmcm/ # gmcmthesis.cls v2.2 + 5 个 .ttf(MathModel.tex,8 页样例)
│ │ └── mcm/ # mcmthesis.cls v6.3.3(mcmthesis-demo.tex,11 页样例)
│ └── gallery/ # 16 张原创配图 + 画法、配色与图注说明
├── examples/
│ ├── modeling_patterns.py # 带注释的透明基线示例
│ ├── algorithms/ # 17 个算法模块、260 个公开函数(仅依赖 numpy + 标准库)
│ ├── run_algorithms.py # 算法自检 + 黄金值回归(确定性复跑)
│ └── algorithms_golden.json # 黄金值基线(CI 比对用)
├── evals/ # 触发评测与行为用例(含 near-miss 负例)
├── .github/
│ ├── workflows/ci.yml # 持续集成
│ └── ISSUE_TEMPLATE/ # Issue 模板(规则更新 / Bug 报告)
├── CONTRIBUTING.md # 贡献指南(规则追踪项目的特殊要求)
├── INSTALL.md # 给 AI 助手看的安装说明(「一句话安装」链接的目标文档)
├── CITATION.cff # 引用元数据
├── README.md
├── CHANGELOG.md
└── LICENSE
设计上遵循 Agent Skills 的渐进式披露原则:SKILL.md 只放"每次都要用到"的核心流程(保持精简),详细资料放进 references/ 由助手按需读取,避免一次性占满上下文。
三大赛事都已就 AI 工具出台规定,且违规可能直接取消评奖资格。本技能会主动提醒并检查:
- 国赛(《人工智能工具使用规定(2026 年试行)》,2026-09-01 起):须在参考文献之前设置「AI工具使用声明」——未使用 AI 也要声明;使用 AI 的须在支撑材料附
AI工具使用详情.pdf。隐瞒或虚假声明 → 取消评奖资格。 - 研赛(《人工智能工具及输出使用规定(2025)》):程序与数据分析处须注释说明 AI 参与;无推导过程、无引用标识、无法确认来源的 AI 生成模型与公式一律不予认可。
- 美赛(COMAP AI 政策):须披露所用工具并在参考文献列出,另附不计页数的
Report on Use of AI。
请把本技能用于备赛训练、赛后复盘、论文写作与提交前自检。 竞赛进行中,各赛事均严禁与队外任何人讨论赛题、也禁止在公开平台发布赛题相关内容——不要把赛题贴进对话求解答。
本仓库对每条规则的来源做了显式标注,你不必猜哪句是官方的:
| 标注 | 含义 |
|---|---|
[官方] |
来自官网/官方文件的原文或直接转述 |
[半官方] |
来自官方平台转载或官方人员表述 |
[社区] |
业内共识或经验值,无官方出处 |
同时明确记录了几处官方口径冲突与未公开项,例如:
- 官方从未公布评分权重表。唯一官方评奖标准是国赛《章程》第二条的四维定性描述。网上流传的"模型 30%+求解 25%…"没有官方依据。
- 每题的**「评阅要点」是赛前发给评阅组的内部文件,不对外公布**;公开的题目级评阅思路见《数学建模及其应用》期刊的「评阅综述/问题解析」。
- 国赛全国规范不规定字体字号(属赛区要求),研赛规范则规定了具体字号——两者不可混用。
- "A/B/C 为本科组、D/E 为高职高专组"按惯例成立,但官网规范中无此明文。
细节与出处见 references/contests.md 与 references/scoring-rubric.md。
写作本技能时参考并致谢以下公开项目与资料(各自版权归原作者)。完整文档类模板(assets/latex/full/)的上游来源、固定 commit 与许可条款见 assets/latex/full/THIRD-PARTY.md:
- latexstudio/CUMCMThesis ——
full/cumcm/的上游(cumcmthesis.clsv2.9,commit38d1f21,2026-08-26,已适配 2026 年格式,含 AI 声明书)。上游未附 LICENSE,也未上 CTAN;本仓库按原样收录并标注来源。 - 2026 研赛·华为杯严格格式版
full/hwcup2026/由本仓库作者自制(hwcup2026.cls,无上游)。它依据 2026-09-16 官方《论文格式规范》与官方附件3 Word 模板逐条复刻版面尺寸与字号,封面、4 个 Logo 与摘要页固定标签直接取自官方附件3 的渲染结果(assets/*.png),因此与 Word 版逐像素一致,也不受华文新魏/隶书缺失影响。⚠️ 这几张渲染图的版权属竞赛组委会,不在本仓库 MIT 授权范围内。 - 研赛(华为杯)通用版模板
full/gmcm/由本仓库作者自制整理(文档类gmcmthesis.clsv2.2,谱系可追溯到公开的springli07/GMCM_LaTeX_overleaf与zhanwen/MathModel,两者均未附 LICENSE)。作者在此基础上补了字体回落分支与说明文档。两套华为杯并存:投 2026 年研赛用hwcup2026/,gmcm/保留供参考写法。 - latexstudio-org/mcmthesis ——
full/mcm/的上游(mcmthesis.clsv6.3.3,commit8ac05e2,LPPL 1.3c 或更高;CTAN 事实标准),同时保留了mcmthesis.dtx/mcmthesis.ins以满足再分发条款。文件内容与上游一致,未作修改。 - handsomeZR-netizen/mathmodel-skill、LiXiang106991/MathModelAgent —— 面向数学建模的 AI 技能/Agent 实践,本项目的参考资料之一(未复制其内容)。
- agentskills.io —— Agent Skills 开放标准(格式规范与写作方法论的依据)。
- 各竞赛官方文件:全国大学生数学建模竞赛官网、中国研究生创新实践系列大赛平台、COMAP 官方竞赛规则。
关于模板授权:本仓库只标注来源,不对上游授权状态作法律判断(其中仅
mcmthesis有明确的开源许可,另外两套上游未附 LICENSE)。若你在正式场合再分发这些模板,请自行确认上游条款;随full/gmcm/附带的 5 个.ttf是商业字体,不在本仓库 MIT 授权范围内,删除即可(回落路径会自动接管);full/hwcup2026/里 5 张官方附件3 渲染图的版权属竞赛组委会,同样不在 MIT 覆盖范围内。
语料统计参考:yuanchen-home/cumcm-step-review 的 64 篇国赛获奖论文结构分析。
本仓库内容为独立撰写。若你认为某处引用不当,欢迎提 issue。
本项目不隶属于任何竞赛组委会,规则整理仅供备赛参考。竞赛规则逐年修订,参赛前请务必以当年官方文件为准(官方链接见 references/contests.md)。因使用本技能产生的任何竞赛后果,作者不承担责任。
MIT © 2026 anticipate218