单纯形法解释

单纯形法的理解


  • 理解单纯形法之前必须要知道一下若干定理或者知识。
  1. 对于Ax=b,A:m∗n,x:n∗1,b:n∗1Ax=b,\quad A:m*n,\quad x:n*1,\quad b:n*1Ax=b,A:mn,x:n1,b:n1,可以写成下列形式:
    Ax=(A1,A2,...An)(x1x2...xn)=A1x1+A2x2+...+Anxn=b Ax=(A^1,A^2,...A^n)(\begin{aligned}x_1\\x_2\\...\\x_n\end{aligned})=A^1x_1+A^2x_2+...+A^nx_n=b Ax=(A1,A2,...An)(x1x2...xn)=A1x1+A2x2+...+Anxn=b
    也就是说bbbAAA的列向量的线性组合,线性组合的系数就是Ax=bAx=bAx=b方程组的一个解。

  2. 对于线性优化:
    min(cTx)Ax=b∀xi≥0 min(c^Tx)\\ Ax=b\\ \forall x_i\ge0 min(cTx)Ax=bxi0
    其最优解一定满足下面的形式(basic solution):(同时,满足下述形式的basic solution不一定是最优的)
    x=(x1≥0,x2≥0,....xm≥0,xm+1=0,xm+2=0,..xn=0) x=(x_1\ge0,x_2\ge0,....x_m\ge0,x_{m+1}=0,x_{m+2}=0,..x_n=0) x=(x10,x20,....xm0,xm+1=0,xm+2=0,..xn=0)
    前面的m个数值对应基向量BBB的解,后面代表非基向量的解。(至于为什么,查资料)


判断是否是最优解

​ 对于上述的最优化问题,我们可以做出如下分解:
Ax=[B,N][xBxN]=BxB+NxN=b解得xb=B−1b−B−1NxN Ax=[B,N][\begin{aligned}x_B\\x_N\end{aligned}]=Bx_B+Nx_N=b\\ 解得\quad \quad x_b=B^{-1}b-B^{-1}Nx_N Ax=[B,N][xBxN]=BxB+NxN=bxb=B1bB1NxN
​ 其中B代表基向量构成的方阵,其秩为mmm,N为其他向量构成的矩阵。现在令xN=0x_N=0xN=0,得到xB=B−1bx_B=B^{-1}bxB=B1b。于是乎我们就得到了一个basic solution:
G=(B−1b,0,0,0,..0)=[xB,xN=0]根据引理1:b=x1B1+x2B2+..+xmBm+0Bm+1+0Bm+2+...+0Bn G=(B^{-1}b,0,0,0,..0)=[x_B,x_N=0]\\ 根据引理1:\\ b = x_1B_1+x_2B_2+..+x_mB_m+0B_{m+1}+0B_{m+2}+...+0B_{n} G=(B1b,0,0,0,..0)=[xB,xN=0]1b=x1B1+x2B2+..+xmBm+0Bm+1+0Bm+2+...+0Bn
为什么要令xN=0x_N=0xN=0呢?因为基于上面提到的引理2,最优解一定是basic solution,所以我们需要先找到一个basic solution,然后再判断是否是最优解。

​ 此时可以我们的最小化目标函数可以写成下面的形式:
f=cTx=cBTxB+cNTxN=cBT(B−1b−B−1NxN)+cNTxN=cBTB−1b+(cNT−cBTB−1N)xN(4) f=c^Tx=c_B^Tx_B+c^T_Nx_N=c_B^T(B^{-1}b-B^{-1}Nx_N)+c_N^Tx_N\\ =c_B^TB^{-1}b+(c_N^T-c_B^TB^{-1}N)x_N\tag{4} f=cTx=cBTxB+cNTxN=cBT(B1bB1NxN)+cNTxN=cBTB1b+(cNTcBTB1N)xN(4)
其中,cNT−cBTB−1Nc_N^T-c_B^TB^{-1}NcNTcBTB1N是一个1∗(n−m)1*(n-m)1(nm)形状的向量。

