啥是线性优化问题
pending
优化问题的标准表示形式
pending
基本(可行)解
对于x∈Rn,如果不存在y∈Rn,在点x的每一个紧约束,同时紧约束y,则x是一个基本解。若x在可行域P内,则x为基本可行解。
对于约束Ax=b,A∈Rm×n,可以看作以下形式:
b=x1A1+x2A2+⋯+xnAn
其中Ai表示矩阵A的第i列,也就是说,A的每一列Aj∈Rm是一个"方向向量",xj是它的系数。
由于n>m,用n个向量去凑m维的b,有无穷多解。我们可以从A中选取m个线性无关的列,构成一个基(basis)AB。其对应一个基本解xB,使得ABxB=b。用数学语言描述如下:
Def.:A basis B⊆{1,⋯,n},basis means: rank(AB)=∣B∣=m.
Obs.:∃ xB=AB−1b and xj=0 for j∈/B
需要注意,AB的每一列要求线性无关,这意味这不是任意选取m列向量,都对应一个基本解。且当xB>0,基本解xB才可行。这也是simplex算法的要求之一。
那矩阵A是否保证一定有至少一个基本解呢?答案是肯定的。对于优化问题的标准型表示来说,A确保行线性无关,即rank(A)=m,行秩等于列秩。所以A的n列中必定能找出m列线性无关 —— 至少一个基是保证存在的。
Simplex(简单形法)
Simplex算法简单描述就是,对于优化目标minc⋅x,计算每一个基本可行解的目标值。遍历出最小值为止。
//算法take one伪代码
算法通过列替换的方式,寻找下一个basis。新的基本解y可视为y=x+θd。d为从x到y的方向向量,维度为n。根据所对应矩阵A的列向量的划分,d包括:
d=(m维,基变量dB, =1,进基变量dj, 其余非基变量0,…,0)
几何上可解释为,往组合里新增一单位(dj)列向量Aj,同时为了保持Ay=b对原AB的代偿(dB)。由于最终与x相加的结果受θ控制,我们不妨设置dj=1,则有:
yi=x+θ=θ
ybi=xbi+θdbi
dB=−AB−1Aj
几何上,dB 就是沿这条棱走时各个基变量的变化率(斜率),而它的符号决定了后面所有的事:

| dbi 的符号 | 含义 | 后果 |
|---|
| dbi<0 | xbi 在递减 | 迟早触到 0,是离基候选,限制 θ 的上界 |
| dbi⩾0 | xbi 不减 | 永远不会触零,对 θ 没有约束 |
| 全部 dbi⩾0 | 没人拦得住 | θ 可以取到 ∞→ 线性规划无界 |
我们需要保证xbi+θdbi>0,且我们希望引入d的结果是原AB的某一列被抵消为0。因此dbi<0的部分是我们求解θ的重要参考,则有:
∀dbi<0:θ≤−dbixbi
θ∗=bi∈B:dbi<0min−dbixbi
θ=θ∗
因此,对于计算c⋅y−c⋅x有:
c⋅y−c⋅x=cjyj+cB⋅yB−cB⋅xB=cjyj+cB⋅(yB−xB)=cjyj+cB⋅θdB=cjθ−cB⋅θAB−1Aj=θ(cj−cB⋅AB−1Aj)=θcˉj
cˉj=(cj−cB⋅AB−1Aj)被称为列替换j的reduced cost,只有当cˉj<0时,基本解y才是更优的。
引理 Lem.: Let B a basis such that1.xB=AB−1b>02.cˉT=cT−cBTAB−1A≥0.Then the basic feasible solution induced by B is optimal
补充:初始基本解假设
为什么需要它:simplex是"从一个顶点走到下一个顶点",所以必须先站在某个顶点上。可对一般的Ax=b,x≥0,随便挑一个基B算出的AB−1b很可能有负分量,甚至整个可行域可能是空的。"找到第一个基本可行解"本身就是个难题,跟"找最优解"难度相当。
auxiliary linear program的思路是:既然找不到入口,那就先造一个入口。
造法:添加人工变量
minj=1∑myjs.t.Ax+y=b,x≥0,y≥0
这里的 y∈Rm 叫人工变量(artificial variables)。关键设计有两点:
-
初始基白送。约束矩阵是 [A∣I],y 对应的加 m 列构成单位阵,天然线性无关。取 B=y 的下标集,则 AB=I, x=0,y=b。这就是一个现成的基本可行解——而且不用算。(前提是 b≥0,若某行 bi<0,把该行整行乘 −1 即可,等式两边同乘不改变约束。)
-
它永远有解。辅助问题一定可行(上面那个点),且目标 ∑yj≥0 有下界,所以永不无界——单纯形法跑它必然正常终止。

几何上可以这样想:我们把问题抬升到了 Rn+m 中。原来的可行域 {x:Ax=b,x≥0} 就是新可行域与超平面 y=0 的交集。加人工变量相当于给了一个 "悬在半空中" 的容易找到的起点,然后用目标函数 ∑y 把它往下压:
- 最优值 =0:说明能降到底,y=0,此时 Ax=b 且 x≥0——落点正是原问题的一个基本可行解。它对应的基(去掉退化残留的 y 下标、按 rank(A)=m 补齐后)就是 Phase 2 要的初始基。
- 最优值 >0:说明无论怎么调 x 都至少要作弊那么多,即 {x:Ax=b,x≥0}=∅——原问题不可行,直接报告,无需进入 Phase 2。
(关于simplex的另外两个假设,无界假设不满足直接终止算法,非退化基假设需引入额外规则,有兴趣我再补充)