最优化——单纯形法,单纯形表的求取

最优化——单纯形法,单纯形表的求取最优化 单纯形法一般性线性规划标准型为对象总结其基本步骤 max z nbsp s t nbsp P1x1 P2x2 Pnxn b 1 c1x1 c2x2 cnxn z 2 xj 0 1 j n begin array ll max amp z text s t amp P 1 x 1 P 2 x 2 cdots P n x n vec b 1 amp c 1 x 1 c 2 x 2

最优化——单纯形法

步骤一:求广义基本可行解

已知一个可逆方阵 B = ( P j ( 1 ) , P j ( 2 ) , ⋯   , P j ( m ) ) B=\left(P_{j(1)}, P_{j(2)}, \cdots, P_{j(m)}\right) B=(Pj(1),Pj(2),,Pj(m)) 满足
B − 1 b ⃗ ≥ 0 B^{-1} \vec{b} \geq 0 B1b
0

其中 1 ≤ j ( i ) ≤ n , ∀ 1 ≤ i ≤ m , 1 \leq j(i) \leq n, \forall 1 \leq i \leq m, 1j(i)n,1im, B B B 是线性规划标准型 的可行基阵

B B B可以把线性约束(1) P 1 x 1 + P 2 x 2 + ⋯ + P n x n = b ⃗ P_{1} x_{1}+P_{2} x_{2}+\cdots+P_{n} x_{n}=\vec{b} P1x1+P2x2++Pnxn=b
改写为
⇔ ( P j ( 1 ) , ⋯   , P j ( m ) ) ( x j ( 1 ) ⋮ x j ( m ) ) + P j ( m + 1 ) x j ( m + 1 ) + ⋯ + P j ( n ) x j ( n ) = b ⃗ ⇔ ( x j ( 1 ) ⋮ x j ( m ) ) + ( B − 1 P j ( m + 1 ) ) x j ( m + 1 ) + ⋯ + ( B − 1 P j ( n ) ) x j ( n ) = B − 1 b ⃗ \begin{array}{l} \Leftrightarrow\left(P_{j(1)}, \cdots, P_{j(m)}\right)\left(\begin{array}{c} x_{j(1)} \\ \vdots \\ x_{j(m)} \end{array}\right)+P_{j(m+1)} x_{j(m+1)}+\cdots+P_{j(n)} x_{j(n)}=\vec{b} \\ \Leftrightarrow \quad\left(\begin{array}{c} x_{j(1)} \\ \vdots \\ x_{j(m)} \end{array}\right)+\left(B^{-1} P_{j(m+1)}\right) x_{j(m+1)}+\cdots+\left(B^{-1} P_{j(n)}\right) x_{j(n)}=B^{-1} \vec{b} \end{array} (Pj(1),,Pj(m))xj(1)xj(m)+Pj(m+1)xj(m+1)++Pj(n)xj(n)=b
xj(1)xj(m)+(B1Pj(m+1))xj(m+1)++(B1Pj(n))xj(n)=B1b

可以得到一个基本可行解 X = ( x 1 . . . x n ) T X=(x_1…x_n)^T X=(x1...xn)T的表达式:

X B = ( x j ( 1 ) ⋮ x j ( m ) ) , ( x j ( m + 1 ) . . . x j ( n ) ) = 0 X_{B}=\left(\begin{array}{c}x_{j(1)} \\ \vdots \\ x_{j(m)}\end{array}\right),(x_{j(m+1)}…x_{j(n)})=0 XB=xj(1)xj(m),(xj(m+1)...xj(n))=0

步骤二:求检验数

C B = ( c j ( 1 ) , ⋯   , c j ( m ) ) T , C_{B}=\left(c_{j(1)}, \cdots, c_{j(m)}\right)^{T}, CB=(cj(1),,cj(m))T,

C B C_{B} CB左乘(3) 得 C B T X B + C B T P ^ j ( m + 1 ) x j ( m + 1 ) + ⋯ + C B T P ^ j ( n ) x j ( n ) = C B T P ^ n + 1 − − − ( 4 ) C_{B}^{T} X_{B}+C_{B}^{T} \hat{P}_{j(m+1)} x_{j(m+1)}+\cdots+C_{B}^{T} \hat{P}_{j(n)} x_{j(n)}=C_{B}^{T} \hat{P}_{n+1}—(4) CBTXB+CBTP^j(m+1)xj(m+1)++CBTP^j(n)xj(n)=CBTP^n+1(4)

