线性规划
模型:
图解法
略,见ppt。
单纯形法
标准型与四种转换
单纯形法要求:
即:约束全为等式、右端项非负、变量非负。
| 原形式 | 转换方法 | 说明 |
|---|---|---|
| 加松弛变量 | 表示未用完的资源 | |
| 减剩余变量 | 表示超出下限的部分 | |
| 等式两端乘 | 保证右端非负 | |
| 无符号限制 | 令 , | 自由变量拆分 |
基
- 基:从 中取 个线性无关列组成的方阵 ;对应变量为基变量 ,其余为非基变量;
- 基本解:令非基变量 ,解 得 ;若 则为基本可行解,对应可行域的一个顶点(角点);
- 基本解总数 ,规模稍大即无法枚举 → 单纯形法只考察其中一小部分。
单纯形表
| 基 | 各变量列 | 解(右端项) | |
|---|---|---|---|
| 行 | 1 | 目标行系数(约化成本) | 或 的当前值 |
| 各基变量行 | 0 | 约束系数(枢轴运算后为单位阵结构) | 基变量当前值 |
- 基列给出当前基变量,解列给出其取值;
- 非基变量恒为 0;
- 表中 行 = 把目标函数写成 后,用行变换消去基变量系数所得。
主流程
step 1 确定初始基本可行解。
step 2(最优性条件) 在 行中检查非基变量系数:
- 最大化问题:若存在负系数,选最负者进基;全部非负则当前解最优,停止;
- 最小化问题:若存在正系数,选最正者进基;全部非正则最优,停止。
step 3(可行性条件) 对进基列计算比值 ,只取分母严格为正的行;取最小非负比值对应的基变量离基。
step 4(枢轴运算 / Gauss–Jordan)
- 枢轴元素 = 离基行 ∩ 进基列;
- 枢轴行:基列位置换为进基变量,整行除以枢轴元素;
- 其他行(含 行):新行 = 当前行 −(当前行在枢轴列的元素)×(新枢轴行)。
其实step4就是把枢轴列变为单位正交向量的线性变换
返回第 2 步。
改进单纯形法
(1)大 M 法
- 化标准型;对没有松弛/剩余变量可作初始基的每个等式,加入人工变量 ;
- 目标函数中对人工变量施加巨额惩罚:最大化取系数 ,最小化取 ();
- 一致性调整:因 在目标行有非零系数,须用行变换把 从 行消去,使 行右端项与当前基取值一致(否则后续判据失效);
- 按主流程迭代;
- 判别:迭代结束时若人工变量仍取正值 → 原问题无可行解;若人工变量全部归零 → 所得即最优解。
(2)两阶段法
- 阶段 I:加入人工变量,构造辅助目标 (无论原问题是 max 还是 min,一律最小化人工变量之和),按主流程迭代:
- 若 → 原问题无可行解,结束;
- 若 → 得到原问题的一个基本可行解,转阶段 II。
- 阶段 II:删去人工变量列,恢复原目标函数;先用行变换把目标行调整为与当前基一致,再按 2.4 迭代至最优。
特殊情形
| 情形 | 判别准则 | 说明 | 处理 |
|---|---|---|---|
| 退化 | 可行性条件出现最小比值并列;迭代后某基变量取 0 | 存在多余约束;理论上可能循环 | 任选其一离基继续;检查模型冗余 |
| 无穷多最优解 | 最优表中某非基变量在 行的系数为 0 | 目标等值线平行于紧约束 | 令该变量进基可得另一最优顶点;可按其他偏好选解 |
| 无界解 | 进基列所有系数 (无非正分母,无离基变量)而 行仍有改进系数 | 模型漏约束或参数错误 | 可能是模型缺陷 |
| 不可行解 | 用大 M/两阶段后,最优表中人工变量仍为正 | 约束不相容 | 可能是约束冲突 |
矩阵形式
对标准型 ,取基 :
任意迭代步的单纯形表可整体写成
| 原变量 | 松弛变量 | 右端 | ||
|---|---|---|---|---|
| 行 | 1 | |||
| 约束行 | 0 |
Tricks
- 绝对值最小化 :令 ,,化为 LP;最优时 至少一个为 0。
- min–max(最大成本最小化) :引入标量 ,改为 s.t. ,其余约束不变。
- 曲线拟合的误差度量:最小二乘(平方和,非线性)/最小绝对偏离(绝对值和,可写 LP)/最小最大偏离(,可写 LP)。选不同度量即得不同模型。