| name | math-modeling-workflow |
| description | 通用数学建模竞赛(CUMCM / MCM-ICM / 各类数模赛)端到端工作流。适用于拿到赛题后, 从问题分析、数据处理、模型构建、算法实现、结果验证到论文交付的完整流程。触发词包括 "数学建模""建模比赛""数模赛题""开始建模""solve modeling problem"等。 |
数学建模竞赛通用工作流
从赛题拆解到论文交付的六阶段端到端 Workflow。每个阶段标注输入/输出/依赖/可复用步骤,可适配计算机视觉、统计推断、优化、预测等不同赛题类型。
阶段零:赛前准备(5 分钟)
- 在项目根目录下创建标准目录结构:
项目名/
├── data/ ← 原始赛题数据(只读,不修改)
├── src/ ← 所有源代码
├── results/ ← 实验输出(模型权重、日志、预测结果)
├── figures/ ← 可视化图表
├── 论文/ ← LaTeX 论文工程(阶段六创建)
└── 解题方案.md ← 问题分析与技术路线(阶段一产出)
- 确认计算环境:GPU 型号、Python 版本、关键库版本。
- 若项目下有
cumcm-paper-writing skill,后续阶段六直接沿用其 LaTeX 模板。
阶段一:问题分析与假设
输入:赛题 PDF、附件数据
输出:解题方案.md(含问题分类、假设、技术路线图)
依赖:无
步骤
-
通读赛题,逐问题标注数学类型:
| 类型 | 常见问法 | 典型方法 |
|---|
| 分类/判别 | "判断是否…""分为几类…" | 统计检验、机器学习分类器、EVT |
| 检测/定位 | "找出位置…""标注…" | YOLO / Faster R-CNN / 语义分割 |
| 回归/预测 | "预测未来…""估算…" | 时序模型、回归分析、神经网络 |
| 优化 | "最优方案…""最小化…" | 线性规划、遗传算法、模拟退火 |
| 评估/排序 | "评价…""排名…" | AHP / TOPSIS / 熵权法 / DEA |
-
识别核心困难:数据缺失?类别不平衡?无标注?多目标冲突?
-
建立假设体系(5–7 条),每条假设对应一个模型前提,引用文献支撑。
-
画技术路线图(TikZ 或 Mermaid):
赛题 → 数据EDA → [问题二模型] → [问题一推断] → [问题三评估] → 论文
- 先确定问题间的依赖关系,再决定解题顺序。
- 常用策略:「先检测后推断」「先建模后评估」。
适配提示
- 优化类赛题:阶段一重点在约束条件形式化和目标函数定义。
- 预测类赛题:阶段一重点在时间粒度选择和外部变量筛选。
阶段二:数据预处理与导入
输入:原始数据、阶段一的问题分析
输出:清洗后数据集、EDA 报告、dataset.yaml(如适用)
依赖:阶段一
步骤
-
探索性数据分析(EDA)
- 统计样本量、类别/特征分布、缺失率、异常值。
- 建立 「真实数字清单」:数据规模、类别占比、不平衡比、尺度分布等——后续论文中的所有数字必须从此清单取用。
- 输出可视化:类别柱状图、相关性热力图、分布直方图。
-
数据划分
- 使用 分层抽样(
StratifiedShuffleSplit)按类别/标签等比例划分训练集与验证集(常用 85:15)。
- 固定随机种子
seed=42,确保可复现。
- 测试集由赛题提供,不参与任何训练/调参。
-
数据增强与特殊处理(按需)
| 场景 | 策略 | 实现 |
|---|
| 类别不平衡 | 过采样 / Copy-Paste / SMOTE | 增加少数类有效样本 |
| 缺乏负样本 | 从无标注区域裁剪纯背景图 | 生成 hard negative |
| 多尺度目标 | Mosaic / 多尺度训练 | 扩展尺度覆盖范围 |
| 数据量不足 | 翻转、旋转、色彩抖动 | 标准数据增强 |
| 时序数据 | 滑动窗口、差分、归一化 | 时序特征工程 |
-
格式转换:将数据转为模型所需格式(YOLO txt / COCO JSON / CSV 等)。
适配提示
- 表格/数值类赛题:重点在特征工程(缺失值填充、编码、降维)。
- 图像类赛题:重点在增强策略和标注格式转换。
阶段三:模型构建
输入:阶段一的问题类型、阶段二的 EDA 结论
输出:模型架构定义、损失函数公式、数学推导文档
依赖:阶段一 + 阶段二
步骤
-
选择基线模型
| 问题类型 | 推荐基线 |
|---|
| 目标检测 | YOLOv8 / YOLOv11 / RT-DETR |
| 图像分类 | ResNet / EfficientNet / ViT |
| 时序预测 | LSTM / Transformer / Prophet |
| 回归分析 | XGBoost / LightGBM / 线性回归 |
| 组合优化 | Gurobi / OR-Tools / 遗传算法 |
| 多准则评价 | AHP + TOPSIS / 熵权法 |
| 统计推断 | 极值理论 / 贝叶斯推断 / 假设检验 |
-
设计创新点(论文核心加分项)
遵循「缺陷—改进—验证」链条:
传统方法的已知缺陷(文献引用)
↓ 数学分析证明缺陷存在
↓ 引入新的数学工具弥补
↓ 推导统一公式(boxed)
↓ 实验验证改进幅度(消融表)
原则:优先选择有严格数学推导支撑的改进,而非纯工程 trick。
-
数学推导文档化
每个核心公式必须包含:
- 符号定义(写入符号说明表)
- 推导过程(定义 → 引理 → 定理 → 证明)
- 物理/几何直觉解释
- 公式编号(
\eqref 引用)
适配提示
- 优化类赛题:模型构建 = 目标函数 + 约束条件 + 松弛/对偶变换。
- 评价类赛题:模型构建 = 指标体系 + 权重确定方法 + 综合评分函数。
阶段四:模型求解与算法实现
输入:阶段二的数据集、阶段三的模型设计
输出:模型权重、训练日志、测试集预测结果
依赖:阶段二 + 阶段三
步骤
-
编写训练/求解脚本
- 使用
argparse 管理超参数,便于消融实验切换。
- 固定所有随机种子
seed=42。
- 记录完整训练日志(逐 epoch 指标、损失曲线)。
-
设计消融实验
| 实验 | 改变的变量 | 控制变量 | 目的 |
|---|
| Exp-A (Baseline) | 基础模型/默认参数 | — | 性能下限 |
| Exp-B (改进 1) | 模型容量/数据增强 | 同数据划分 | 量化单一改进 |
| Exp-C (改进 2) | 叠加新策略 | 同上 | 验证增量贡献 |
铁律:每次只改变一个变量。
-
执行训练并管理产物
results/
├── exp_a/weights/best.pt, results.csv, args.yaml
├── exp_b/...
└── exp_c/...
-
生成测试集提交文件
- 格式严格对齐赛题要求(列名、顺序、是否含扩展名)。
- 提交前人工抽查若干样本。
适配提示
- 优化类赛题:此阶段 = 调用求解器(Gurobi/OR-Tools)或实现元启发式算法。
- 统计类赛题:此阶段 = 参数估计 + 假设检验 + 置信区间计算。
阶段五:结果验证与敏感性分析
输入:阶段四的模型输出
输出:评估指标汇总表、消融分析、鲁棒性报告
依赖:阶段四
步骤
-
多维度评估
| 维度 | 常用指标 |
|---|
| 精度 | mAP / Accuracy / RMSE / R² |
| 分类 | Precision / Recall / F1 / AUC-ROC |
| 效率 | FPS / 参数量 / FLOPs / 求解时间 |
| 稳定性 | 多次运行的均值 ± 标准差 |
-
消融实验分析
- 制作对比表格(含 Δ 列),量化每个改进的贡献。
- 按类别/场景做细粒度分析(如逐类 mAP)。
-
跨配置一致性验证(统计推断类)
- 用不同模型/参数重复实验,验证结论的模型无关性。
- 合格标准:核心结论的变异系数 < 15%。
-
鲁棒性/敏感性分析
- 对关键参数做扰动实验(±10%、±20%),观察输出变化。
- 若有真实退化数据则量化,否则写「增强覆盖分析 + 建议协议」。
适配提示
- 优化类赛题:敏感性分析 = 对约束参数做松弛,观察目标函数变化。
- 预测类赛题:验证 = 回测历史数据 + 滚动预测误差分析。
阶段六:可视化与报告生成
输入:阶段一五全部产物
输出:main.pdf(论文)+ 支撑材料.zip
依赖:阶段一五
步骤
-
可视化生成
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.dpi'] = 300
必出图表:类别分布图、技术路线图、训练曲线、消融对比表、结果可视化。
-
论文工程搭建
- 若有
cumcm-paper-writing skill,执行其步骤3(复制 assets/latex-template/ 为论文目录)。
- 若无模板,手动搭建
ctexart + geometry + booktabs + fancyhdr 结构。
-
论文章节对照
| 章节 | 内容来源 | 写作要点 |
|---|
| 摘要 | 全文精华 | 单页,700-900字,每个问题一段(方法+关键数字) |
| 问题重述 | 阶段一 | 用自己的语言复述,不抄原题 |
| 问题分析 | 阶段一 | 技术路线图 + 各问题建模切入点 |
| 模型假设 | 阶段一 | 5-7 条,每条有文献支撑 |
| 符号说明 | 阶段三 | longtable 两列格式 |
| 数据处理 | 阶段二 | EDA 图表 + 数字清单 |
| 问题 N 求解 | 阶段三+四 | 建模 → 公式 → 算法 → 结果 |
| 模型评估 | 阶段五 | 多维指标 + 消融 + 鲁棒性 |
| 模型评价 | 全文总结 | 优点/缺点/推广(如实) |
| 参考文献 | 全文引用 | GB/T 7714 著录,\cite 一一对应 |
| 附录 | 阶段四 | 全部可运行源代码 |
-
自检清单
-
编译:xelatex main.tex × 2 遍。
时间分配建议
72 小时赛制(CUMCM 国赛)
| 阶段 | 时间 | 占比 | 说明 |
|---|
| 阶段一 | 4-6h | 7% | 不要急于写代码 |
| 阶段二 | 6-8h | 10% | EDA 决定后续方向 |
| 阶段三 | 8-12h | 15% | 创新点是灵魂 |
| 阶段四 | 16-20h | 25% | 并行跑实验 |
| 阶段五 | 8-10h | 13% | 消融实验不可省 |
| 阶段六 | 20-24h | 30% | 论文质量 = 获奖概率 |
4 天赛制(MCM/ICM 美赛)
时间更充裕,可在阶段三加厚数学推导、阶段五做更多灵敏度分析,阶段六补充英文摘要。
参考文件(按需读取)
references/stage-checklist.md:每个阶段的详细检查清单。
references/innovation-patterns.md:常见创新模式与数学工具速查。
references/paper-structure.md:论文各章节的写作模板与范例。