单纯形法
单纯形法新版
1 2
2 1
1 0
10,A 中的2阶可逆子阵有
1
B 1
0
10,其相应的基向量为P3
,
P 4
,
基变量为x
3
,
x
,X
4
B1
x 3 ; x 4
1
B 2
2
2 1
,
其相应的基向量为P 1
,
P 2
,
基变量为x
1
,
x
2
,
X
B2
x 1 。 x 2
问题:本例旳A中一共有几种基? —— 6个。
一般地,m×n 阶矩阵A中基旳个数最多有多少个? — —C m 个。 n
p 1
7
(0 0
0) 4
7;
3
360 90
3
4
[ ] 中表达进基列与出基行旳交叉元,下一张表将实 施以它为主元旳初等行变换(称高斯消去)。措施是: 先将主元消成1,再用此1将其所在列旳其他元消成0。
C X B b1
B
B
0
x 3
360
0
x 4
200
0
x 5
300
0
x 3
240
0
x 4
50
(1)先将模型化为原则型
Maxz 7 x1 12x2
9x 1 4x 2 x 3
5x 2 10 x
2
x 4
200
x 300 5
x
1, x
2, x , x , x
3
4
5
0
(2) 拟定初始基可行解、检验
1
B 0
1
,
B
b1
单纯形法
单纯形法simplex method求解线性规划问题的通用方法。
单纯形是美国数学家G.B.丹齐克于1947年首先提出来的。
它的理论根据是:线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。
顶点所对应的可行解称为基本可行解。
单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。
因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。
如果问题无最优解也可用此法判别。
根据单纯形法的原理,在线性规划问题中,决策变量(控制变量)x1,x2,…x n的值称为一个解,满足所有的约束条件的解称为可行解。
使目标函数达到最大值(或最小值)的可行解称为最优解。
这样,一个最优解能在整个由约束条件所确定的可行区域内使目标函数达到最大值(或最小值)。
求解线性规划问题的目的就是要找出最优解。
最优解可能出现下列情况之一:①存在着一个最优解;②存在着无穷多个最优解;③不存在最优解,这只在两种情况下发生,即没有可行解或各项约束条件不阻止目标函数的值无限增大(或向负的方向无限增大)。
单纯形法的一般解题步骤可归纳如下:①把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。
②若基本可行解不存在,即约束条件有矛盾,则问题无解。
③若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解。
④按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。
⑤若迭代过程中发现问题的目标函数值无界,则终止迭代。
用单纯形法求解线性规划问题所需的迭代次数主要取决于约束条件的个数。
现在一般的线性规划问题都是应用单纯形法标准软件在计算机上求解,对于具有106个决策变量和104个约束条件的线性规划问题已能在计算机上解得。
第三节 单纯形法
θi 32.5 40 25
5 7. 5
注意:单纯形法中, 注意:单纯形法中, 1.每一步运算只能用矩阵初等行 1.每一步运算只能用矩阵初等行 变换; 变换; 2.表中第3列的数总应保持非负 2.表中第 表中第3 (≥ 0); 3.当所有检验数均非正(≤ 0) 3.当所有检验数均非正 当所有检验数均非正( 得到最优单纯形表。 时,得到最优单纯形表。
8
1.初始单纯形表: 1.初始单纯形表: 初始单纯形表
CB XB b b1 b2 ┇ bm f
m
cn+1 xn+1 cn+2 xn+2 ┇ ┇ cn+m xn+m m -z
c1 x1 a11 a21 ┇ am1 σ1
… … … … ┇ … …
cn xn a1n a2n ┇ amn σn
m
cn+1 xn+1 1 0 ┇ 0 m 0
-z
15
在最优单纯形表中,非基变量的检验数不 在最优单纯形表中, 是正数,于是得到最优解为X 是正数,于是得到最优解为X*=(15,10,0,0,45)T 最优目标值为z =32500。注意到非基变量x 最优目标值为z*=32500。注意到非基变量x4 的检验数是0 如果选x 为进基变量, 的检验数是0,如果选x4为进基变量,迭代 还可以进行下去,但是最优值不会增大, 还可以进行下去,但是最优值不会增大, 而只有最优解改变,这就是多解的情况。 而只有最优解改变,这就是多解的情况。 下面再迭代一步,如表2 所示。 下面再迭代一步,如表2-9所示。
19
解:单纯形法求解过程如下表。 单纯形法求解过程如下表。
CB XB
0 0 0 -z 7 0 0 -z x1 x6 x7 x5 x6 x7
最优化方法第二讲 单纯形法
令 xˆ x d ,其中 0 ,取搜索方向 d (B1Am ,0, ,0,1,0, ,0) (a1k , amk ,0, ,0,1,0, ,0) 其非基变量(自由求知量)中第 k 个非基变量取值为 1,其它为 0。 故 xˆ x d = B1b a jk , 由于 x 0 ,可知 xˆ 0 为可行解。 当 时,目标值 cxˆ cB1b k 。
17
换入变量和换出变量的确定:
换入变量的确定— 最大减小原则
假设检验向量 N CN CBB1N ( m1, m2,, n )
若其中有两个以上的检验数为负,那么为了使目标函数 值下降得快些,通常要用“最大减小原则”,即选取最小 负检验数所对应的非基变量为换入变量,即若
min j j 0, m 1 j n mk
0, 1
i
m
( B1b)l ( B1Pmk )l
则选取对应的基变量 Xl 为换出变量。
19
4. 用初等变换求改进了的基本可行解——旋转运算
假设B是线性规划 min z CX , AX b, X 的0 可行基,则
AX
b
(B
N )
XB XN
b
(I , B1N )
XB XN
B1b
令非基变量 XN 0 ,则基变量 XB B1b。
。
(3)移至目标函数值有所改善的另一个基本
可行解,然后转会到步骤(2)。
3
其步骤如下: 找出一个初始可行解
是否最优
是
最优解
循
环
否
结束
转移到另一个目标函数 (找更小的基本可行解)
直到找出为止,核心是:变量迭代
4
1 确定初始的基本可行解
确定初始的基本可行解等价于确定初始的可行基,一旦初始 的可行基确定了,那么对应的初始基本可行解也就唯一确定.
运筹学第5章 单纯形法
0 0 1
在第一次找可行基时,所找到的基或为单位矩阵或为由单位矩阵的 各列向量所组成,称之为初始可行基,其相应的基本可行解叫初始基 本可行解。如果找不到单位矩阵或由单位矩阵的各列向量组成的基作 为初始可行基,我们将构造初始可行基,具体做法在以后详细讲述。
8Leabharlann §1 单纯形法的基本思路和原理
二、 最优性检验 所谓最优性检验就是判断已求得的基本可行解是否是最优解。
5
§1 单纯形法的基本思路和原理
线性规划解之间的关系:
1.可行解与最优解: 最优解一定是可行解,但可行解不一定是最优解。
2. 可行解与基本解: 基本解不一定是可行解,可行解也不一定是基本解。
3. 可行解与基本可行解: 基本可行解一定是可行解,但可行解不一定是基本可行解。
4. 基本解与基本可行解: 基本可行解一定是基本解, 但基本解不一定是基本可行解。
9
§1 单纯形法的基本思路和原理
2.最优解判别定理
对于求最大目标函数的问题中,对于某个基本可行解,如
果所有检验数 j≤0,则这个基本可行解是最优解。 下面我
们用通俗的说法来解释最优解判别定理。设用非基变量表示
的目标函数为: z z0 j xj jJ 由于所有的xj的取值范围为大于等于零,当所有的 j都小
由线性代数的知识知道,如果我们在约束方程组系数矩阵中找
到一个基,令这个基的非基变量为零,再求解这个m元线性方程组就
可得到唯一的解了,这个解我们称之为线性规划的基本解。
在此例中我们不妨找到
1 1 0 B3 1 0 0
为A的一个基,令这个基的非
1 0 1
基变量x1,s2为零。这时约束方程就变为基变量的约束方程:
第五章 单 纯 形 法
运筹学单纯形法
单纯形表
max z=x1+2x2 s.t. x1+x23 x2 1 x1, x2 0
Cj CB XB b 0 0 Z X3 3 X4 1 0 1 2 0 0
标准化
max z=x1+2x2 s.t. x1+x2+ x3 =3 x2 +x4=1 x1, x2 ,x3, x40
X1 X2 X3 X4 1 0 1 1 1 2 1 0 0 0 1 0
Z=x1+2x2 x1+x2+ x3 =3 x2 +x4=1 单纯形表
Cj
1
2
0
0
单纯形法原理 单纯形表 CB XB b
z=x1+2x2 x3 =3-x1-x2 x4=1 -x2
x2进基,x4离基
X1 X2 X3 X4
3/1 11
0
1 0
1 1
1 1
2 2 0 1 0 2 0 1 0 0 1 0 -1 0
max z=x1+2x2 s.t. x1+x2+x3 =3 x2 +x4=1 x1, x2, x3, x40
x1=0
(x1,x2,x3,x4)= (0,1,2,0), z=2 C (x1,x2,x3,x4)= (2,1,0,0), z=4,最优解
B
x4=0 x3=0
(x1,x2,x3,x4)= (0,0,3,1), z=0
1 0
0 0
0 1
0
CB XB b 0 2 Z Cj CB XB b 1 2 Z X1 2 X2 1 4 X3 2 X2 1 2 1 1 0 0
X1 X2 X3 X4 1 0 1 1 0 0 0 -1 1 -1
运筹学单纯形法
16
三、其他解旳情况 1、无穷多种解 例2 解LP问题:
min Z x1 2 x2 x3 0 x4 0 x5
xx51
1 2c 5 3c
其中c是满足非负性旳任意常数。
21
再由
x1,
x5
旳非负性,知:
x1 x2
1 2c c
0 0
x5 5 3c 0
解出 0 c 5 3
最优解为:
(2c 1, c,0,0,5 3c)T (其中0 c 5 )
3
最优值为:max S 1.
22
2、无最优解旳两种情况:
相应地,将 X 0代入目的函数得 Z ( X 0 ) 0
从数学角度看,若让非基变量 x1, x2 取值从零增长,
6
min Z 2x1 x2 0x3 0x4 0x5
相应旳目旳函数值Z也将随之降低。所以有可能找到一种 新旳基本可行解,使其目旳函数值有所改善。即进行基变
换,换一种与它相邻旳基。再注意到 x1 前旳系数-2比 x2
x3
6 x1 x1
2x2 x2
x4 x5
xi 0
i 1,,5
15 24 5
目前可行基{ x3, x4 , x5 }所相应旳基本可行解
X 0 (0,0,15,24,5)T
(相应可行域旳 o(0,0) )
显然不是最优。 因为从经济意义上讲, x1 0, x2 0
意味着该厂不安排生产,所以没有利润。
2
单纯形法
四、单纯形法的实现——单纯形表
例1:煤电油例 Max Z=7 x1 +12x2 9 x1 +4x2≤360 化为标准型 s.t. 4x1 +5x2 ≤200 3 x1 +10x2 ≤300 x1 , x2≥0 s.t. Max Z=7 x1 +12x2 9 x1 +4x2 +x3 4x1 +5x2 3 x1 +10x2 x1 ,…,x5≥0 +x4 =360 = 200
•
“≥”型约束,减松弛变量;
练习1.3 请将例1.1的约束化为标准型
Maxz = 7 x1 + 12 x 2 ⎧9 x1 + 4 x 2 ≤ 360 ⎪4 x1 + 5 x 2 ≤ 200 s.t.⎨ 3x1 + 10 x 2 ≤ 300 ⎪x , x ≥ 0 ⎩ 1 2
则约束化为
= 360 ⎧9 x1 + 4 x 2 + x3 ⎪4 x + 5 x 2 + x4 = 200 s.t.⎨ 1 3 x1 + 10 x 2 + x5 = 300 ⎪x , x , x , x , x ≥ 0 ⎩ 1 2 3 4 5
例4 下面为某线性规划的约束
=1 ⎧ x1 + 2 x2 + x3 ⎪ + x4 = 3 ⎨2 x1 − x2 ⎪ x1 , , x4 ≥ 0 ⎩ 请例举出其基矩阵和相应的基向量、基变量。
解:
本例中, A = ⎡1 2 1 0⎤,A中的2阶可逆子阵有 ⎢ 2 − 1 0 1⎥ ⎦ ⎣
问题:本例的A中一共有几个基?—— 6个。
易见,增加的松弛变量的系数恰构成一个单位阵I。
一般地,记松弛变量的向量为 X s,则
单纯形法原理
单纯形法原理
单纯形法是线性规划中常用的一种方法,用于求解极值问题。
它的基本思想是通过不断迭代的方式,逐渐接近最优解。
单纯形法的基本步骤如下:
1. 将线性规划问题转化为标准型。
标准型的约束条件为≤,目标函数为最大化,且所有变量的取值范围为非负数。
2. 利用人为变量引入的方法,将标准型问题转化为初始单纯形表。
3. 选择合适的初始基变量,并计算出对应的基变量解。
4. 计算单纯形表中的评价函数。
如果所有评价函数中的系数都为非负数,则当前基变量解为最优解,过程结束。
否则,继续进行下一步。
5. 选择进入变量和离开变量。
进入变量是指取值为负的评价函数系数对应的变量,离开变量是指进入变量在当前基变量解中最先达到0的变量。
6. 迭代计算,通过变换基变量,逐渐接近最优解。
具体的计算方式为将进入变量对应列调整为单位向量,同时更新初始单纯形表中其它列的数值。
7. 重复步骤4至步骤6,直至得到最优解为止。
值得注意的是,单纯形法的执行依赖于初始基变量的选择,不同的初始基变量可能会得到不同的最优解。
因此,在实际应用中,需要通过灵活选择初始基变量来提高求解效果。
运筹学第2章单纯形法
① ② ③
-2X4+X5 =12
得到新的基本可行解 X1 =(0,6,8,0,12)T
(1)、决定进基变量:1=--3, X1进基 (2)、决定离基变量:最小比值规则来确定主 元与离基变量.
则Xl为进基变量。 MIN(8/1,-,12/3)=12/3 此时可以确定X5为离基变量
Z
X(0) =(0, 0, 10, 15 )T
Z0 =0
Z-30X1-20X2 =0 选中X1从0↗,X2 =0 X3=10-(-X1 )0
X4=15-(-3X1 )0 求X1, X1→+ ,Z→+
2.2.3 单纯形法计算之例
2-3 人工变量法 (Artificial Variable)
+1/2X4
+X5 =42 =6
X3 +2/3X4 -1/3X5 =4
X2 +1/2X4
X1 -2/3X4+1/3X5=4 令X4 =X5 =0 X =(4, 6, 4, 0, 0)T Z =42
。此时4=1/2,
Z值不 再增大了,X值是最优基本解
5
=1,
* T * 即:X =(4,6) ,Z =42
检验数
当目标方程中基变量系数全为0时,非基 变量的系数可以作为检验当前的基本可 行解是否最优的标志,称之为检验数。
(2)、判定解是否最优 Z-3X1-5X2 =0 当X1从0↗或X2从0↗ Z从0↗ ∴ X0 不是最优解
(3)、由一个基可行解→另一个基可行解。 ∵ -5<-3 选X2从0↗,X1 =0 X3 =8 X4 =12-2X2 0 X2 12/2
N
沿边界找新 的基本可行解
结束
第五章 单纯形法
➢ 解决办法:保证右端项非负,找到一个 单位矩阵,必定是一个可行基。
二、单纯形法的基本思路和原理
➢ 如范例系数阵:
右端项非负
1 1 1 0 0 300 2 1 0 1 0 400 0 1 0 0 1 250
存在3阶单位阵 (初始可行基)
二、单纯形法的基本思路和原理
➢ 如令x1=0,x2=0,则 ➢ x3=300,x4=400,x5=250 ➢ 可得到解(0,0,300,400,250)
一、问题的提出
➢ 又如:令x3=0,x5=0, ➢ 由约束条件: ➢ x1+x2+x3=300 ➢ 2x1+x2+x4=400 ➢ x2+x5=250 ➢ 可得到解(50,250,0,50,0)
27500-50x3-50x5
二、单纯形法的基本思路和原理
➢ 典式Z= 27500-50x3-50x5
➢ 如果x3增加1,Z会怎样? ➢ 答案:Z减少50。 ➢ 如果x5的值增加1,Z会怎样? ➢ 答案:Z减少50 。 ➢ 可见要使Z增加,只有使x3和x5减少。
二、单纯形法的基本思路和原理
➢ x3,x5的取值是否有减少的可能? ➢ 分析:该解中非基变量 x1,x2的取值为
一、问题的提出
❖ 线性规划解的集合关系:
基
可
本最
基
行
可优
本
解
行解
解
解
一、问题的提出
❖显然,将搜索范围控制在基本可行 解内,将大大减少搜索工作量。
❖但是,即使取得一个基,得到的解 还不一定可行。
❖如何才能保证取得一个可行基呢?
一、问题的提出
单纯形法
XB =B-1b-B-1NX N 代入目标函数,使目标函数用非基变量
表示,即:
Z=cT X=(cTB
cTN) XB XN =cTBXB +cTN XN =cTB (B-1b-B-1NXN )+cTN XN
=cTBB-1b+(cTN -cTBB-1N)XN cBT B-1b+σNXN cBT B-1b+(σm+1,σm+1,
Z=CTBB-1b+(σm+1 ,
σm+k ,
xm+1
σ
n
)
CTB B-1b+σ m+k
xn
因为 m+k 0, 故当λ→+∞时,Z→-∞。
18
表格单纯形法
B
N
b
CBT
CNT
I
B-1N
B-1b
0
CNT -CBT B-1N
19
可将这些重要结论的计算设计成如下一个简单的表格, 即单纯形表来完成:
min z=-6x1-4x2
x3 =100-2x1-3x2
+x4 =120-4x1-2x2
令 有 则有:
XN=(0,0)T XB=(100,120)T X(1)=(0,0,100,120)T为对应于基B1的基可行解。
问:
X(1)是否最优呢?——否
因为: x1和x2在目标函数中的系数为正,当x1↑,z ;x2↑,z 。
础上寻找一个新的基本可行解,并使目标函数值有所改善。
具体做法是:
先从检验数为负的非基变量中确定一个换入变量,使它从非基
单纯形法的原理(一)
单纯形法的原理(一)单纯形法(Simplex Method)什么是单纯形法单纯形法是一种用于解决线性规划问题的方法。
它通过迭代的方式,逐步接近最优解。
在线性规划中,我们需要在一组线性约束条件下,最大化或最小化一个线性目标函数。
单纯形法是一种基于几何性质的方法,它通过在可行域内移动到较优区域,逐步逼近最优解。
线性规划问题的标准形式在介绍单纯形法之前,我们先来了解一下线性规划问题的标准形式。
线性规划问题可以写成如下形式:最大化目标函数:[Z = c_1x_1 + c_2x_2 + … + c_nx_n]满足约束条件:[a_{11}x_1 + a_{12}x_2 + … + a_{1n}x_n ≤ b_1][a_{21}x_1 + a_{22}x_2 + … + a_{2n}x_n ≤ b_2]…[a_{m1}x_1 + a_{m2}x_2 + … + a_{mn}x_n ≤ b_m]其中,(x_1, x_2, …, x_n) 是决策变量,(c_1, c_2, …, c_n) 是目标函数的系数,(a_{ij}) 是约束条件的系数,(b_i) 是约束条件的右侧常数。
单纯形法的基本思想单纯形法的基本思想是通过在可行域内移动,逐步逼近最优解。
其算法步骤如下:1.初始化阶段:将线性规划问题转化为标准形式,并构造初始的基可行解。
2.优化阶段:根据当前的基可行解,计算出相应的目标函数值。
3.检验最优解:如果当前的基可行解是最优解,则停止算法;否则,继续下一步。
4.确定进入和离开变量:根据当前基可行解,确定进入变量和离开变量。
5.计算新的基可行解:通过计算和替换,得到新的基可行解。
6.回到步骤2:不断迭代,直到获得最优解。
单纯形法的关键概念在单纯形法中,有几个关键概念需要了解:1.基变量(Basic Variables):在线性规划问题中,基变量是指与基矩阵中的列相对应的决策变量。
基变量的值通过基可行解来确定。
2.非基变量(Nonbasic Variables):非基变量是指未在基可行解中出现的决策变量。
单纯形法基本原理及实例演示
③计算各非基变量xj的检验数j=Cj-CBPj ′,若所有j≤0,则问题已得
到最优解,停止计算,否则转入下步。
④在大于0的检验数中,若某个k所对应的系数列向量Pk≤0,则此问
题是无界解,停止计算,否则转入下步。
⑤根据max{j|j>0}=k原则,确定xk为换入变量(进基变量),再按 规则计算:=min{bi/aik| aik>0}=bl/ aik 确定xBl为换出变量。建 立新的单纯形表,此时基变量中xk取代了xBl的位置。
⑥以aik为主元素进行迭代,把xk所对应的列向量变为单位列向量,即 aik变为1,同列中其它元素为0,转第③ 步。
线性规划的例子
max z 4x1 3x2 2x1 2x2 1600 5x1 2.5x2 2500 x1 400 x1, x2 0
线性规划--标准化
● 引入变量:s1,s2,s3
检验系数区
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
x1
x2
s1
s2
s3
50 100 0 0 0
比值
b bi ai 2
1 Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
X2
s1
s2 S3
量
50 100 0 0 0
比值
b bi ai 2
1 1 1 0 0 300
C向量
max z 50 100 0 0
CB
CN
x1
x2
0•
1 1 1
1 0 0
0 1 0
单纯形法
单纯形法(不可以解空集问题,无初始解)一、单纯形法的基本思想1、顶点的逐步转移即从可行域的一个顶点(基本可行解)开始,转移到另一个顶点(另一个基本可行解)的迭代过程,转移的条件是使目标函数值得到改善(逐步变优),当目标函数达到最优值时,问题也就得到了最优解。
2.需要解决的问题:(1)为了使目标函数逐步变优,怎麽转移?(2)目标函数何时达到最优——判断标准是什么?(3)初始解的寻找二、单纯形法原理(用代数方法求解LP)第一步:引入非负的松弛变量(x3 x4 x5)和剩余变量(算完后剩余的资源)x3,x4,x5, 将该LP化为标准型第二步:寻求初始可行基(单位阵对应的),确定基变量第三步:写出初始基本可行解(很多之中找一个,必令原x为0)和相应的目标函数值两个关键的基本表达式:① 用非基变量表示基变量的表达式② 用非基变量表示目标函数的表达式第四步:分析两个基本表达式,看看目标函数是否可以改善?① 分析用非基变量表示目标函数的表达式非基变量前面的系数均为正数(必为负数才可以),所以任何一个非基变量进基都能使Z值增加通常把非基变量前面的系数叫“检验数”②选哪一个非基变量进基?排在最前面的负检验数对应的非基变量③确定出基变量“最小比值原则”(或θ原则)见本如果x2≤0,会出现什麽问题?最小比值原则会失效!基变换新的基变量——x2, x3,x4;新的非基变量x1, x5;写出用非基变量表示基变量的表达式:可得新的基本可行解X(1)=(0,3,2,16,0)T⑤写出用非基变量表示目标函数的表达式:检验数仍有正的第五步:上述过程何时停止?当用非基变量表示目标函数的表达式中,非基变量的系数(检验数)全部非正(0时表无穷解,负时表唯一解)时,当前的基本可行解就是最优解!为什麽?分析用非基变量表示目标函数的表达式,如果让负检验数所对应的变量进基,目标函数值将下降!(2)表格设计依据:将-Z 看作不参与基变换的基变量,把目标函数表达式改写成方程的形式,和原有的m 个约束方程组成一个具有n+m+1个变量、m+1个方程的方程组:取出系数写成增广矩阵的形式:⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛+++01100001000010212121222221111211mn n n n m mn m m nnc c c c c c b a a a b a a a b a a a-Z ,X n+1,…,X n+m 所对应的系数列向量构成一个基用矩阵的初等行变换将该基变成单位阵,这时 变成0,相应的增广矩阵变成如下形式:⎪⎪⎪⎩⎪⎪⎪⎨⎧=+++++-=++++=++++=+++++++++++01122112211222222121111212111m n m n n n n n mm n n mn m m n n n n n n x c x c x c x c x c Z bx x a x a x a b x x a x a x a b x x a x a x a其中, , j=1,2,…,n ;增广矩阵的最后一行就是用非基变量表示目标函数的表达式, (j=1,2,…,n)就是非基变量的检验数。
§2.2单纯形法
Maxz 7 x 12 x
1
Maxz 7 x1 12x2 0x3 0x4 0x5
3) 当模型中有某变量 xk 没有非负要求, 称为自由变量, 则可令 x x x ,x ,x 0
/ // / // k k k k k
化为标准型。 4) 若某个bi<0,两边乘(-1) 5) 对负变量 x j 0 ,换元设 xj x j 0
2. 最优性检验
问题:用什么检验? —— 目标。
1 1
X 而目标z CX (C C ) C (B b B N X ) C X X C B b (C C B N ) X
记 C C B N,则当 0 时,当前基可行解为最 优。
1
方法:计算每个变量 x 的检验数 c C B P ,
1
若 0, 则当前解为最优;否则 非最优。
问题:非最优的特征为何?
至少有某个检验数 0。
3. 寻找更好的基可行解(换基迭代) (基变换)
由于基可行解与基对应,即寻找一个新的基可行 解,相当于从上一个基B0变换为下一个新的基B1,因此, 本步骤也称为基变换。 进基
1 1 1 1
360 90 4
[ ] 中表示进基列与出基行的交叉元,下一张表将实行以它为主 元的初等行变换(称高斯消去)。方法是:先将主元消成1,再用此1将 其所在列的其余元消成0。
特点: (1) 目标函数求最大值 (2) 约束条件都为等式方程; (3) 非负约束:决策变量xj为非负; 右端常数项bi非负。
标准型的矩阵表示:
Maxz CX AX b s.t. X 0
其中,A 的秩为m(m n) , b 0。
单纯形法
定理2.2 定理
在已知一个基本可行 初始基本可行解)的前提下, 解(初始基本可行解)的前提下, 使用单纯形法求解线性规划时, 使用单纯形法求解线性规划时,若 每次迭代得出的基本可行解的基变 量均大于零(称为非退化), ),则算 量均大于零(称为非退化),则算 法必有限步终止。 法必有限步终止。
P22
min z = 9 10 x1 +27 x3 s.t. x2 = 5 + x1 3x3 x4 = 6 2 x1 + 4 x3 x1 , x2 , x3 , x4 ≥ 0 T 是否为(2.9)的最优解 判断 (0,5,0,6) 是否为(2.9)的最优解
1 0 0 0 1 0
T
(2.9)
-2 1 7
0 0 1 0 -1/5 2/5 3/5 1/5
4 2 5 16 3 4 3 17
从表中知( , , , , ) 从表中知(4,3,3,0,0)T为最优 略去松弛变量, 解,略去松弛变量,得:
x = (4,3)
T
——最优解 最优解Fra bibliotekz = 17
——最优值 最优值
§2.5
大M法 法
引入:问题提出, 引入:问题提出,当初始 基本可行解不知道时, 基本可行解不知道时,如何 求解? 求解? 先利用容许的运算使右列 为非负, 为非负,然后在中心部位人 工地添加一个单位子块。 工地添加一个单位子块。
最优解的读法: 最优解的读法: 单位子块中1所对应的变量取相应右列的值, 单位子块中 所对应的变量取相应右列的值,不在 所对应的变量取相应右列的值 单位子块位置中的变量取值为0。 单位子块位置中的变量取值为 。而右下端元素变号 即为LP的最优值 的最优值。 即为 的最优值。 单纯形法的步骤: 单纯形法的步骤:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-2014(1)专业课程实践论文题目:单纯形法求解线性规划
对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。
设初始基为B ,然后执行如下步骤:
(1)解b Bx B =,求得b B x B 1-=,令0=N x ,计算目标函数值B B x c f =以()m i b i ,,2,1 =记b B 1-的第i 个分量。
(2)计算单纯形乘子w , B C B w =,得到1-=B C w B ,对于非基变量,计算判别数i i B i i i c p B c c z -=-=-1δ,令 {}i i R
i k c z -=∈max δ,R 为非基变量集合。
若判别数0≤k δ,则得到一个最优基本可行解,运算结束;否则,转到下一步。
(3)解k k p By =,得到k k p B y 1-=;若0≤k y ,即k y 的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4)。
(4)确定下标r ,使⎭
⎬⎫⎩⎨⎧>=>0min 0:tk tk t y t rk r y y b y b tk ,且, B x 为离基变量。
k x 为进基变量,用k P 替换Br P ,得到新的基矩阵B ,返回步骤(1)。
对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。
对于极大化问题,应令
{}j j k k c z C Z -=-min
function [x,fval,it,op]=singl(c,a,b)
%求解如下线性规划问题的单纯形法函数
%max cx 其中c=[c1 c2 ]
%s.t ax<=b(其中b>=0)
%函数形式function [x,fval,it,op]=singl(c,a,b) %输出中x为最优解
%fval为最优值
%it为迭代次数
%无最优解op=0
%有最优解op=1
%初始解设为x=[zeros(1,n),ones(1,m)]; [m,n]=size(a);
A=[a eye(m) b;c zeros(1,m+1)];
C=[c,zeros(1,m)];
fval=0;
op=1;
it=0;
e=zeros(1,m);
cb=zeros(1,m);
for j=1:m+n
r(j)=C(j)-cb*A(1:m,j);
end
d=find(r>0);
l=length(d);
while l>0
for s=1:l
if d(s)>=n+1 & A(:,d(s))<=0
op=0;
break
end
end
if op==1
[d1,j]=max(r);
for i=1:m
if A(i,j)>0
e(i)=A(i,end)/A(i,j);
else
e(i)=inf;
end
end
[g h]=min(e);
for w=1:m+1
if w==h
A(w,:)=A(w,:)/A(h,j);
else
A(w,:)=A(w,:)-A(h,:)*A(w,j)/A(h,j);
end
end
it=it+1;
cb(h)=C(j);
for j=1:m+n
r(j)=C(j)-cb*A(1:m,j);
end
d=find(r>0);
l=length(d);
end
end
for i=1:(m+n)
ix=find(A(:,i));
if(length(ix)==1)&(ix<=m)&(A(ix,i)==1)
x(i)=A(ix,end);
else
x(i)=0;
end
end
fval=-A(end,end);
四、算法实现
例1. 用单纯形法求解
.
0,,
153,102,
2,
32min 2121212121≥≤+≤+≤+-⋅--=x x x x x x x x t s x x z
解:(1)在MATLAB 界面中依次输入
c=[2 3];
a=[-1 1;1 2; 3 1];
b=[2;10;15];
[x,fval,it,op]=singl(c,a,b)
(2)得到下图所示的结果(其中it 为迭代次数,无最优解 0=op ,有最优
解1=op )。
(3)从图中读出最优解:0,3,3,454321=====x x x x x ,
若把引进的松弛变量略去,则最优解为()T x 3,4*=,最优值为17*-=z 。
.0,,
124,
164,
82,
32min 21212121≥≤≤≤+⋅--=x x x x x x t s x x z
解:(1)在MATLAB 界面中依次输入
c=[2 3];
a=[1 2;4 0; 0 4];
b=[8;16;12];
[x,fval,it,op]=singl(c,a,b)
(2)得到下图所示的结果(其中it 为迭代次数,无最优解 0=op ,有最优
解1=op )。
(3)从图中读出最优解:4,0,0,2,454321=====x x x x x ,
若把引进的松弛变量略去,则最优解为()T x 2,4*=,最优值为14*-=z 。
.
0,,,
93,62,
12,
2max 32121321321321≥≤+-≤-+≤++⋅+-=x x x x x x x x x x x t s x x x z
解:(1)在MATLAB 界面中依次输入
c=[1 -2 1];
a=[1 1 1;2 1 -1;-1 3 0];
b=[12;6;9];
[x,fval,it,op]=singl(c,a,b)
(2)得到下图所示的结果(其中it 为迭代次数,无最优解 0=op ,有最优
解1=op )。
(3)从图中读出最优解:15,0,0,6,0,6654321======x x x x x x ,
若把引进的松弛变量略去,则最优解为()T x 6,0,6*=,最优值为 12*=z
.
0,,,4
,1232,
642,
532min 4321431432143214321≥≤++≤+-+≤-++⋅-+--=x x x x x x x x x x x x x x x t s x x x x z
解:(1)在MATLAB 界面中依次输入
c=[2 1 -3 5];
a=[1 2 4 -1;2 3 -1 1; 1 0 1 1];
b=[6;12;4];
[x,fval,it,op]=singl(c,a,b)
(2)得到下图所示的结果(其中it 为迭代次数,无最优解 0=op ,有最优
解1=op )。
(3)从图中读出最优解:
0,0,3
14,4,0,38,07654321=======x x x x x x x , 若把引进的松弛变量略去,则最优解为T
x ⎪⎭⎫ ⎝⎛=4,0,38,0*,最优值为3
68*-=z 。