线性规划
线性规划(linear programming)是在一组线性约束下,使线性目标函数最大或最小的问题。它常用于分配有限资源、安排生产和运输。这里的变量可以连续取值;若产品件数等变量必须为整数,就需要进一步研究整数规划。
下面用同一个两产品模型,依次说明怎样建立约束、从图上找答案、用不等式证明最优,以及资源增加后答案怎样变化。
把资源和收益排成一张表
设两种产品的产量为 ,都允许连续分割。采用以下教学数据,各种资源分别使用自己的统一计量单位,收益使用同一货币单位。
| 项目 | 每单位产品 | 每单位产品 | 可用总量 |
|---|---|---|---|
| 第一种资源 | 1 | 1 | 4 |
| 第二种资源 | 2 | 1 | 5 |
| 单位收益 | 3 | 2 | — |
第一种资源的总消耗为 ,不能超过四;第二种资源为 ,不能超过五。产量不能为负,总收益是 ,所以模型为 “线性”表示变量只以常数倍相加的方式出现。这个模型假定单位资源消耗和收益不随产量改变;若有启用设备的固定成本或阶梯价格,就须修改模型。
先画出哪些方案可行
等式 是一条直线,不等式 取包含原点的一侧。第二条资源约束也给出一个半平面。再限制 ,各区域共同部分就是可行域。
沿横轴,令 ,两种资源分别要求 、,所以横轴终点是 。沿纵轴,两个上限分别是四、五,所以纵轴终点是 。
两条资源边界的交点由 确定。第二式减第一式得 ,代回得 。加上原点,可行域的四个顶点为 。
收益相同的方案满足 ,即 。改变 ,直线斜率不变,只是平行移动。向收益更高的方向移动,最后一次接触可行域时经过 ,收益为九。
四个顶点收益分别为零、、九、八。为什么本例只检查顶点就够?这个凸四边形可以沿对角线分成两个三角形;三角形内每一点都可写成三个顶点的非负加权平均,权重和为一。线性目标在该点的值,也是顶点目标值的同一加权平均,不会超过其中最大值。因此至少有一个顶点达到最大收益。
这不保证最优点总唯一。若目标改为 ,从 到 的整条边都取得四,所有这些点都最优。
用两行不等式证明答案
图形有助于找到候选点,证明则可以更短。把两条资源约束相加: 任何可行方案的收益都不会超过九。点 满足两条资源约束,且收益恰好为九,所以它一定全局最优。
这类证明包含两部分:一个可行方案给出已能达到的收益,一个对所有可行点成立的上界排除更好方案。两者相等,答案便得到核验,不依赖图上读数的精度。
如果简单相加不能恰好得到目标,还可以给资源约束加权。取非负数 ,得到 只要 、,利用产量非负,就有 因此每组这样的 都给出一个收益上界。寻找最小的上界,就是对偶问题: 本例取 ,正好得到上界九。
对偶与剩余资源的关系
把原问题写成矩阵形式 ,相应对偶为 。这里 是产量向量, 是资源权重向量。
任意一对可行解都满足 第一步用产量非负和对偶约束,第二步用权重非负和资源约束。这称为弱对偶:原方案收益不超过对偶给出的上界。
把两端之差拆开,可得 右边每项都非负。若差为零,每项必须为零:有剩余的资源必须对应零权重;正产量的产品必须对应恰好等于其单位收益的资源加权成本。这称为互补松弛。
本例两种资源在 处都用尽,两种产品产量也都为正,对应对偶两条约束都取等号。反过来,原、对偶均可行且满足互补松弛时,上下界相等,便能证明最优。
强对偶定理进一步保证:有限维线性规划可行且有有限最优值时,原问题和对偶都能取得最优解,两边最优值相等。前面的不等式证明了弱对偶,强对偶的一般证明还需更多几何工具,可参阅 MIT 线性规划对偶讲义。
增加资源,收益能增加多少
把第一种资源总量从四改为 ,第二种仍为五。问题成为 当资源很少时,第一种产品每份第一资源带来收益三,高于第二种产品的二。若 ,可以全部生产第一种:。第二资源消耗 ,收益为 。对任意可行点,,所以该方案最优。
当 ,两种资源同时用尽的交点满足 两个产量都非负,收益是 。把两条约束相加也给出上界 ,所以这个方案最优。
当 ,可以取 ,收益十。因为 十也是全域上界。此后第一种资源再增加,第二种资源仍限制了收益。
最优收益因此是分段函数
图中每一段都由一个可行方案和一个匹配上界推导出来。折点是重新检查活跃约束的位置。
三个区间的斜率分别为三、一、零,表示增加一小单位第一资源所带来的边际收益。在原来的 附近,它等于一,与最优对偶权重 相同,因此对偶权重也常称影子价格。越过分段点后,最优生产结构改变,影子价格也随之改变。
不能只用一个“求解成功”概括的情况
若约束是 和 ,不存在可行方案。把第一条改写为 ,再与第二条相加,得到矛盾 ,便证明了不可行。
若最大化 而只有 ,则可以让目标任意大,称为无界。但可行域无界不一定使目标无界:在同一可行域最小化 ,答案就是零。
变量若必须为整数,连续最优解也可能不适用。例如 下,连续方案 可行,各自四舍五入成一后却违反约束。因此整数要求应在建模时写明,不能用事后四舍五入代替求解。
绝对值问题也能写成线性规划
用一个数 接近观测一和四,若目标为 ,看起来出现了非线性符号。引入两个变量 ,要求 并最小化 ,就得到线性规划。前两条等价于 ,后两条等价于 ;取最小值时两者可以分别等于绝对值,所以转换保留了原目标的最优值与最优 。
三角不等式给出目标至少为三。对任意 ,目标恰为 ,因此整个区间最优。若把损失改为平方偏差,配方则给出唯一最优点 ,参见最小二乘法。
算法与历史
二维问题可以画图,高维问题通常使用算法。单纯形法在基可行解之间改进目标,几何上常表现为沿顶点移动;退化时一次基变换可能仍停在同一点。内点法采用不同的路径逼近最优解。数值结果可以通过原约束残差、对偶约束和两边目标差复核。
Kantorovich 在 1939 年发表与生产组织有关的数学方法,Dantzig 在 1947 年发展单纯形法。两人的工作背景分别见 MacTutor 传记和斯坦福大学记录。今天的线性规划把资源模型、多面体几何、对偶理论与算法联系在一起。
参考来源与延伸阅读
- Boyd 与 Vandenberghe:Convex Optimization,第4章的线性规划、第5章的对偶与敏感性分析。
- MIT 6.253 Lecture 10:线性规划对偶定理及Farkas引理。
- MacTutor:Kantorovich;Stanford:Dantzig。
- 先修:矩阵、优化;相关:最短路径、数学建模。