4 - 线性、二次与锥优化
在打开求解器之前,先把桌面腾出一小块地方,手边放一张空白纸。今天这张纸比任何软件都重要:这一篇里每一个关键模型,都要先经得起一次手算。
优化问题常常披着一层吓人的外衣:向量、锥、乘子、矩阵不等式,还有一眼看不懂的求解器日志。但它真正关心的问题其实很朴素:在所有满足规则的方案中,哪一个最符合我们的目标? 这一篇博客会依次学习三种表达这类问题的语言:线性规划(LP)、二次规划(QP)和二阶锥规划(SOCP)。我们不从软件按钮开始,而是从“究竟要做什么决定”开始,逐步得到变量、目标、约束和验证方法。
贯穿全文的竞赛案例来自 2024 年全国大学生数学建模竞赛 C 题的农作物种植规划。公开的优秀论文需要同时处理地块、季节、作物、轮作、产量、价格、成本和需求。它很适合说明一个事实:写一句“让利润最大”并不难,真正困难的是保证求解器理解的世界与真实种植规则一致。本文会独立重建模型,而不是照抄获奖论文的公式和结果。原始材料可在国赛优秀论文展示页面 查阅。
一个可以被审查的优化模型必须明确给出:决策变量、目标函数、约束条件、输入数据和验证方式。少掉任何一项,求解器即使给出数字,也还不能构成可信的决策。
1. 从真实决策到数学规划
假设校园餐厅中午要决定做多少盘米饭套餐和沙拉套餐。每盘米饭套餐贡献利润 36 元,使用 4 千克米和 2 分钟人工;每盘沙拉贡献利润 30 元,需要 3 分钟人工。现有 80 千克米和 72 分钟人工,市场最多能卖出 18 盘米饭套餐和 16 盘沙拉。
先不要算。我们能够控制的并不是利润、库存或需求,而是两种套餐的数量。令
于是模型是
目标和约束都是变量的加权和,所以它是线性规划。这里的“线性”并不等于问题很小,而是表达式里没有
一般的 LP 可以写成
自然语言中,“不超过、容量、至多”通常对应
2. 可行域、顶点与线性规划的几何
餐厅模型中的每个不等式都表示一个半平面。所有半平面的交集就是可行域。线性约束的交集是凸集,因此连接任意两个可行点的线段仍然可行。
目标等值线
手算候选顶点。人工约束与沙拉需求边界相交时,
这道手算题也是代码的单元测试。如果求解器返回
凸集
线性目标又满足
所以内部的凸组合不可能严格优于两个端点。这解释了为什么单纯形法可以沿顶点搜索。
3. 对偶:稀缺资源值多少钱
考虑原问题
给每一项资源赋予非负价格
因此
这就是弱对偶。满足常见条件时,强对偶保证原问题和对偶问题的最优值相等。最优对偶变量
餐厅最优解只用了 72 千克米,米的约束没有卡住方案,所以其影子价格为 0;人工和米饭套餐需求约束是紧的。互补松弛写为
这让我们不只说“最优利润是 1008”,还能说明究竟是哪一种资源限制了利润、放宽限制是否值得。
4. 二次规划:风险、偏差与边际代价
线性目标假设边际价值不变,但很多问题并非如此。调度会惩罚偏离目标,投资会权衡收益与方差,控制会惩罚动作突变。这些问题常写成
当
最小二乘就是典型 QP:
所以
若两台发电机成本为
也就是说,所有没有顶到容量边界的机组边际成本相等。这才是调度结果背后的经济解释。
5. KKT 条件
对
KKT 条件包括
对满足 Slater 条件等约束资格条件的凸问题,KKT 既必要又充分;在非凸问题中,它可能只描述局部驻点。
例如把点
修正方向正好是边界法向量,修正幅度正好让点回到边界。
6. 范数、不确定性与二阶锥
标准二阶锥是
它能够表达许多凸二次约束、投资风险限制和椭球不确定性下的鲁棒约束。
假设资源系数不确定:
最坏扰动是
这是一条 SOCP 约束。可见,不确定性并不必然意味着只能模拟;选对不确定集合后,可以得到可精确求解的鲁棒对应问题。
7. 求解算法与数值证据
单纯形法沿可行域顶点移动;内点法在内部沿中心路径前进;一阶法使用梯度和投影,单步便宜但高精度时迭代较多。对
当
模型结构决定算法:线性且含离散变量时用 LP/MILP;
8. 获奖论文案例:2024 国赛农作物种植规划
令
不要直接在目标中写
若超产部分按半价出售,目标为
地块容量、启用关系、禁止重茬与三年内至少种一次豆类可分别写成
再把不适合作物、地块或季节的
例如两个 10 亩地块、两年、三种作物
这个小例子可以同时检查兼容关系、轮作、豆类覆盖和利润核算。小模型没有通过,就不应相信七年大表格。
9. 实现与核验
1 | import cvxpy as cp |
求解后要重新计算目标,逐条检查约束,核对单位与整数性。原始可行残差可以写成
$$r_p=\max{|Ex-d|\infty,\ |(Ax-b)+|_\infty}.$$
整数模型还应报告当前最好可行值
求解器超时不等于失败;如果已经得到 0.4% 的间隙,它可能足以支持决策。真正有问题的是完全不报告间隙。
10. 如何写出可信的优化报告
读者应当能够沿着报告还原整个链条:变量的含义和单位、目标的会计构成、约束的现实来源、模型为何属于 LP/QP/SOCP、求解器为何适合、小规模实例如何验证、残差和最优性界是多少、敏感性如何影响建议,以及模型有意忽略了什么。
LP 教会我们严谨翻译规则;QP 教会我们处理曲率、风险和折中;SOCP 告诉我们许多带范数的非线性问题仍然可以保持凸性。比算法名字更重要的是共同的习惯:忠实表达决策,诚实利用结构,把验证当作数学的一部分。
离开之前留一个小彩蛋:把餐厅模型的人工从 72 分钟改成 73 分钟,最优利润的增量恰好等于对偶给出的人工影子价格。继续一分钟一分钟增加,找到这个预测第一次失效的位置。那个拐点会让你真正看见“局部敏感性”四个字的含义。
参考资料
- 全国大学生数学建模竞赛官网 与优秀论文展示 。
- Boyd 与 Vandenberghe,《Convex Optimization》 。
- CVXPY 文档 。
- 标题: 4 - 线性、二次与锥优化
- 作者: Gavin0576
- 创建于 : 2026-09-15 18:00:18
- 更新于 : 2026-10-23 07:06:57
- 链接: https://jiangpf2022.github.io/blog//2026/09/15/Mathematical-Modeling-04-Linear-Quadratic-and-Conic-Optimization-zh/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。