​ 回归到我们最初的目的,最小化fff的值。我们在上述的(3)(3)(3)式中得到一个basic solution,那么这个basic solution是否是最优解呢?这时我们需要看(4)(4)(4)式,前面项是常数项,只考虑后面的那一项。
(cNT−cBTB−1N)xN=σm+1xm+1+σm+2xm+2+...σnxn(5) (c_N^T-c_B^TB^{-1}N)x_N=\sigma_{m+1}x_{m+1}+\sigma_{m+2}x_{m+2}+...\sigma_{n}x_{n}\tag{5} (cNTcBTB1N)xN=σm+1xm+1+σm+2xm+2+...σnxn(5)
1. 如果对于∀σi>0,i∈(m+1,n)\forall \sigma_i\gt0, i\in (m+1,n)σi>0,i(m+1,n),那么想要满足fff最小,就必须令xm+1,xm+2,...,xnx_{m+1},x_{m+2},...,x_nxm+1,xm+2,...,xn都是0,一旦有一个非零,fff就会变大。因为我们(3)(3)(3)中得到的解GGG恰好满足xm+1,xm+2,...,xnx_{m+1},x_{m+2},...,x_nxm+1,xm+2,...,xn都是零,而且是基本解,所以G也是最优解。

2. 如果存在σi≤0,i∈(m+1,n)\sigma_i\le0,i\in (m+1,n)σi0,i(m+1,n),我们只要让对应的xi>0x_i>0xi>0,就能使(4)(4)(4)式变得更小。那么此时的G就不是最优解,因为G对应的xi=0x_i=0xi=0,所以他不是最优解。


找出入基

​ 承接上文,假设G不是最优解。也就是存在σi≤0,i∈(m+1,n)\sigma_i\le0,i\in (m+1,n)σi0,i(m+1,n)。也就是说,当xi>0x_i>0xi>0时,目标函数fff可以更小。也就是说(根据文章开头的引理2),xix_ixi对应的列向量应该时基向量(只有基向量对应的解才应该时大于等于0的)。所以应该把xix_ixi对应的列向量换进基向量的矩阵中。那么问题来了,如果存在多个σi\sigma_iσi小于0,到底应该换哪个呢?

按理说,换哪个都是可以的。但是我们的目标是更快的求出最小的fff,也就是让fff下降的最快,显然,在x等值的情况下,σi\sigma_iσi越小,σix\sigma_ixσix越小,fff也就下降的越快,因此,入基所对应的应该是
σm+i=min(σm+1,σm+2,...σn)且σm+i≤0(6) \sigma_{m+i}= min(\sigma_{m+1},\sigma_{m+2},...\sigma_n) 且\sigma_{m+i}\le0\tag{6} σm+i=min(σm+1,σm+2,...σn)σm+i0(6)
也就是矩阵A中的第m+im+im+i列(也是N中的第iii列:NiN_iNi)应该是基向量。


找出出基

​ 既然找到了入基NiN_iNi,怎么找到出基呢?回顾上面的内容,我们找到了一个basic solution G,但G不是最优解。虽然不是最优解,但仍然是一个可行解,仍然满足:
AG=A[xB,xN=0]T=[B,N][xB,xN=0]T=BxBT+N∗0=BxBT=b也就是BxBT=b(7) AG=A[x_B,x_N=0]^T=[B,N][x_B,x_N=0]^T=Bx_B^T+N*0=Bx_B^T=b\\ 也就是Bx_B^T=b\tag{7} AG=A[xB,xN=0]T=[B,N][xB,xN=0]T=BxBT+N0=BxBT=bBxBT=b(7)
这是根据公式(3)(3)(3)得到的(这里的xBx_BxB特指非最优解G中的xBx_BxB)。

​ 同时,我们由公式(6)(6)(6)得到,入基对应的列向量为NiN_iNi。考虑到B是基向量,那么其他任意向量都可以由B的列向量的线性组合来表示(上述的引理1)。那么列向量NiN_iNi也不例外,所以存在唯一向量yyy满足下面式子
Ni=y1B1+y2B2+...+ymBm=By(8) N_i=y_1B_1+y_2B_2+...+y_mB_m=By\tag{8} Ni=y1B1+y2B2+...+ymBm=By(8)
所以PPT中的By=NiBy=N_iBy=Ni就是这么来的。(为什么唯一呢?因为B满秩)

