单纯形法迭代原理及解的判定

博客基于线性规划展开分析,介绍了单纯形法的迭代原理,包括对线性规划进行标准化、调整,通过初始基变量代入约束方程得出迭代解操作。还阐述了单纯形法的最优性检验,即检验当前解是否最优,若不是则确定换入换出变量,并给出相关计算和检验流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写于:2024年1月4日晚
修改:


基于以下线性规划做分析,max⁡z=∑j=1ncjxj s.t. {∑j=1naijxj≤bi(i=1,2,…,m)xj≥0(j=1,2,…,n)\begin{aligned} & \max \mathrm{z}=\sum_{j=1}^n c_j x_j \\ & \text { s.t. }\left\{\begin{array}{l} \sum_{j=1}^n a_{i j} x_j \leq b_i(i=1,2, \ldots, m) \\ x_j \geq 0(j=1,2, \ldots, n) \end{array}\right. \end{aligned}maxz=j=1ncjxj s.t. {j=1naijxjbi(i=1,2,,m)xj0(j=1,2,,n)

标准化上述线性规划,得:max⁡z=∑j=1ncjxj s.t. {∑j=1naijxj+xi′=bi(i=1,2,…,m)xj≥0(j=1,2,…,n)\begin{aligned} & \max \mathrm{z}=\sum_{j=1}^n c_j x_j \\ & \text { s.t. }\left\{\begin{array}{l}\sum_{j=1}^n a_{i j} x_j+x_i^{\prime}=b_i(i=1,2, \ldots, m) \\ x_j \geq 0(j=1,2, \ldots, n)\end{array}\right. \end{aligned}maxz=j=1ncjxj s.t. {j=1naijxj+xi=bi(i=1,2,,m)xj0(j=1,2,,n)

为减少变量数以便于表示,将线性规划调整(主要是将松弛变量用 xix_ixi 表示,其余变量用 xjx_jxj 表示)为max⁡z=∑j=1ncjxj s.t. {∑i=1mPixi+∑j=m+1nPjxj=bxj≥0(j=1,2,…,n)\begin{aligned} & \max \mathrm{z}=\sum_{j=1}^n c_j x_j \\ & \text { s.t. }\left\{\begin{array}{l} \sum_{i=1}^m \mathbf{P}_i x_i+\sum_{j=m+1}^n \mathbf{P}_j x_j=\mathbf{b} \\ x_j \geq 0(j=1,2, \ldots, n) \end{array}\right. \end{aligned}maxz=j=1ncjxj s.t. {i=1mPixi+j=m+1nPjxj=bxj0(j=1,2,,n)

其中,Pi\mathbf{P}_iPi 为 m 维标准单位列向量,Pj=[a1,ja2,j…am,j]\mathbf{P}_j=\left[\begin{array}{c} a_{1, j} \\ a_{2, j} \\ \ldots \\ a_{m, j} \end{array}\right]Pj=a1,ja2,jam,jP=[10…0a1,m+1…a1n01…0a2,m+1…a2n………0al,m+1alj…00…1am,m+1…amn]\mathbf{P}=\left[\begin{array}{cccc:ccc}1 & 0 & \ldots & 0 & a_{1, m+1} & \ldots & a_{1 n} \\ 0 & 1 & \ldots & 0 & a_{2, m+1} & \ldots & a_{2 n} \\ \ldots & \ldots & \ldots & 0 & a_{l, m+1} & a_{l j} & \ldots \\ 0 & 0 & \ldots & 1 & a_{m, m+1} & \ldots & a_{m n}\end{array}\right]P=1000100001a1,m+1a2,m+1al,m+1am,m+1alja1na2namnb=[b1b2…bm]\mathbf{b}=\left[\begin{array}{c}b_1 \\ b_2 \\ \ldots \\ b_m\end{array}\right]b=b1b2bm


单纯形法–迭代原理

设初始基变量中前 m\mathrm{m}m 个为基变量,即 X0=(x10,x20,…xm0,0,…,0)T\mathbf{X}^0=\left(x_1^0, x_2^0, \ldots x_m^0, 0, \ldots, 0\right)^{\mathrm{T}}X0=(x10,x20,xm0,0,,0)T

X0\mathbf{X}^0X0 代入约束方程,得到 ∑i=1mPixi0=b\sum_{i=1}^m \mathbf{P}_i x_i^0=\mathbf{b}i=1mPixi0=bPj=∑i=1mPiaij(j=m+1,m+2,…,n)\mathbf{P}_j=\sum_{i=1}^m \mathbf{P}_i a_{i j}(j=m+1, m+2, \ldots, n)Pj=i=1mPiaij(j=m+1,m+2,,n)

再令 θ>0\theta>0θ>0θ(Pj−∑i=1mPiaij)=0\theta\left(\mathbf{P}_j-\sum_{i=1}^m \mathbf{P}_i a_{i j}\right)=0θ(Pji=1mPiaij)=0

∑i=1mPixi0=b\sum_{i=1}^m \mathbf{P}_i x_i^0=\mathbf{b}i=1mPixi0=bθ(Pj=∑i=1mPiaij)=0\theta\left(\mathbf{P}_j=\sum_{i=1}^m \mathbf{P}_i a_{i j}\right)=0θ(Pj=i=1mPiaij)=0 相加,可得 ∑i=1mPixi0+θ(Pj−∑i=1mPiaij)=∑i=1m(xi0−θaij)Pi+θPj=b\sum_{i=1}^m \mathbf{P}_i x_i^0+\theta\left(\mathbf{P}_j-\sum_{i=1}^m \mathbf{P}_i a_{i j}\right)=\sum_{i=1}^m\left(x_i^0-\theta a_{i j}\right) \mathbf{P}_i+\theta \mathbf{P}_j=\mathbf{b}i=1mPixi0+θ(Pji=1mPiaij)=i=1m(xi0θaij)Pi+θPj=b

即存在 X1=(x11−θalj,x21−θa2j,…xm1−θamj,0,0,…,θ,…,0)T\mathbf{X}^1=\left(x_1^1-\theta a_{l j}, x_2^1-\theta a_{2 j}, \ldots x_m^1-\theta a_{m j}, 0,0, \ldots, \theta, \ldots, 0\right)^{\mathrm{T}}X1=(x11θalj,x21θa2j,xm1θamj,0,0,,θ,,0)T 满足约束 ∑j=1nPjxj=b\sum_{j=1}^n \mathbf{P}_j x_j=\mathbf{b}j=1nPjxj=b

X1\mathbf{X}^1X1 为基可行解,还需满足:所有分量全部大于等于 0;非零分量个数小于等于 m\mathrm{m}m 个。也就是需要使 xi1−θaij(i=1,2,…,m)x_i^1-\theta a_{i j}(i=1,2, \ldots, m)xi1θaij(i=1,2,,m) 中至少存在一个等于 0,其余均大于 0 。已知 θ>0\theta>0θ>0,若存在一个 aij>0a_{i j}>0aij>0,且 θ=min⁡{xiaij∣aij>0}\theta=\min \left\{\frac{x_i}{a_{i j}} \mid a_{i j}>0\right\}θ=min{aijxiaij>0},即可满足条件。


基于以上分析,单纯形表中迭代解操作为:xlx_lxl 作为换出变量,xjx_jxj 作为换入变量,通过行倍乘化 alja_{lj}alj 为 1,再将 Pj\mathbf{P}_jPj 化为标准单位向量。

P=[10…000a1,m+1a1,m+2…a1,ja1,n−1a1,n01…000a2,m+1a2,m+2…a2,ja2,n−1a2,n00……00a3,m+1a3,m+2……a3,n−1a3,n………1……………[alj]……00……10am−1,m+1am−1,m+2……am−1,n−1am−1,n00…001am,m+1am,m+2…am,jam,n−1am,n](m∗n)\mathbf{P}=\left[\begin{array}{cccccc:cccccc} 1 & 0 & \ldots & 0 & 0 & 0 & a_{1, m+1} & a_{1, m+2} & \ldots & a_{1, j} & a_{1, n-1} & a_{1, n} \\ 0 & 1 & \ldots & 0 & 0 & 0 & a_{2, m+1} & a_{2, m+2} & \ldots & a_{2, j} & a_{2, n-1} & a_{2, n} \\ 0 & 0 & \ldots & \ldots & 0 & 0 & a_{3, m+1} & a_{3, m+2} & \ldots & \ldots & a_{3, n-1} & a_{3, n} \\ \ldots & \ldots & \ldots & 1 & \ldots & \ldots & \ldots & \ldots & \ldots & {\left[a_{l j}\right]} & \ldots & \ldots \\ 0 & 0 & \ldots & \ldots & 1 & 0 & a_{m-1, m+1} & a_{m-1, m+2} & \ldots & \ldots & a_{m-1, n-1} & a_{m-1, n} \\ 0 & 0 & \ldots & 0 & 0 & 1 & a_{m, m+1} & a_{m, m+2} & \ldots & a_{m, j} & a_{m, n-1} & a_{m, n} \end{array}\right]_{\left(m* n\right)}P=100000100000100001000001a1,m+1a2,m+1a3,m+1am1,m+1am,m+1a1,m+2a2,m+2a3,m+2am1,m+2am,m+2a1,ja2,j[alj]am,ja1,n1a2,n1a3,n1am1,n1am,n1a1,na2,na3,nam1,nam,n(mn)


单纯形法–最优性检验

检验当前解是否为最优解,若不是确定换入换出变量。

由线性规划可得:

xi=bi−(ai,m+1xm+1+ai,m+2xm+2+…+ai,nxn)=bi−∑j=m+1naijxjx_i=b_i-\left(a_{i, m+1} x_{m+1}+a_{i, m+2} x_{m+2}+\ldots+a_{i, n} x_n\right)=b_i-\sum_{j=m+1}^n a_{i j} x_jxi=bi(ai,m+1xm+1+ai,m+2xm+2++ai,nxn)=bij=m+1naijxj

z=∑j=1ncjxj=∑i=1mcixi+∑j=m+1ncjxj=∑i=1mci⋅(bi−∑j=m+1naijxj)+∑j=m+1ncjxj=∑i=1mcibi−∑i=1mci∑j=m+1naijxj+∑j=m+1ncjxj=∑i=1mcibi−∑j=m+1n(∑i=1mci⋅aijxj−cj⋅xj)=∑i=1mcibi+∑j=m+1n(cj−∑i=1mciaij)xj\begin{aligned} & z=\sum_{j=1}^n c_j x_j=\sum_{i=1}^m c_i x_i+\sum_{j=m+1}^n c_j x_j=\sum_{i=1}^m c_i \cdot\left(b_i-\sum_{j=m+1}^n a_{i j} x_j\right)+\sum_{j=m+1}^n c_j x_j=\sum_{i=1}^m c_i b_i-\sum_{i=1}^m c_i \sum_{j=m+1}^n a_{i j} x_j+\sum_{j=m+1}^n c_j x_j \\ & =\sum_{i=1}^m c_i b_i-\sum_{j=m+1}^n\left(\sum_{i=1}^m c_i \cdot a_{i j} x_j-c_j \cdot x_j\right)=\sum_{i=1}^m c_i b_i+\sum_{j=m+1}^n\left(c_j-\sum_{i=1}^m c_i a_{i j}\right) x_j \end{aligned}z=j=1ncjxj=i=1mcixi+j=m+1ncjxj=i=1mci(bij=m+1naijxj)+j=m+1ncjxj=i=1mcibii=1mcij=m+1naijxj+j=m+1ncjxj=i=1mcibij=m+1n(i=1mciaijxjcjxj)=i=1mcibi+j=m+1n(cji=1mciaij)xj

z0=∑i=1mcibi\mathrm{z}_0=\sum_{i=1}^m c_i b_iz0=i=1mcibizj=∑i=1mciaijz_j=\sum_{i=1}^m c_i a_{i j}zj=i=1mciaij,于是,z=z0+∑j=m+1n(cj−zj)xj=z0+∑j=m+1nσjxj\mathrm{z}=\mathrm{z}_0+\sum_{j=m+1}^n\left(c_j-z_j\right) x_j=z_0+\sum_{j=m+1}^n \sigma_j x_jz=z0+j=m+1n(cjzj)xj=z0+j=m+1nσjxj

根据如下流程图检验解的情况:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值