目标函数(2)用 C B C_{B} CB可以写成: C B T X B + c j ( m + 1 ) x j ( m + 1 ) + ⋯ + c j ( n ) x j ( n ) = z − − − ( 5 ) C_{B}^{T} X_{B}+c_{j(m+1)} x_{j(m+1)}+\cdots+c_{j(n)} x_{j(n)}=z—(5) CBTXB+cj(m+1)xj(m+1)++cj(n)xj(n)=z(5)

步骤三:得到单纯形表

在这里插入图片描述

其中 ( P ^ j ( 1 ) , ⋯   , P ^ j ( m ) ) = I m , z ^ = C B T P ^ n + 1 = C B T B − 1 b ⃗ \left(\hat{P}_{j(1)}, \cdots, \hat{P}_{j(m)}\right)=I_{m}, \hat{z}=C_{B}^{T} \hat{P}_{n+1}=C_{B}^{T} B^{-1} \vec{b} (P^j(1),,P^j(m))=Im,z^=CBTP^n+1=CBTB1b

σ j = c j − C B T P ^ j = c j − C B T B − 1 P j , ∀ 1 ≤ j ≤ n \sigma_{j}=c_{j}-C_{B}^{T} \hat{P}_{j}=c_{j}-C_{B}^{T} B^{-1} P_{j}, \quad \forall 1 \leq j \leq n σj=cjCBTP^j=cjCBTB1Pj,1jn

σ 1 , ⋯   , σ n \sigma_{1}, \cdots, \sigma_{n} σ1,,σn 为检验数,可看出基变量检验数等于0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232442.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用分子生物学实验技术–整理「建议收藏」

    常用分子生物学实验技术–整理「建议收藏」常用的分子生物学实验技术:离心技术:是分离纯化蛋白质、酶、核酸(DNA、RNA)、细胞的最常用方法之一。电泳(electrophoresis):带电粒子在电场中向着与其所带电荷相反方向电极移动的

    2022年7月4日
    32
  • LNMP一键安装包

    LNMP一键安装包

    2021年10月8日
    32
  • maven—奇怪的bug「建议收藏」

    maven—奇怪的bug「建议收藏」 使用Mavenue构建项目时。需要使用@Aspect、@Before注解,但是一直报错,但时Maven项目中确实导入进但还是报错。然后百度也找不出所以然,浪费了好久时间,查找了下Maven仓库中的jar包,感觉这个jar包有问题,于是删除重新进行下载,最后一个就是重新下载后的jar包,对比还是发现了不同,至于为什么下载的不一样,我想着可能是网络问题吧。…

    2022年6月13日
    26
  • 用Erlang实现Time Wheel

    用Erlang实现Time Wheel

    2022年2月23日
    39
  • InnoDB中的索引类型

    InnoDB中的索引类型InnoDB数据引擎使用B+树构造索引结构,其中的索引类型依据参与检索的字段不同可以分为主索引和非主索引;依据B+树叶子节点上真实数据的组织情况又可以分为聚族索引和非聚族索引。每一个索引B+树结构都会有一个独立的存储区域来存放,并且在需要进行检索时将这个结构加载到内存区域。真实情况是InnoDB引擎会加载索引B+树结构到内存的BufferPool区域。聚簇索引(聚集索引)聚簇索引指的是这样的数据组织结构:索引B+树的每个叶子节点直接对应了真实的DataPage。并且B+树所有的叶子节点在最底层共同描

    2022年6月1日
    36
  • redis的雪崩和穿透_redis击穿 穿透 雪崩,怎么预防

    redis的雪崩和穿透_redis击穿 穿透 雪崩,怎么预防Redis雪崩:查询时Redis没有数据本来先从Redis里面查某个数据但是Redis中这个数据刚好被删除了,还没来得及更新一瞬间很多请求直接进入了Mysql进行查询而mysql承受不了太大压力,就会出现雪崩Redis穿透:跳过我们预想的数据本来先从Redis里面查某个数据但是Redis中没有这个数据那么请求就会始终从mysql中查询Redis没有起到作用Redis雪崩和Redis穿透的根本原因是:开发时,开发人员并未考虑到这些问题。Redis雪崩和Redis穿透的性质:大量

    2025年11月15日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号