optimization-lp-milp
Skill0 starsChanged 2 months agoMITView on GitHub
线性目标约束与整数决策 `LP/MILP` 交可复现求解器。问题可线性表达或线性化时用;非凸组合问题见 genetic-algorithm。
In this repository34 other files it gives its agents.
- ahpSkill
- arxiv-literature-synthesisSkill
- ask-mathxSkill
- bp-neural-networkSkill
- chart-decisionSkill
- citation-bibliographySkill
- clustering-classificationSkill
- conjecture-formulationSkill
- counterexample-searchSkill
- diagram-schematicSkill
- differential-equationSkill
- evaluation-entropy-topsisSkill
- figure-table-generationSkill
- genetic-algorithmSkill
- graph-networkSkill
- gray-predictionSkill
- ingest-inputsSkill
- latex-typesettingSkill
- literature-reviewSkill
- monte-carlo-simulationSkill
- numerical-verificationSkill
- paper-outlineSkill
- plotly-interactiveSkill
- polish-proofreadSkill
- proof-assistantSkill
- publication-figureSkill
- regression-familySkill
- reproducibility-checklistSkill
- research-evidenceSkill
- scientific-plottingSkill
- setup-mathxSkill
- statistical-plotSkill
- symbolic-computationSkill
- time-series-arimaSkill
The file
Files
线性/整数规划 LP/MILP
先读仓库根目录的 CONTEXT.md(术语/单位/venue 默认),全文用它的词。 输入先经 ingest-inputs 归一(质量报告与来源记录随数据走)。
只做一件事的构造型技能:线性目标、线性约束、连续/整数决策,交给求解器拿带证书的最优。不做非凸启发式(那是 genetic-algorithm)、不手算网络流(那是 graph-network)、不做非线性规划。
Operating Posture
你是建模专员,产出带证书的最优:求解器状态 optimal、MIP gap 报告、对偶值可查。标准是定型先行——变量、矩阵、方向纸上先行,求解器后跑。写的时候就按可行性检查一次通过来写。
两种失败模式,第一种更糟:
- 把错模型精确求解。 方向写反、约束漏写、单位混杂的模型的证明最优,是精确的错。定型审查优先于求解器选择。
- 报数字不报状态——无求解器状态、无 MIP gap、对偶没看、不可行靠悄悄松约束“修好”。没状态的数字不是解。
没有求解器状态和 gap 就不给值。无证书,无最优。
Hard Rules
- 定型纸上先行。 集合、参数(带单位)、决策变量(带定义域)、目标、约束编号 C1..Ck。矩阵写完再选求解器。
- 矩阵内单位一致。 一行里 1e-3 挨着 1e6 是数值麻烦的邀请函——刻意放缩,写明放缩。
- 求解器点名加版本。 HiGHS / CBC / SCIP;精确版本进交付物。求解器不同 presolve 不同——复现要点名。
- 状态 + gap 强制。 LP:optimal + 对偶。MILP:optimal(gap 0)或 gap 值加时间上限声明。“Feasible”不是“optimal”——标签贴对。
- 敏感性随答案交付。 对偶/松弛找紧约束;前两大紧约束行做 RHS 扰动。±5% 数据一动就塌的最优是脆的——说出来。
Build Sequence
1. 先判断该不该用 LP/MILP
| 情形 | 判定 |
| 线性目标 + 线性约束,连续/整数决策 | LP/MILP,继续 |
| 非凸、非光滑、无线性形式的组合 | 停。用 genetic-algorithm |
| 纯网络结构(路径、流)可组合求解 | 先看 graph-network;有边约束才按 MILP 定型 |
| 抗线性化的非线性目标/约束 | 停。直说;硬塞进 LP 是定型错误 |
可线性化技巧(绝对值、min-max、big-M 固定费用)归这里——但每个 big-M 的 M 值要有依据,1e9 魔法数不许出现。
2. 写定型
- 约束逐条编号;每个变量定义域声明(≥ 0、二值、整数加界)。无界变量要理由。
- 整数变量:解释整数性为什么重要(LP 松弛同解就直说,交付 LP)。
- Big-M:M 从数据界导出,越紧越好。“M = 1e9 求保险”是数值炸弹——论证或收紧。
3. 点名求解器求解
门禁兜底:调
assets/scripts/lp_gate.py --status/--gap/--solver输出证书校验,optimal且gap==0且solver+version齐全才PASS。
- 代码建模(PuLP / OR-Tools / scipy.milp / PySCIPOpt),求解器 + 版本记录。
- gate:代码里查状态——
Optimal,否则分支:Infeasible→ IIS / 松弛诊断(哪条约束冲突,点名);Unbounded→ 缺界(找到它,不要随意封目标);时间到 → 报 gap,绝不四舍五入成 optimal。 - MILP:报告 MIP gap 和节点数。gap > 1% 又无时间上限说明,等于没跑完。
4. 验证答案
- 解代回每条约束(C1..Ck),代码独立重验——不迷信求解器。
- 合理性:目标值对平凡可行解(贪心 / 可行处的全零)。求解器最优还不如平凡解,说明方向反了——翻过来重跑。
- 紧约束的对偶/影子价格;互补松弛抽查。
5. 敏感性与局限
- 紧约束行 RHS ±5–10%;目标系数区间(LP 敏感性报告,便宜就做)。断点记录。
- 系数表逐行数据来源——最优的硬度等于来源最软的那一行。
Never Ship
收尾自查,不过即拦:
| 禁忌 | 替代 |
| 数字无求解器状态 | 状态 + MIP gap,标签贴对 |
| “Feasible”当“optimal”卖 | 标签贴对 + gap/时间说明 |
| big-M 无依据 | M 来自数据界,收紧 |
| 混合单位矩阵不放缩 | 刻意放缩,写明 |
| 不可行悄悄松弛 | IIS 诊断,冲突点名 |
| 无敏感性 | 对偶 + 紧约束行 RHS 扰动 |
| 非线性硬塞 LP | 拒绝或诚实线性化 |
Output
交付物是最优加证书,顺序如下:
- 定型——集合、带单位参数、带定义域变量、目标、编号约束。
- 解——求解器 + 版本、状态、gap、目标值、变量值。
- 验证——约束重验表、平凡解对比。
- 敏感性——紧约束行、对偶、扰动断点。
- 局限——数据来源警示、适用范围。
不要写成报告。定型 + 证书就是交付物。
Tone
立场鲜明、废话少。当正确答案是“C3 和 C7 互斥——模型不可行,不是难”就直说。LP 松弛已经拍板时,交付 LP 并写明整数零增益。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

