| name | model-formulation |
| description | Meta-model-agent 基于问题契约建立数学机制、公式体系、求解路线与校验方案。适用于数学机制构造与算法规划。 |
数学机制系统构造
预处理合同
有数据时,在 建模报告.md 单列“预处理合同”,定义原始文件、缺失值/异常值/编码/单位或标准化策略、处理前后质量指标、唯一 数据/processed/ 输出,以及数据泄漏边界。预测或学习任务必须先划分再拟合,变换参数只从训练数据估计;不适用时必须说明理由。具体处理方法根据题目数据和模型需求确定,禁止把通用脚本当作固定答案。无数据时保留明确跳过记录。
稳定执行契约
- 执行目标:依据问题契约形成可计算、可验证的数学机制、公式体系和求解路线。
- 调用参数:[problem-analysis-or-topic]。
- 权威输入:问题分析.md、用户数据、适用知识库与用户约束。
- 允许交付:建模报告.md,以及必要的当前工作与状态记录。
- 禁止写入:不得越权修改已冻结的上游事实、用户原始文件或本协议未授权的目录。
- 可用工具边界:Bash(*), Read, Write, Edit, Grep, Glob, WebSearch, WebFetch, Agent。
- 最小交付:逐问模型、符号定义、假设、推导、算法、基线、验证方案与回退条件。
- 恢复入口:优先读取当前工作、状态记录和已有产物,从最近一次通过门禁的位置继续。
- 失败回退:模型无法闭合时先退回补齐变量、约束或数据;不得用文字包装不可计算的方案。
- 收口顺序:先核对输入,再完成产物,再运行本环节门禁,最后登记状态;门禁未通过不得宣告完成。
基于问题情境解构开展数学建模与求解:$ARGUMENTS
常量
输入
-
问题分析.md — 问题情境解构报告(务必出现)
-
用户数据/ — 赛题附件数据
⛔⛔⛔ 完成铁律(最高优先级,违反则当前环节失败)
当前环节务必产出 建模报告.md(≥ 1.5KB,完整的建模与求解报告)。
⛔ 结束前必跑产出校验:
[ -f 建模报告.md ] && SZ=$(wc -c < 建模报告.md) || SZ=0
[ "$SZ" -ge 1500 ] && echo "✅ 建模报告.md ($SZ bytes)" \
|| echo "❌ 建模报告.md 缺失或过小 ($SZ bytes) — 必须补全后重新跑验证, 不要结束本步骤"
工作过程
工作节点 1:查阅分析报告 + 方法对照 + 防错复核
提取子问题列表、推荐方法、变量定义、数据特征。
⛔ 对照 问题分析.md 的推荐方法: 若选取了不同于推荐的方法,务必在 建模报告.md 中清晰标明阐明理由(为什么推荐方法不适用、替代方法的优势)。不可无声地忽略推荐方法。
⛔⛔⛔ 强制审视问题情境解构的"经典问题升级"结论(防止升级被忽略):
关键要求:先完整审视问题情境解构的升级推荐 → 尽可能在建模中满足 → 如有异议务必给出充分理由。
问题情境解构阶段(Phase 5.6)会交付以下表格,建模阶段务必逐条审视:
⛔ 实施环节:
echo "=== 审视问题情境解构的升级结论 ==="
echo ""
echo "--- 标为⚠️/❌的覆盖度缺口(需要在建模中审视是否补上)---"
grep -A 1 '⚠️\|❌' 问题分析.md | head -40
echo ""
echo "--- 经典问题升级表(需要审视是否采用最终模型)---"
sed -n '/经典问题升级/,/^##/p' 问题分析.md | head -30
echo ""
echo "--- 反向对照的升级要求 ---"
sed -n '/反向对照/,/^##/p' 问题分析.md | head -30
⛔ 三段式决策过程(各个升级推荐都务必走完):
第一段:审视
-
逐条查阅问题情境解构的升级推荐(如 "Orienteering → Multi-Trip OP")
-
理解升级的触发缘由(如 ASSURANCE"可充电"→多架次飞行)
-
判定升级对终版结果的影响(如不用 Multi-Trip 会导致覆盖数被严重低估)
第二段:尽可能满足(默认行为)
第三段:有异议给理由(特殊情况)
若建模阶段认为某个升级不应采用,务必在 建模报告.md 中给出充分理由:
-
物理/业务不可行:如"题目说可充电但物理上无法实现(如太阳能电池)"
-
数据不支撑:如"题目没给充电时间参数" → ⛔ 这不是跳过升级的合法理由!务必做合理假设(如假设充电瞬时/固定X分钟/等于飞行时间的X%),随后继续建模升级版
-
超出求解能力:如"完整 Multi-Trip Stochastic OP 是 PSPACE-hard,简化为序贯单趟 OP,误差预计 < 15%"
-
评审标准考虑:如"简化后仍能回答题目的关键问题,且提升求解效率"
⛔⛔⛔ 尤其警告:以下理由不是跳过升级的合法理由(等同于无声忽略):
-
❌ "题目未给 XXX 参数" → 应做合理假设继续建模,不是跳过
-
❌ "子问题1可简化,留给子问题2/3扩展" → 子问题1也要考虑完整机制
-
❌ "通过其他方式实现类似效果"(如"多机接力代替充电")→ 这不等同于题目给定的机制
-
❌ "避免增加模型复杂度" → 复杂度本身不是跳过的理由
-
❌ "短续航无人机覆盖有限,就让它覆盖少" → 这恰恰是升级要解决的问题
⛔ 缺参数的无误处理过程:
-
识别缺失的参数(如充电时间)
-
做合理假设,假设值基于常识/文献/类似赛题
-
在假设列表中清晰标明声明"假设 XXX = Y,依据是 Z"
-
灵敏度分析中扰动该假设参数
-
用假设值完整建模升级版,而不是跳过全部机制
⛔ 禁止行为:
-
❌ 无声忽略升级推荐(连"审视"都没做,直接用简单模型)
-
❌ 不读问题情境解构的 7.2/7.3 节就启动建模
-
❌ 有异议但不写理由 → 等同于无声忽略
-
❌ 用"单次XXX作为基线,后续扩展"作为借口跳过升级
-
❌ 用"题目未给参数"作为借口跳过升级
⛔ 若采用了升级的简化版本(如"简化的 Multi-Trip OP"),务必在模型中不少于保留升级的关键机制:
不可"简化"为名把升级完全去掉。
⛔ 防错复核(必做): 查阅 参考资料/error_prevention.md,依据本题涉及的题型(优化/微分方程/统计/评价/图论/几何/动态规划),对照相应章节的"务必做"和"禁止做"条目。在 建模报告.md 末尾写一行:本题涉及题型:[X, Y, Z],已对照防错手册审查。
工作节点 2:模型假设
各个假设务必有合理性阐明。假设要合理且必要,不做不切真实的简化。
⛔ 假设参数化原则: 关键假设务必在代码层面做成可切换的参数,而不是硬编码到逻辑里。这样发现假设错误时,改一个参数就能修正,不需重写全部求解逻辑。
在 建模报告.md 中,各个假设旁边务必写明:
假设 1: [假设内容]
- 理由: [为什么这样假设,不能留空]
- 参数化: [对应代码中的哪个变量/开关]
- 替代假设: [如果这个假设不成立,替代方案是什么]
示例:
假设 3: 每类设备允许多台并行分担同一工序的工程量
- 理由: 题目说"各类设备须分别完成该工序对应的工程量","各类"指设备类型而非单台设备;且问题四增加预算购买设备才有意义
- 参数化: ALLOW_PARALLEL = True(代码中的开关变量)
- 替代假设: 每类设备只用 1 台(ALLOW_PARALLEL = False),但这会导致问题四退化为问题三
⛔ 若某个假设写不出有力的理由,阐明这个假设需再推敲。 回到 问题分析.md 的假设预检结果重新审视。
工作节点 3:逐子问题建模
各个子问题:
-
方法调研 — 用 WebSearch 搜索"[问题类别] 数学建模 方法"或"[problem type] optimization method",了解这类问题的主流求解方法。避免只凭训练知识选方法——同一类问题在不同规模下最优方法可能完全不同(如 TSP 小规模用精确求解,大规模用 LKH 启发式)
-
模型选取与理由 — 为什么选这个模型,与候选模型的优势对比,引用调研到的文献支撑
-
数学公式推导 — 完整严谨,采用 LaTeX 数学环境(目标函数+约束条件)
-
求解算法设计 — 伪代码或过程描述
⛔ 审计身份与论文表达卡(写入同一份 建模报告.md):
模型定义 Q1 | 正式名称: [题目机制 + 标准数学模型] | 标准模型族: [可识别的学术模型族] | 求解算法: [实际使用的算法]
模型结构 Q1 | 决策变量/状态量: [变量及含义] | 目标函数/统计关系: [优化目标或统计/动力学关系] | 核心约束/方程: [决定模型结构的约束或方程] | 定制机制: [题目特有机制]
论文表达 Q1 | 展示名称: [简洁可发表名称] | 问题角色: new_model | 继承模型: none | 核心方法: [摘要中需要保留的一个核心算法或方法]
正式名称必须让评委直接识别标准数学结构。推荐“考虑维护约束的机组承诺混合整数线性规划模型”“基于季节项与滞后项的动态回归模型”“带时间窗的取送货车辆路径模型”;禁止只写“聚合承诺模型”“超边修复模型”“优化模型”“决策模型”或“综合模型”。
论文展示名称不是审计名称的机械缩写。它应保留主要数学结构,删除运行模式、验证器、预算、冻结合同和过细约束清单,中文通常控制在 8--24 个汉字。核心方法 只登记摘要需要出现的主要求解算法;初始化、修复、加速和独立校验方法留在算法与验证章节。
先判定子问题角色:
new_model:新建数学模型,三行卡均必填;
model_extension:扩展上游模型,三行卡均必填并写明继承模型;
comparison、validation、application:不得为满足格式强造新模型,只写论文表达卡,展示名称改为“基于前述模型的方案比较/稳健性检验/情景应用”,并登记 继承模型: Q1,Q2 等真实依赖。
模型、机制和算法必须分层:混合整数线性规划、动态回归、车辆路径、状态空间等是模型族;维护约束、预算平衡、滚动时域、超边修复是定制机制;HiGHS、Gurobi、分支定界、遗传算法、粒子群、匈牙利算法等是求解算法。DARP、VRP 等问题类别不得单独替代数学表达结构;多指标决策方法可登记为标准模型族时,必须同时写出指标、权重、归一化和聚合/排序关系,不能只报方法名称。
MCM/ICM 另写:PAPER EXPRESSION Q1 | DISPLAY NAME: ... | QUESTION ROLE: new_model | INHERITS FROM: none | CORE METHOD: ...。审计身份仍使用 MODEL DEFINITION 与 MODEL STRUCTURE 两行。
方法选取参考 参考资料/methods_table.md。
工作节点 4:符号阐明表
保证全部公式中的符号都有定义:
| 符号 | 含义 | 单位 | 取值界限 | 首次出现 |
|------|------|------|----------|----------|
工作节点 5:模型检验与灵敏度分析设计
-
模型检验:回代检验、交叉校验、残差分析
-
灵敏度分析:关键参数的变化界限和影响
-
鲁棒性检验:数据扰动下的稳定性
工作节点 5.5:⛔ 合理性预校验 + 结果预期界限表(建模完成后必做)
关键原则:物理约束 > 数据忠实度 > 计算正确性
编码阶段是纯实施者,遇到"结果不对"仅可按建模阶段的预案操作,严禁自行发明修正方法。由此建模阶段务必把全部决策做完。
实施环节:
-
对照防错手册复核模型:重新查阅 参考资料/error_prevention.md 中本题相应题型的"务必做"和"禁止做"条目,逐条确认模型是否满足。不满足的当场调整模型。
-
交付建模报告的 5 项必备内容(在 建模报告.md 末尾,computational-realization 务必对照实施):
① 结果约束清单(硬边界,超出即判定代码有误):
## 结果约束清单
- [变量名] ∈ [下界, 上界],物理含义:[为什么是这个范围]
- [变量名] 的符号/方向约束:[说明]
- [守恒量]:[应满足的恒等式或误差上限]
② 预期行为描述(定性描述合理结果的"形状"):
## 预期行为
- 时间尺度:系统应在 [X] 时间内达到 [什么状态]
- 稳态特征:[哪些量] 应趋于常数/周期/衰减
- 瞬态特征:[初始阶段应该看到什么现象]
- 单调性/对称性:[哪些量应该单调递增/对称/...]
③ 异常处理预案(每种异常只给一种修正方法,不留选取空间):
## 异常处理预案
若出现 [具体异常描述]:
→ 原因判断:[最可能的原因]
→ 唯一修正方法:[具体步骤]
→ 禁止:[不允许的替代方案]
④ 方法唯一性声明(各个计算环节指定唯一方法,涵盖预处理/后处理/插值/滤波):
## 方法指定
步骤 N:[做什么]
方法:[唯一指定的方法名 + 关键参数]
输入:[从哪来]
输出:[到哪去]
禁止替代:[不允许用的方法,以及为什么不用]
⑤ 验证检查点(编码阶段务必实施的 pass/fail checklist):
## 验证检查点
□ [检查项]:[判定条件],若 fail → [跳转到哪个异常预案]
□ [检查项]:[判定条件],若 fail → [跳转到哪个异常预案]
□ 最终:所有输出量均在约束清单范围内
⑥ 优化结果结构性校验输入(优化类子问题务必给出,编码阶段的 structural_validation() 依赖这些信息):
## 结构性验证输入(供 computational-realization 层级 5 使用)
### 约束活跃性预期
- [约束名1]:预期活跃/不活跃,理由:[为什么这个约束应该/不应该取等号]
- [约束名2]:预期活跃/不活跃,理由:[...]
- 如果所有约束都不活跃 → 说明 [什么情况],需要 [什么操作]
### 决策变量合理范围与预期行为
| 变量 | 物理含义 | bounds | 预期取值区间 | 若取到边界说明什么 |
|------|---------|--------|-------------|------------------|
| x_1 | [含义] | [lb, ub] | [预期在哪个子区间] | [取到上界=资源耗尽/取到下界=该资源无用] |
### 灵敏度方向表
| 决策变量 | 增大时目标函数方向 | 预期灵敏度量级 | 若方向相反说明什么 |
|----------|-------------------|---------------|------------------|
| x_1 | ↓(减小=更优) | 高(主导项) | 目标函数符号写反了 |
### 稳定性预期
- 问题是凸的/非凸的?
- 预期有几个局部最优?(1个=结果应完全稳定;多个=允许 CV<5%)
- 可接受的变异系数阈值:[X]%
### 资源利用率预期
- [资源1]:预期利用率 [X%-Y%],若为 0 说明 [什么问题]
- [资源2]:预期利用率 [X%-Y%],若为 0 说明 [什么问题]
⛔⛔⛔ 建模阶段强制修复原则(不可跳过):
复核中发现任何问题,务必当场修复模型再继续,不可留给 computational-realization 阶段:
⛔ 禁止的做法:
⛔ 检测到问题 = 务必修复。解释缘由 ≠ 处理完毕。当前环节不准许带着已知问题交付 建模报告.md。
工作节点 6:交付
留存到 建模报告.md:模型假设、符号阐明、各个子问题的模型/公式/算法、检验方案、灵敏度分析方案、计算实验实现要点。
⛔ 务必将 问题分析.md 中的图形与表格预规划带入 建模报告.md。 在报告末尾附上图形与表格预规划章节(从 问题分析.md 复制或更新),保证 evidence-visualization 能读到完整的图形与表格清单。若建模过程中发现需额外的图形与表格(如灵敏度分析曲线、模型对比热力图),在此处补充。
⛔ MANDATORY: 交付前自检(写完 建模报告.md 后务必按项核验):
echo "=== 建模报告自检 ==="
[ -f 建模报告.md ] || { echo "❌ 建模报告.md 不存在!"; exit 1; }
PROB_COUNT=$(grep -c '问题[一二三四五六七八九十0-9]' 问题分析.md 2>/dev/null || echo 0)
MODEL_SECTIONS=$(grep -c '## .*问题[一二三四五六七八九十0-9]\|## .*Problem' 建模报告.md 2>/dev/null || echo 0)
echo "赛题子问题数: $PROB_COUNT, 建模报告覆盖: $MODEL_SECTIONS"
[ "$MODEL_SECTIONS" -lt "$PROB_COUNT" ] && echo "❌ 有子问题未建模!"
OBJ_COUNT=$(grep -c '目标函数\|min\|max\|最小化\|最大化\|objective\|模型公式\|数学模型' 建模报告.md 2>/dev/null || echo 0)
echo "目标函数/模型公式出现次数: $OBJ_COUNT"
[ "$OBJ_COUNT" -eq 0 ] && echo "❌ 未找到任何目标函数或模型公式!"
CONSTRAINT_COUNT=$(grep -c '约束\|s\.t\.\|subject to\|限制条件\|≤\|≥' 建模报告.md 2>/dev/null || echo 0)
echo "约束条件出现次数: $CONSTRAINT_COUNT"
grep -q '符号.*说明\|符号.*含义\|Symbol.*Description' 建模报告.md && echo "✅ 符号说明表存在" || echo "❌ 缺少符号说明表"
grep -qi '灵敏度\|sensitivity\|鲁棒性\|robustness\|稳健性' 建模报告.md && echo "✅ 灵敏度/鲁棒性分析方案存在" || echo "⚠ 缺少灵敏度分析方案(评审加分项)"
grep -qi '图表预规划\|fig_\|TABLE_\|DrawIO' 建模报告.md && echo "✅ 图表预规划已带入" || echo "❌ 缺少图表预规划(evidence-visualization 步骤需要)"
grep -qi '编程\|实现要点\|Python\|算法步骤\|伪代码' 建模报告.md && echo "✅ 计算实验实现要点存在" || echo "⚠ 缺少计算实验实现要点(computational-realization 步骤需要)"