​ 所以我们根据(7)和(8)就可以得到PPT中的两个式子:
BxBT=bBy=Ni(9) Bx_B^T=b\\ By=N_i\tag{9} BxBT=bBy=Ni(9)
此外,根据引理1,我们知道,b是A的列向量的线性组合,线性组合的系数也是Ax=bAx=bAx=b的一个解。

在basic solution G中,我们知道NiN_iNi对应的系数是0,也就是b和NiN_iNi是没有关系的。但是根据上面的讨论,当xi>0x_i>0xi>0时,目标函数fff可以取得更小,我们假设NiN_iNi对应的系数为ξ>0\xi>0ξ>0。那么如何把b重新表示为B和NiB和N_iBNi的线性组合呢?我们只需要将(9)中的第二个式子乘以ξ\xiξ,再将第一个式子减去第二个式子就可以了。
ξBy=ξNiBxBT−ξBy=b−ξNi从而有:B(xBT−ξy)+ξNi=b(10) \xi By=\xi N_i\\ Bx_B^T-\xi By=b-\xi N_i\\ 从而有:B(x_B^T-\xi y)+\xi N_i=b\tag{10} ξBy=ξNiBxBTξBy=bξNiB(xBTξy)+ξNi=b(10)
所以就得到了PPT中的式子。

那么这个式子是什么意思呢。首先明确一下,xBTx_B^TxBT1∗m1*m1m的向量,y也是1∗m1*m1m的向量,ξ\xiξ时大于0的标量。

那么这个式子不就是B的列向量和NiN_iNi的线性组合吗。我们由(10)得到:
令xBT−ξy=t,t时1∗m的行向量Bt+ξNi=b从而有:b=t1B1+t2B2+...+tmBm+ξNi(11) 令x_B^T-\xi y = t,t时1*m的行向量\\ Bt+\xi N_i=b\\ 从而有:b=t_1B_1+t_2B_2+...+t_mB_m+\xi N_i\tag{11} xBTξy=t,t1mBt+ξNi=b:b=t1B1+t2B2+...+tmBm+ξNi(11)

但是我们知道最优解一定是basic solution(引理1),basic solution的特征由(2)给出。也就是说,basic solution中,基向量对应的解是m个大于等于0的分量。我们已知ξ>0\xi>0ξ>0,则ξ\xiξ是对应基向量的解的一个分量(线性组合的系数就是解)。所以对于t1,t2,...,tmt_1,t_2,...,t_mt1,t2,...,tm,不可能都大于0,若都大于0,则含有m+1m+1m+1个正数分量了,与引理矛盾。

那么既然t1,t2,...,tmt_1,t_2,...,t_mt1,t2,...,tm不可能都大于0,那么可不可以存在ti<0t_i<0ti<0呢?不可能,因为我们的约束条件要求xi≥0x_i\ge 0xi0

所以有下式:
t1,t2,...tm≥0且不能都大于0(12) t_1,t_2,...t_m\ge0\\ 且不能都大于0\tag{12} t1,t2,...tm00(12)
那么就只能让t中最小的数等于0了。(如果让不是最小的数为0,那么比他还小的数不就是负数了吗?)

t=xBT−ξyt=x_B^T-\xi yt=xBTξy,所以:
t≥0xBT−ξy≥0ξ≤xBTy又因为最小的t要等于0,所以ξ=min{(xBT)jyj∣yj>0} t\ge0\\ x_B^T-\xi y \ge 0\\ \xi \le \frac{x_B^T}{y}\\ 又因为最小的t要等于0,所以\\ \xi = min\{\frac{(x_B^T)_j}{y_j}|y_j>0\} t0xBTξy0ξyxBTt0ξ=min{yj(xBT)jyj>0}
这样就满足了tj=0t_j=0tj=0,也就是第j列并非基向量,需要换出去。到此,入基和出基均已经得到。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值