运筹学——线性规划单纯形方法

对于一个标准形式的 LP 问题:
minz=c1x1+……+cnxns.t.ai1x1+ai2x2+……+ainxn=biai1x1+ai2x2+……+ainxn≤bi式 (1)xj≥0,j=1,……,n \begin{aligned} \\ min \qquad &z=c_1x_1+ …… + c_nx_n \\s.t. \qquad &a_{i1}x_1 + a_{i2}x_2 + …… + a_{in}x_n = b_i \\&a_{i1}x_1 + a_{i2}x_2 + …… + a_{in}x_n ≤ b_i \qquad \qquad \text{式 (1)} \\& x_j ≥ 0, \qquad j = 1, …… , n \end{aligned} mins.t.z=c1x1+……+cnxnai1x1+ai2x2+……+ainxn=biai1x1+ai2x2+……+ainxnbi (1)xj0,j=1,……,n

我们知道他的最优解在多面凸集的顶点上,那么只要找到一个基本可行解,然后让超平面沿着目标函数的负梯度方向移动,就可以得到最优解——单纯形方法。

接下来,从线性代数的角度出发,将式(1)改写为矩阵向量形式:
{minz=cTs.t.Ax=b式(2)x≥0 \left\{ \begin{aligned} min \qquad & z=c^T \\ s.t. \qquad & Ax = b \qquad \qquad \text{式(2)} \\ & x ≥ 0 \end{aligned} \right. mins.t.z=cTAx=b(2)x0
假设 r(A)=mr(A) = mr(A)=m,即 A 中必有 m 个线性无关的列向量,构成满秩方阵 B,再将其余各列组成的子阵记为 N,有 A=(B,N)A = (B,N)A=(B,N),同理 x=(xB,xN)x = (x_B, x_N)x=(xB,xN)
Ax=bAx=bAx=b 可记作 BxB+NxN=bBx_B+Nx_N=bBxB+NxN=b
由于 B 满秩,B−1B^{-1}B1 存在,上式两边左乘 B−1B^{-1}B1 可得 xB=B−1b−B−1NxN式(3)x_B = B^{-1}b -B^{-1}Nx_N \qquad \qquad \text{式(3)}xB=B1bB1NxN(3)
将式(3)代入式(2)中的目标函数有 其中 b‾=B−1b\overline{b} = B^{-1}bb=B1b , Aj‾=B−1N\overline{A_j} = B^{-1}NAj=B1N
z=cTx=cBTxB+cNTxN=cBT(b‾−B−1NxN)+cNTxN=cBTb‾−(cBTB−1N−cNT)xN=cBTb‾−∑j=m+1n(cBTAj‾−cj)xj式(4) \begin{aligned} z &= c^Tx=c_B^Tx_B+c_N^Tx_N \\&=c_B^T(\overline{b} - B^{-1}Nx_N) + c_N^Tx_N \\&=c_B^T\overline{b} - (c_B^TB^{-1}N-c_N^T)x_N \\&=c_B^T\overline{b} - \sum_{j=m+1}^n(c_B^T\overline{A_j}-c_j)x_j \qquad \qquad \text{式(4)} \end{aligned} z=cTx=cBTxB+cNTxN=cBT(bB1NxN)+cNTxN=cBTb(cBTB1NcNT)xN=cBTbj=m+1n(cBTAjcj)xj(4)
然后记 z0=cTx‾=cBTB‾z_0 = c^T\overline{x}=c_B^T\overline{B}z0=cTx=cBTB,即 z0z_0z0 为目标函数中的常数项
将式(4)中的 cBTAj‾−cjc_B^T\overline{A_j}-c_jcBTAjcj 从 (m+1, n) 扩展到 (1, n),并做如下记号有:ζT=(ζBT,ζNT)=(0,cBTAj‾−cj)\zeta^T = (\zeta^T_B, \zeta^T_N) = (0, c_B^T\overline{A_j}-c_j)ζT=(ζBT,ζNT)=(0,cBTAjcj)
从而目标函数可记作: z=cBTb‾−ζTx式(5)z = c_B^T\overline{b}-\zeta^Tx \qquad \qquad \text{式(5)}z=cBTbζTx(5)
将式(2)可继续改写为:
{minz=z0−ζTxs.t.xB+B−1NxN=b‾式(6)x≥0 \left\{ \begin{aligned} min \qquad & z=z_0 - \zeta^Tx \\ s.t. \qquad & x_B + B^{-1}Nx_N = \overline{b} \qquad \qquad \text{式(6)} \\ & x ≥ 0 \end{aligned} \right. mins.t.z=z0ζTxxB+B1NxN=b(6)x0

其中 xB+B−1NxN=b‾x_B + B^{-1}Nx_N = \overline{b}xB+B1NxN=b 又称为典式。

对于式(5),cBTb‾c_B^T\overline{b}cBTbxN=0x_N =0xN=0 时候的一组特解,而 ζTx\zeta^TxζTx 类似于一种损失,我们期望损失小于等于零,那么这就是最小值;如果损失大于0,说明了存在更优解。

定理:如果 ζ\zetaζ 的第 k 个分量 ζk>0(m+1≤k≤n)\zeta_k > 0 \quad (m+1≤k≤n)ζk>0(m+1kn)Ak‾=B−1Ak≤0\overline{A_k} = B^{-1}A_k ≤0Ak=B1Ak0,则无界。
解释ζk>0\zeta_k > 0ζk>0 意味着损失大于0,对于约束条件 xB=B−1b−B−1NxNx_B = B^{-1}b - B^{-1}Nx_NxB=B1bB1NxN ,意味着需要下降。
Ak‾=B−1Ak≤0\overline{A_k} = B^{-1}A_k ≤0Ak=B1Ak0,对于约束条件 xB=B−1b−B−1NxNx_B = B^{-1}b - B^{-1}Nx_NxB=B1bB1NxN ,意味着需要上升,二者相互矛盾,故无界。
证明:构造 KaTeX parse error: Undefined control sequence: \pmatrix at position 5: d = \̲p̲m̲a̲t̲r̲i̲x̲{-\overline{A_k…,有 Ad=0Ad=0Ad=0,对于充分大正数 θ\thetaθ ,考察 cT(x‾+θd)c^T(\overline{x}+\theta d)cT(x+θd) (参照下找最优解)。
若存在最优解,可通过以下方法寻找:
令d=(−Ak‾0)+ek,ek 是第 k 个分量为 1,其余分量为 0 的 n 维向量。构造x^=x‾+θd=(b‾0)+θ(−Ak‾0)+θek=(b‾−θAk‾0)+θek为使 x^≥0,则要求 b‾−θAk‾≥0,故令 θ=min{bi‾aik‾∣aik‾>0,i=1,……,m}从而保证了 x^≥0,因而 x^ 是可行解。 \begin{aligned} \\ &\text{令}\quad d = \begin{pmatrix}-\overline{A_k}\\ 0\end{pmatrix} +e_k \qquad, e_k \text{ 是第 k 个分量为 1,其余分量为 0 的 n 维向量。} \\ &\text{构造} \hat{x} = \overline{x} + \theta d = \begin{pmatrix}\overline{b} \\ 0\end{pmatrix} + \theta \begin{pmatrix}-\overline{A_k}\\ 0\end{pmatrix} + \theta e_k = \begin{pmatrix}\overline{b}-\theta \overline{A_k} \\ 0\end{pmatrix} + \theta e_k \\ &\text{为使 }\hat{x} ≥ 0, \text{则要求 } \overline{b} - \theta \overline{A_k} ≥ 0,\text{故令 } \theta = min\{\frac{\overline{b_i}}{\overline{a_{ik}}}|\overline{a_{ik}} > 0, i=1,……,m \} \\ &\text{从而保证了 } \hat{x} ≥ 0,\text{因而 }\hat{x} \text{ 是可行解。} \end{aligned} d=(Ak0)+ek,ek 是第 k 个分量为 1,其余分量为 0  n 维向量。构造x^=x+θd=(b0)+θ(Ak0)+θek=(bθAk0)+θek为使 x^0则要求 bθAk0故令 θ=min{aikbiaik>0,i=1,……,m}从而保证了 x^0因而 x^ 是可行解。
单纯形方法总结
第 1 步——找一个初始的可行基 B;
第 2 步——求出对应的典式及检验数向量 ζ\zetaζ
第 3 步——求 ζk=max{ζj∣j=1,……,n}\zeta_k = max\{\zeta_j|j=1,……,n\}ζk=max{ζjj=1,……,n}
第 4 步——若 ζk≤0\zeta_k ≤ 0ζk0 ,停止;
已找到最优解 x=(xBxN)=(b‾0)x = \begin{pmatrix}x_B \\ x_N \end{pmatrix} = \begin{pmatrix}\overline{b}\\0\end{pmatrix}x=(xBxN)=(b0) 及最优值 z=cBTb‾z=c_B^T\overline{b}z=cBTb
第 5 步——若 Ak‾≤0\overline{A_k} ≤ 0Ak0,停止,原问题无界;
第 6 步——求 min{bi‾aik‾∣aik‾>0,i=1,……,m}=b‾aik‾min\{\frac{\overline{b_i}}{\overline{a_{ik}}}|\overline{a_{ik}} > 0, i=1,……,m \} = \frac{\overline{b}}{\overline{a_{ik}}}min{aikbiaik>0,i=1,……,m}=aikb
第 7 步——以 AkA_kAk 代替 ABrA_{B_r}ABr 得到新的基,转第 2 步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值