1-3 线性规划-单纯形法表、计算步骤与矩阵描述(1)
运 筹 学 课 件
12/3 4
z
1 2
x4
x5 42
x3
2 3
x4
1 3
x5
4
新典式
主元化 为1,主 元所在
x2
1 2
x4
6
列的其 余元素
x1
2 3
x4
1 3
x5
4
化为0
观察最后一个典式,所有检验数均为非负, 故其对应的基本可行解为最优解,即
X * 4,6,6,0,0T z* 42
去掉引入变量,得原问题的最优解为:
运筹学课件
目录
运筹学概论 第一章 线性规划基础 第二章 单纯形法 第三章 LP对偶理论 第四章 灵敏度分析 第五章 运输问题 第六章 整数规划 第七章 动态规划 第八章 网络分析
第二章 单纯形法
(SM-Simplex Method)
1947年,美国运筹学家Dantzig提出,原理是 代数迭代。
单纯形法中的单纯形的这个术语,与该方法毫 无关系,它源于求解方法的早期阶段所研究的一 个特殊问题,并延用下来。
CB B1b B1b
z
CB B1N CN X N X B B1NX N
CB B1b B1b
上述方程组的矩阵形式为
10
0 I
CB
B1N B1N
CN
z XB XN
CB B1b B1b
上式的系数增广阵称为对应于基B的单纯形表:
T(B)
CB B1b B1b
0 I
CB
B1N B1N
CN
形式的LP问题,必须解决三个问题: ⑴初始基本可行解的确定; ⑵解的最优性检验; ⑶基本可行解的转移规则。 这里先放一下⑴,研究⑵和⑶,为此,
单纯形法求解过程
单纯形法求解过程单纯形法是一种经典的线性规划求解方法,它是由乔治·达竞士等人在1947年提出的。
该方法的基本思想是,通过在单纯形空间内不断移动顶点的位置来寻找最优解。
单纯形法是目前广泛应用的线性规划求解方法之一,它求解线性规划问题可大大地简化计算过程。
单纯形法的求解过程包括以下几个步骤:1. 将线性规划问题转化为标准形式线性规划问题的标准形式为:$ \max_{x} \ \ c^T x $$s.t. \ Ax=b$$x\geq 0$其中,$x$是要求解的向量;$b$是一个常数向量;$A$是一个$m\times n$的矩阵;$c$是一个常数向量。
2. 初始化单纯形表因为单纯形法是通过移动顶点来寻找最优解的方法,因此需要初始化单纯形表。
单纯形表是将原始的约束条件表示为不等式形式时形成的。
例如,对于一个带有3个变量的线性规划问题,其单纯形表的形式如下:CB | X1 | X2 | X3 | X4 | RHS----|-----|-----|-----|-----|----0 | a11| a12| a13| 0 | b10 | a21| a22| a23| 0 | b20 | a31| a32| a33| 0 | b31 | z1 | z2 | z3 | 0 | 0其中,CB代表成本系数,X1、X2、X3、X4分别代表变量。
a11、a12、a13等代表矩阵A中的元素,b1、b2、b3代表矩阵b中的元素。
3. 选择进入变量和离开变量在单纯形表中,规定最后一列为等式右边的常数(RHS),即b。
在单纯形法的求解过程中,首先需要选择一个“进入变量”,即在单纯形表的第一行中,寻找一个系数为正的变量,使得将其加入目标函数后,目标函数值可以上升。
这里以X1为例,X1为进入变量。
接着,需要选择一个“离开变量”,即在单纯形表中,寻找一个使得添加X1变量后,约束条件不改变且取得约束条件中系数最小的一个变量离开。
第四节 单纯形法的计算步骤
上表中由于所有σ 上表中由于所有 j>0 ,表明已求得最优解 x1=4, x2=2, x3=0, x4=0, x5=0, x6=4, , , , , , , Z=14。 。 当确定x 为换入变量计算θ值时 值时, ◆当确定 6为换入变量计算 值时,有两个相 同的最小值: 同的最小值:2/0.5=4,8/2=4。任选其中一 , 。 个作为换出变量时, 个作为换出变量时,则下面表中另一基变 量的值将等于0,这种现象称为退化 退化。 量的值将等于 ,这种现象称为退化。含有 一个或多个基变量为0的基可行解称为 的基可行解称为退化 一个或多个基变量为 的基可行解称为退化 的基可行解。 的基可行解。
18
迭代
xB
次数
cB
x1
x2
x3
x4
x5 bi
θi
50
x1
100
0
0
0
50 0 100
1 0 0
0
0 0 1
0
1 -2 0
- 50
0 1 0
0
-1 1 1
- 50
50 50 250 -27500
2
x4 x2
σj
2010年8月
管理工程学院
18
《运筹学》 运筹学》
19
所有的检验数 σ j ≤ 0, 此基本可行解: 此基本可行解:
2010年8月
管理工程学院
5
《运筹学》 运筹学》
6
c1 … cl b b1´
⋮
c j→ cB c1
⋮
… cm … xm …0 …⋮ 0 …1 …
⋮
…cj …xj …a1j´ …⋮ a2j´ …⋮ amj´
… ck … cn … xk …xn …0 …⋮ 1 …0
管理学线性规划的图解法与单纯形解法
n
z z0 (c j z j )x j j m1
最优性检验和解的判别
再令
j c j z j j m 1, , n
称为检验数。
n
z z0 j x j j m1
在线性规划模型中,可以用检验数 j替代目标函 数中的价值系数cj。
最优解的判别定理
定理1 最优解的判别定理
若 X (0) b1,b2,L ,bm ,0,L ,0T 为对应于基 B 的一个基可行解,
仍取值为 0。令
x(1) mk
x(1) j
0
( j m 1,L , n, 但j m k)
x(1) i
bi ai,mk
i 1, 2,L m
X (1)
x(1) 1
,
x2(1),L
,xl(1)
,L
,
x(1) m
,
0,L
,
0,
x(1) mk
,
0,
L
,0T
新解必须满足非负约束,从而必须
x(1) i
对于一切 j=m+1,…,n,有检验数 j≤0,则 X(0)为最优解。
定理2 有无穷多最优解的判别定理
若 X (0) b1,b2,L ,bm ,0,L ,0T 为对应于基 B 的一个基可行解,
对于一切 j=m+1,…,n,有检验数 j≤0, 且存在某个非基变量对 应的检验数 m+k=0, 则该线性规划问题有无穷多个最优解。
当检验某个基可行解不是最优、也非无界,那么就 应该从该顶点(基可行解)处出发,寻找一个新的 能使目标函数值改进的相邻顶点(基可行解)。 注:称两个基可行解为相邻的,是指它们之间变换 且仅变换一个基变量。
具体的方法是:在基变量中,选出一个,让它变为 非基变量;同时,从非基变量中,选出一个,让它 变为基变量,从而构造一个新基。
单纯形法的计算步骤
运筹学基础及应用
解:化标准型
max
z 2 x1 x2 0 x3 0 x4 0 x5 5 x2 x3 15 6 x 2 x x4 24 1 2 x5 5 x1 x2 x1 , , x5 0
运筹学基础及应用
表1:列初始单纯形表 (单位矩阵对应的变量为基变量)
运筹学基础及应用
单纯形表
- Z x1基变量 x 2 ... xm XB 0 1 1E 0 单位阵 ....... 0 1 1 c c 0... c 1 2 m xm xNn 非基变量 1 .... X a1m 1 ...a1n a 2 m 1N...a 2 n
非基阵 ......
在上一节单纯形法迭代原理中可 知,每一次迭代计算只要表示出当前的约 束方程组及目标函数即可。
a1m 1 xm 1 ..... a1n xn b1 x1 x a2 m 1 xm 1 ..... a2 n xn b2 2 .......... .......... .......... ..... xm amm 1 xm 1 ..... amn xn bm Z c1 x1 ... cm xm cm 1 xm 1 ... cn xn 0
3
0 1 5/4 -15/2 1*3/2 0 0 1/4 -1/2 +0*15/2 检验数<=0 1 0 -1/4 3/2
cj z j
8.5
0
0
-1/4
-1/2
最优解为X=(7/2,3/2,15/2,0,0) 目标函数值Z=8.5
cj
CB
0 0 0
2
1
0最小的值对应 0 0
线性规划-讲义-3
4)、解的几种情况: 4)、解的几种情况: 唯一解 无穷多解-最优表中非基变量检验数有为0者。 无穷多解-最优表中非基变量检验数有为0 无界解 max, σ j > 0 但Pj ≤ 0 min, σ j < 0 但Pj ≤ 0 无可行解-最优表中人工变量在基中, 无可行解-最优表中人工变量在基中,且=0。 建模有问题 5)、 5)、退化解问题
表2 -2
-1/3 -1/3
两阶段法步骤 n 原问题 max S=Σ Cj xj n j=1 Σ aij xj =bi ( i=1,2, …,m) xj ≥ 0 m 作辅助问题 min W=Σ yi n i=1 Σ aij xj + yi =bi ( i=1,2, …,m) Xj , yi ≥ 0 阶段:解辅助问题, 第1阶段:解辅助问题,当进行到最优表时 ①、若W=0, 则得到原问题的一个基本可行 转入第2阶段 阶段。 解,转入第 阶段。 ②、若W>0, 则判定原问题无可行解 阶段: 第2阶段:用求出的初始基可行解求最优解。 阶段 用求出的初始基可行解求最优解。
人工变量: x6 , x7 人工变量:
cj
XB b*
0
x1
0
x2
0
x3
0
x4
0
x5
-1
x6
-1
x7
x4 11 3 x6 x7 1 - W’ 0
XB b*
1 -4 -2
0
x1
-2 1 0
0
x2
1 2 1
0
x3
1 0 0
0
x4
0 -1 0
0
x5
0 1 0
-1
x6
0 0 1
-1
x7
单纯形法表的解题步骤
单纯形法表的解题步骤单纯形法表结构如下:j c →对应变量的价值系数i θB Cb Xb1x 2x 3x " j x基变量的价值系数基变量 资源列θ规则求的值j σ检验数①一般形式若线性规划问题标准形式如下:123451231425max 23000284164120,1,2,5j z x x x x x x x x x x x x x j =++++++=⎧⎪+=⎪⎨+=⎪⎪≥=⎩"取松弛变量345,,x x x 为基变量,它对应的单位矩阵为基。
这样就得到初始可行基解:()()00,0,8,16,12TX =。
将有关数字填入表中,得到初始单纯形表,如表1-1所示:表 1-1 ()()00,0,8,16,12TX =j c →2 3 0 0 0i θB C b X b1x 2x 3x 4x 5x0 3x 8 1 2 1 0 0 4 04x16 4 0 0 1 0 -5x12 0 [4] 0 0 1 3j σ2 3 0 0 0若检验数均未达到小于等于0,则对上表进行调整。
选择上表中检验数最大的列,该列对应的非变量为入基变量;再应用θ规则该列对应的各基变量对应的θ值,选出其中最小的一行,该行对应的基变量为出基变量。
修改单纯形表,对各行进行初等变换,确保基变量组成的矩阵为单为矩阵。
修改后的单纯形表如表1-2所示:表 1-2 ()()10,3,2,16,0TX =检验数12,0σσ>,则进行继续调整,调整后的单纯形法表如表1-3所示:表 1-3 ()()22,3,0,8,0TX =表1-3中, 50σ>,则继续进行调整,调整结果如表1-4所示:表 1-4 ()()34,2,0,0,4TX =检验数0j σ≤,这表示目标函数值已不可能再增大,于是得到最优解:()()3*4,2,0,0,4TX X ==*14z =②带人工变量现有线性规划问题:12312312313123min 321142321,,0z x x x x x x x x x x x x x x =−++−+≤⎧⎪−++≥⎪⎨−+=⎪⎪≥⎩ 将上述线性规划问题用大M 法求解,在约束条件中加入松弛变量4x ,剩余变量5x ,人工变量6x ,7x 得到:1234567123412356137min 300211423210,1,2,,7j z x x x x x Mx Mx x x x x x x x x x x x x x j =−++++++−++=⎧⎪−++−+=⎪⎨−++=⎪⎪≥=⎩"其中,M 是一个任意大的正数。
第01-03章线性规划(2)
三、建立线性规划模型的步骤:
确定决策变量; 确定决策变量; 明确约束条件并用决策变量的线性等式或不等 式表示; 式表示; 用决策变量的线性函数表示目标, 用决策变量的线性函数表示目标,并确定是求 极大(Max)还是极小(Min) 极大(Max)还是极小(Min); 根据决策变量的物理性质研究变量是否有非负 性
方 案1 方 案2 方 案3 方 案4 方 案5 方 案6 方 案7 方 案8 2.9 m 1 2 0 1 0 1 0 0 2.1 m 0 0 2 2 1 1 3 0 1.5 m 3 1 2 0 3 1 0 4 7.4 7.3 7.2 7.1 6.6 6.5 6.3 6.0 合 计 0 0.1 0.2 0.3 0.8 0.9 1.1 1.4 剩 料 余 头
2.LP问题的典式 2.LP问题的典式 Z=CX → Z= CBXB+CNXN AX=b → BXB+NXN=b X≥0 XB=B-1b - B-1NXN Z= CB(B-1b- B-1NXN)+CNXN = CB B-1b+ (CN- CB B-1N)XN IXB + B-1NXN = B-1b
cj→ cB XB x2 x5 x6 cj - zj
。。。。
3 b 8/3 x1 2/3 -4/3 5/3 -1/3
5 x2 1 0 0 0
4 x3 0 5 4 4 ……….
0 x4 1/3 -2/3 -2/3 -5/3
0 x5 0 1 0 0
0 x6 0 0 1 0
14/3 20/3
x2 x3 x1 cj - zj
1 0 0 0
0 1 0 0
15/41 -6/41 -2/41 -45/41
8/41 5/41 -12/41 -24/41
第3章05-单纯形表法
第3章05单纯形表法同学们大家好,前面我们讲了单纯形法的原理,它的整个过程看似很复杂,但实际上,单纯形法的全部计算过程,可以简单地在一张类似增广矩阵的表格上进行,这种表格我们称为单纯形表,所以,今天我们就来学习线性规划模型的单纯形表法。
给定一个可行基,可以画出一张单纯形表。
单纯形表的行标是n个变量以及右端项b,列标是m个基变量以及检验数行σ。
所以,用矩阵的形式把它表示出来,就如下表所示我们注意到,像B,所以,是与原方程组等价的。
最后一行是检验数C-C B B-1A,右下角是-C B B-1b,它恰好是这个基B所对应的可行解的目标函数值的相反数。
用单纯形表法求解线性规划模型时,有下面的步骤:单纯形表法求解线性规划问题的步骤:Step1.转换一般的线形规划模型为标准型,并写出A,b,C。
Step2找初始基本可行解,写出B,B-1,X B,C B。
Step3计算单纯形表中的各矩阵B-1A,B-1b,C-C B B-1A,-C B B-1b,并构造初始单纯形表。
Step4判断基本最优解。
Step5换基迭代,返回Step4。
第一步是将一般的线性规划模型转化为标准形,并写出约束矩阵A,右端项b,以及价值向量C。
第二步,找初始的基本可行解。
根据上一讲单纯形法的原理,你要注意的是,我们总是从约束矩阵A里面选一个单位阵出来作为初始基,在右端项非负的条件下,这样选出来的单位阵一定是可行基,也就是找到了初始的基本可行解。
而如果约束矩阵A中没有单位阵,我们将会通过引入人工变量构造出一个单位阵,这种构造方法我们将在后面进行详细介绍。
初始基选出来之后,我们就能写出B,B-1,以及基变量X B和基变量所对应的价值向量C B。
第三步,计算B-1A,B-1b,C-C B B-1A,-C B B-1b,这样就可以把初始单纯形表写出来。
第四步,判断当前的基本可行解是不是最优解?按照我们上一讲介绍的单纯形法的原理,如果检验数行中所有的检验数都小于等于0,当前的基本解就是最优解;如果有一个非基变量的检验数是正的,而且它所对应A中的列的项都小于等于0,那么这个时候是无界解。
单纯形法解题步骤
三、单纯形法的解题步骤第一步:作单纯形表.)(1)把原线性规划问题化为标准形式;)(2)找出初始可行基,通常取约束方程组系数矩阵中的单位矩阵;)(3)目标函数非基化;)(4)作初始单纯形表.第二步:最优解的判定.(1) 若所有检验数都是非正数,即,则此时线性规划问题已取得最优解.(2) 若存在某个检验数是正数,即,而所对应的列向量无正分量,则线性规划问题无最优解.如果以上两条都不满足,则进行下一步.第三步:换基迭代.,并确定所在列的非基变量为进基变量.(1)找到最大正检验数,设为(2)对最大正检验数所在列实施最小比值法,确定出主元,并把主元加上小括号.主元是最大正检验数所在列,用常数项与进基变量所对应的列向量中正分量的比值最小者;替换出基变量,从而得到新的基变量.也就是主元所在(3)换基:用进基变量(4)利用矩阵的行初等变换,将主元变为1,其所在列其他元素都变为零,从此得到新的单纯形表;(5)回到第二步,继续判定最优解是否存在,然后进行新一轮换基迭代,直到问题得到解决为止.例3 求.解(1)化标准型:令,引进松弛变量,其标准型为求(2)作单纯形表:在约束方程组系数矩阵中的系数构成单位矩阵,故取为基变量,目标函数已非基化了,作初始单纯形表并“换基迭代”(见表6.8).表 6.8(3)最终结果:此时检验数均为非正数,线性规划问题取得最优解,最优解为标函数取得最优值.目性规划问题的最优解为:.原线目标函数的最优值为14,即.例4 用单纯形方法解线性规划问题.求.解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵(1、2行,3、4列构成),取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数, 经整理后,目标函数非基化了.作单纯形表,并进行换基迭代(见表6.9).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量进基.表 6.9目前最大检验数,其所在列没有正分量,所以该线性规划问题没有最优解.例5用单纯形方法解线性规划问题.求解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵,取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数,经整理得,目标函数已非基化.作单纯形表,并进行换基迭代(见表6.10).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量x2进基,先将主元化为1,然后再将主元所在列的其他元素化为零.表 6.10至此,检验数均为非正数,故得基础可行解.原问题的最优解为:.最优值为6,即.如果我们再迭代一次,将基变量出基,非基变量进基(见表6.11).表 6.11可得到另一个基础可行解,原问题的最优解为:,最优值仍为6,说明该线性规划问题有无穷多最优解,其最优解均为6.如何知道线性规划问题有无穷多最优解呢?这主要反映在单纯形表中.如果非基变量所对应的检验数为0,我们可对此列继续进行换基迭代,就可以得到另一个基础可行解.以此作下去,可得到许多基础可行解,即相对应的最优解有无穷多个.(4) 011 0。
浅析单纯形法的矩阵计算
文化视野浅析单纯形法的矩阵计算鄢 丽 重庆师范大学数学科学学院摘要:在运筹学中,求解线性规划问题的单纯形法的矩阵计算中涉及的基矩阵的逆矩阵的求法比较繁琐,学生在这一步的计算上很容易出错。
本文通过寻找每次迭代的新的基矩阵,然后直接利用高等代数中求逆矩阵的方法得出其逆矩阵,结果避免了每次需要计算换入变量的系数列向量,判断主元素,以及换出变量在原基向量中的位置等一系列繁琐的步骤。
关键词:单纯形法;基矩阵;逆矩阵中图分类号:G642 文献识别码:A 文章编号:1001-828X(2018)018-0387-02一、单纯形法的矩阵计算在大学本科课程中有一门《运筹学》,其中求解线性规划问题的一般方法是单纯形法。
下面我们介绍《运筹学》这本教材中关于单纯形的矩阵计算。
设线性规划问题为,目标函数:约束条件:其中目标函数的系数(C B,C N)分别对应于基变量X B和非基变量X N,系数矩阵分为(B,N)两块,B为基矩阵,N为非基矩阵,b为资源系数。
在单纯形法的计算步骤中真正要用的数字只有基变量的值,非基变量的检验数和换入变量列的系数,即和。
可见最关键是矩阵的计算。
以下介绍在《运筹学》一书中关于矩阵的计算方法,其他计算步骤在此省略。
1.计算换入变量x k在本次表中的系数列向量(在此指本次单纯形表中的基矩阵的逆矩阵);2.将上述列向量变换为;3.将变换后的列向量取代m×m的单位阵的第l列,即;4.于是下个单纯形表中新基的逆矩阵。
笔者在教学过程中发现学生在学习这一节时很容易出错,因为(1)非基变量的列向量在每次迭代后都会发生变化,不能直接用原始的列向量P k,而需要计算;(2)需要观察换入变量的列向量中的主元素,以此进行变换得到;(3)需要观察换出变量在原基向量中的位置以确定取代单位阵中的第几列得到E。
这一系列的过程使学生觉得过程太过繁琐,还没有直接在单纯形表上计算思路更清晰。
为了解决这一问题,关键还在于寻求一种简洁的求基矩阵的逆矩阵的方法。
第一章线性规划及单纯形法
第一章线性规划及单纯形法6.6单纯形法小结Drawingontheexampl,thetwoaxisinterceptsareplotted.2、求初始基可行解并进行最优性检验Cj比值CBXBb 检验数?jx1x2x3x4x53500081010012020103634001x3x4x5000035000令非基变量x1=0,x2=0,找到一个初始基可行解:x1=0,x2=0,x3=8,x4=12,x5=36,σj>0,此解不是最优(因为z=3x1+5x2+0x3+0x4+0x5)即X0=(0,0,8,12,36)T,此时利润Z=03、寻找另一基可行解Cj比值CBXBb检验数?jx1x2x3x4x53500081010012020103634001x3x4x5000035000-12/2=636/4=9主元首先确定入基变量再确定出基变量检验数?j81010060101/2012300-21x3x2x5050-30300-5/20Cj比值CBXBb检验数?jx1x2x3x4x53500081010012020103634001x3x4x5000035000-12/2=636/4=9令x1=0,x4=0,得x2=6,x3=8,x5=12,即得基可行解X1=(0,6,8,0,12)T此时Z=30σ1=3>0,此解不是最优迭代4、寻找下一基可行解Cj比值CBXBb检验数?jx1x2x3x4x53500081010060101/2012300-21x3x2x5050-30300-5/208-4检验数?j40012/3-1/360101/204100-2/31/3x3x2x1053-42000-1/2-1令x4=0,x5=0,得x1=4,x2=6,x3=4,即X0=(4,6,4,0,0)T?j<0最优解:X=(4,6,4,0,0)T最优值:Z=42小结:单纯形表格法的计算步骤①将线性规划问题化成标准型。
②找出或构造一个m阶单位矩阵作为初始可行基,建立初始单纯形表。
单纯形法求解线性规划的步骤
单纯形法求解线性规划的步骤1>初始化将给定的线性规划问题化成标准形式,并建立一个初始表格,它最右边的单元格都是非负的(否则无解),接下来的m列组成一个m*m的单元矩阵(目标行的单元格则不必满足这一条件),这m列确定了初始的基本可行解的基本变量,而表格中行用基本变量来表示2>最优化测试如果目标行的所有单元格都是非负的(除了最右列中代表目标函数值的那个单元格),就可以停止了,该表格代表了一个最优解,它的基本变量的值在最右列中,而剩下的非基本变量都为03>确定输入变量从目标行的前n个单元格中选择一个负的单元格(选择绝对值最大的那个)该单元格所在的列确定的输入变量及主元列4>确定分离变量对于主元列的每个正单元格,求出θ比率(如果主元格的单元格为负或为0,说明该问题是无解的,算法终止),找出θ比率最小的列,改行确定了分离变量和主元行5>建立下一张表格将主元行的所有单元格除以主元得到新的主元行,包括主元行在内的每一行,要减去改行主元列单元格和新主元行的成绩(除主元行为1外,这一步将主元列的所有单元格变成0).把主元列的变量名进行代换,得到新的单纯形表,返回第一步为求简单在本程序中,需要自己建立标准矩阵(比如加入松弛变量等工作需要用户自己完成),程序的输入有两种方式:1:指定行和列,由用户自行输入每一个元素SimpleMatrix(introw=0,int col=0);2:直接在主程序中初始化一个二维数组,然后利用构造函数SimpleMatrix(introw,int col,double **M) 来初始化和处理(本程序所用的实例用的是这种方法)程序中主要的函数以及说明~SimpleMatrix();销毁动态分配的数组.用于很难预先估计矩阵的行和列,所以在程序中才了动态的内存分配.需要重载析构函数bool Is_objectLine_All_Positive();其中row2为主元所在的行,col为主元所在的列,row1为要处理的行void PrintAnswer();数不合法"<<endl;}SimpleMatrix::SimpleMatrix(int row,int col){init(row,col);for(int i=0;i<rowLen;i++)cout<<"请输入矩阵中第"<<i+1<<"行的系数"<<endl; for(int j=0;j<colLen;j++)cin>>data[i][j];}?}SimpleMatrix::SimpleMatrix(int row,int col,double **M) {rowLen=row;colLen=col;init(row,col);for (int i=0;i<row;i++)for(int j=0;j<col;j++){data[i][j]=*((double*)M+col*i+j); ;}}SimpleMatrix::~SimpleMatrix(){if(colLen*rowLen != 0 ){for(int i=rowLen-1;i>=0;i--){if (data[i]!=NULL)delete[] data[i];}if (data!=NULL)delete[] data;}?}bool SimpleMatrix::Is_objectLine_All_Positive(){for(int i=0;i<colLen-1;i++)if(data[rowLen-1][i]<0)return false;return true;}bool SimpleMatrix::Is_MainCol_All_Negative(int col) {for(int i=0;i<rowLen;i++)if(data[i][col]>0)return false;return true;}bool SimpleMatrix::Is_column_all_Positive(int col){for(int i=0;i<rowLen-1;i++){return false;}return true;}int SimpleMatrix::InColumn(){int count=0;for(int i=0;i<colLen-1;i++){int temp=GetItem(rowLen-1,i);if(temp>=0){count++;}elsebreak;}double maxItem=fabs(GetItem(rowLen-1,count));int index_col;for(i=0;i<colLen-1;i++){double temp=GetItem(rowLen-1,i);if(temp<0){if(maxItem<=fabs(temp)){maxItem=fabs(temp);index_col=i;}}}return index_col;}int SimpleMatrix::DepartRow(int col){int index_row;int count=0;for(int i=0;i<rowLen;i++){if(data[i][col]<0)count++;elsebreak;}double minItem=data[count][colLen-1]/data[count][col]; index_row=count;double temp;for(i=0;i<rowLen-1;i++)temp=data[i][col];if(temp>0){temp=data[i][colLen-1]/temp;if(temp<minItem){minItem=temp;index_row=i;}}}return index_row;}void SimpleMatrix::MainItem_To_1(int row,int col){double temp=GetItem(row,col);pp#include <iostream>#include ""using namespace std;int main(){double M[4][7]={{5,3,1,1,0,0,9},{-5,6,15,0,1,0,15},{2,-1,1,0,0,-1,5},{-10,-15,-12,0,0,0,}}; SimpleMatrix Matrix(4,7,(double **)M);if(5))//判断是否存在最优解{bool p=();//判断主元列是否全部为正,确定是否已经取得最优解while(!p){int col=();//确定主元所在的行if(col))//确定线性规划的解是否为无解的{cout<<"线性规划问题是无界的,没有最优解"<<endl;exit(EXIT_FAILURE);}else{int mainRow=(col);//确定主元所在的行(mainRow,col);//将主元所在的行做变换,使主元变成1int i=0;while(i<()){if(i!=mainRow){(i,mainRow,col);//处理矩阵中其他的行,使主元列的元素为0i++;}elsei++;}}}for(int i=0;i<();i++)//输出变换以后的矩阵,判断是否正确处理{for (int j=0;j<();j++){cout<<(i,j)<<" ";}cout<<endl;}p=();}();}elsecout<<"线性规划无解"<<endl;return0;}。
用单纯形法解决线性规划问题
盐城师范学院运筹学期末论文题目: 用单纯形法解决线性规划问题**: **二级学院: 数学科学学院专业: 数学与应用数学班级: 111 班学号: ********成绩评定:前言线性规划问题是数学以及日常生活中最基本的问题之一,如何快速有效的解决线性规划问题是数学家也在努力研究的科目之一。
以前中学时我们解决线性规划问题一般采用的是图解法,即画出所给条件的可行域,找出目标函数的最优解。
这种方法的优点是直观性强,计算方便,但缺点是只适用于问题中有两个变量的情况。
下面我们介绍另外一种方法—单纯形法,来解决图解法不能解决的问题。
1 单纯形法1.1 单纯形法的基本思路利用求线性规划问题基本可行解的方法求解较大规模的问题是不可行的。
有选择地取基本可行解,即从可行域的一个极点出发,沿着可行域的边界移动到另一个相邻的极点,要求新极点的目标函数值不比原目标函数值差。
在线性规划的可行域中先找出一个可行解,检验它是否为最优解,如果是最优解,计算停止;如果不是最优解,那么可以判断线性规划无有限最优解,或者根据一定步骤得出使目标函数值接近最优值的另一个基本可行解。
由于基本可行解的个数有限,所以总可以通过有限次迭代,得到线性规划的最优基本可行解或判定线性规划无有限最优解。
1.2 单纯形法的基本步骤第1步求初始基可行解,列出初始单纯形表。
对非标准型的线性规划问题首先要化成标准形式。
由于总可以设法使约束方程的系数矩阵中包含一个单位矩阵(P1,P2,…,Pm),以此作为基求出问题的一个初始基可行解。
为检验一个基可行解是否最优,需要将其目标函数值与相邻基可行解的目标函数值进行比较。
为了书写规范和便于计算,对单纯形法的计算设计了一种专门表格,称为单纯形表(见表1—1)。
迭代计算中每找出一个新的基可行解时,就重画一张单纯形表。
含初始基可行解的单纯形表称初始单纯形表,含最优解的单纯形表称最终单纯形表。
第2步:最优性检验如表中所有检验数c j−z j≤0,且基变量中不含有人工变量时,表中的基可行解即为最优解,计算结束。
运筹学第四版第二章线性规划及单纯形法
方案的制定受到那些现实条件制约:
确定约束条件
人力资源(劳动力)的限制: 9x1 4x2 360
设备工时的限制:
4x1 5x2 200
原材料资源的限制:
3x1 10x2 300
此外,决策变量的取值不应为负值即 x1 0, x2 0
6
综上所述,我们得到了这个问题的数学模型
目标函数 约束条件
大?
项目
Ⅰ
设备A (h)
0
设备B (h)
6
调试工序(h) 1
利润(元) 2
Ⅱ 每天可用能力
5
15
2
24
表1-2
1
5
1
12
其数学模型为:
max Z 2x1 x2
5x2 15
6xx11
2x2 x2
24 5
x1, x2 0
13
例3:捷运公司在下一年度的1~4月份的4个月内拟租用仓库
堆放物资。已知各月份所需仓库面积列于下表1-3。仓库租
借费用随合同期而定,期限越长,折扣越大,具体数字见表
1-4。租借仓库的合同每月初都可办理,每份合同具体规定
租用面积和期限。因此该厂可根据需要,在任何一个月初办
理租借合同。每次办理时可签一份合同,也可签若干份租用
面积和租用期限不同的合同。试确定该公司签订租借合同的
最优决策,目的是使所租借费用最少。
14
max Z 70 x1 120 x2
9x1 s.t. 43xx11
x1,
4x2 5x2 10x2 x2 0
360 200 300
资源约束
非负约束
其中 约束条件可记 s.t (subject to), 意思为“以… 为条件“、”假定“、”满足“之意。
第01-03章线性规划(1)
s.t.
x1+x2+x3≤7
x1-x2+x3≥2
-3x1+x2+2x3=5
x1,x2≥0
24
(3)
Min z = -3 x1 + 5 x2 + 8 x3 - 7 x4 s.t. 2 x1 - 3 x2 + 5 x3 + 6 x4 ≤ 28 4 x1 + 2 x2 + 3 x3 - 9 x4 ≥ 39 6 x2 + 2 x3 + 3 x4 ≤ - 58 x1 , x3 , x4 ≥ 0 解:首先,将目标函数转换成极大化: 令 z’ = -z = 3x1–5x2–8x3+7x4 ; 其次考虑约束,有3个不等式约束,引进松弛变 量x5 ,x6 ,x7 ≥0 ; 由于x2无非负限制,可令x2=x2’-x2”,其中x2’≥0 , x2”≥0 ; 由于第3个约束右端项系数为-58,于是把该式两 端乘以-1 。 25
矩阵,一般有0<m<n
A=[aij]m×n i=1,2,..,m;j=1,2,…,n是约束条件方程的系数
X=(x1,x2,…,xn)T b= (b1,b2,…,bn)T
17
二、标准形式
1.标准型的描写形式
繁写形式
Max z = c1x1 + c2x2 + … + cnxn
s.t. a11x1 + a12x2 + … + a1nxn = b1 a21x1 + a22x2 + … + a2nxn = b2 . . . am1x1 + am2x2 + … + amnxn = bm x1 ,x2 ,… ,xn
第3章 线性规划的单纯形法《管理运筹学》PPT课件
3.3 关于单纯形法的进一步讨论
根据以上思路,我们用二阶段法来求解下面例题: max z=3x1-x2-x3
x1-2x2+x3≤11 s.t. -4x1+x2+2x3≥3
,
C
CB CN
线性规划问题成为 max z=CBTXB+CNTXN+ CIT XI s.t. BXB+NXN+IXI=b XB,XN,XI≥0
3.2 单纯形法原理
这个线性规划问题可以用表3-1来表示:
表3-1称为初始单纯形表。可以看出,单纯形表中 直接包含了单纯形迭代所需要的一切信息。
3.2 单纯形法原理
3.1 线性规划的基本理论
1.可行区域的几何机构 考虑标准的线性规划问题:
min cT x
Ax b
s.t.
x
0
用Rn表示n维的欧式空间,这里x Rn,c Rn ,b Rn
,A Rmn . 不妨设可行区域 D {x Rn | Ax b, x 0} ,因此线性方程组 Ax b 相容,总可以把多余方程去掉,
3.2 单纯形法原理
1. 单纯形表的结构 设线性规划问题为 max z=CTX+CIT XI s.t. AX+XI=b X,XI≥0 设B是线性规划的一个可行基,为了表达简便,不妨
设这个基B包含在矩阵A中,即 A=[B,N]
3.2 单纯形法原理
变量X和目标函数系数向量C也相应写成:
X
XB XN
3.2 单纯形法原理
第三步:在基变量用非基变量表出的表达式中,观 察进基变量增加时各基变量变化情况,在进基变量增加 过程中首先减少到0的基变量成为“离基变量”.当进基 变量的值增加到使离基变量的值降为0时,可行解移动到 相邻的极点。
线性规划与单纯形法-计算步骤
max Z 3x1 5x2
x1
s.t.
3x1
x1 0
2x2 2 x 2 x2 0
4 12 18
第一次迭代 x2为入基, x4为出基 第二次迭代 x1为入基, x5为出基
X * (2, 6, 2, 0, 0) Z* 36
2.4 单纯形法计算步骤
3、确定进基变量(迭代的第一步)
确定进基变量对应于图解法的确定运动方向
x1
x3
8
3x1
2x2 4x2
x4
12
x5 36
3x1 5x2 0x3 0x4 0x5 Z
j
从目标函数-Z+3x1+5 x2 +0x3 +0x4+0x5 =0可知: 因为x2的系数大于x1的系数,即生产单位乙产品比甲产品利 润更高一些,故应优先多生产乙产品。即x2为进基
5 2
x4
0 x5
Z 30
④
x3
2 3
x4
1 3
x5
4 ①
x2
x1
1 2 x4
2 3 x4
1 3 x5
6 ② 4 ③
3x1 0x2
0 x3
5 2
x4
0 x5
Z 30 ④
④-3×③
x3
2 3
x4
1 3
x5
4 ①
x2
1 2
x4
6 ②
x1
2 3
x4
1 3
x5
4 ③
0
x1
STOP 包括三个步骤: 1、确定进基变量(进基) 2、确定出基变量(出基) 3、对新基可行解的求解(高斯消元)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CB XB 检验数
CB XB I 0
CN XN B N CN-CBB N
8
-1
B b
-1
-1
例:用单纯形表求解
max z 2 x1 3 x2 2 x1 x2 4 s.t. x1 2 x2 5 x , x 0 1 2
画初始单纯形表:
max z 2 x1 3 x2 4 2 x1 x2 x3 s.t. x1 2 x2 x4 5 x , x , x , x 0 1 2 3 4
School of Business ECUST
3.3.2 单纯形表结构
z c1b1 c2b ... cmbm m 1 c2 a2, m 1 ... cm am , m 1 xm 1 cm 1 c1a1, m 2 c2 a2, m 2 ... cm am , m 2 xm 2 cm 2 c1a1, ... n c2 a2 n ... cm amn xn cn c1a1
1-3 线性规划单纯形表、计算步骤与矩阵描述
1
3.3 单纯形法 3.3.1 单纯形法的一般思路+例子 3.3.2 单纯形表结构+例子 3.3.3 单纯形法的计算步骤 3.3.4 单纯形法的矩阵描述 3.4 大M法 3.5 两阶段法 4 几种特殊情况 4.1 无可行解 4.2 无界解 4.3 多重最优解 4.4 进基变量的相持 4.5 出基变量的相持
40 x2 25/8 1 5/8 35/4
0 x3 1 0 0 0
0 x4 0 1 0 0
0 x5 RHS 比值 -3/8 75/2 12 0 20 20 1/8 75/2 60 -25/4
当前基本可行解:(75/2, 0, 75/2, 20, 0) , Z=1875
16
40 0 50
x2 x4 x1 检验数
_ 3/1 8/2 4/1 -
j
1
1 0
2
0 1
0
1 0
0
0 1
0
0 0
0
0 2 1
j
x5
x3 x2 x1
1
1 0 0 1 0
0
0 0 1 0 0
T
0
0 1 0 0 0
-2
-2 2 1 -2 0
1
0 -1 0 1 -1
2
2 3 2
2/1
2/2 3/1 -
j
X 2,3, 2, 0, 0
假定:(1) 该线性规划问题的可行域不为空集; (2) 所有的可行解不退化; (3) 已找到一个初始可行基B(由A的前m个列向量 构成)。
School of Business ECUST
B
N
T
A P , P ,..., P , P ,...., P 1 2 m m 1 n
X x , x ,..., x , x ,..., x 1 2 m m 1 n XB XN
minZ=-x1 -2x 2 x3 4 x1 x2 x4 3 x5 8 x1 2x 2 x j 0 ,j 1,2,3,4,5
解:本题的目标函数是求极小化的线性函数, 可以令 则
Z' = -Z = x1 +2x 2
minZ=-x1 -2x 2 max Z ' x1 +2x 2
b 4 5
cj
CB 0 0 XB x3 x4
2 x1 2 1
3 x2 1 2
0 x3 1 0
0 x4 0 1
4/1 5/2
j
0 3 x3 x2
2
3/2 1/2 1/2 1 0
3
0 1 0 0 1
0
1 0 0 2/3 -1/3
0
-1/2 1/2 -3/2 -1/3 2/3 1 2 3/2 5/2 1 5
(1)找出初始可行基,给出初始基本可行解,建立 初始单纯形表。 (2)检验各非基变量的检验数,如果所有检验数都 大于等于0,则已得到最优解;否则,转下一步。 (3)负检验数最小对应的变量作为换入变量;极小 比值准则决定换出变量;迭代运算。
(4)重复(2)(3)直到得到最优解。
22
练习:求解下列线性规划问题
这两个线性规划问题具有相同的可行域和最优解,
只是目标函数相差一个符号而已。
School of Business ECUST
C CB 0 0 0 0 2 XB x3 x4 x5 x3 x2
1 x1 1 0 1
2 x2 0 1 2
0 x3 1 0 0
0 x4 0 1 0
0 x5 0 0 1 b 4 3 8 4 3
i 1 m
School of Business ECUST
单纯形原理
设标准的线性规划问题为 max z= s.t. CX AX=b X0 矩阵A可以分块记为A=[B,N] 相应地,向量X和C可以记为
XB X , C C B XN CN
6
AX=b可以写成 BXB+NXN=b 即 XB=B-1b-B-1NXN 对于一个确定的基B,目标函数z可以写成
min z x1 2 x2 x1 x2 3 x 2 1 s.t. 3x1 2 x2 1 x1 , x2 0
School of Business ECUST
3.3.4 单纯形法的矩阵描述
考虑标准形式的线性规划问题:
max z CX AX b s.t. X0
maxZ' =8 or minZ=-8
School of Business ECUST
因为非基变量x4的检验数σ4=0,由无穷多最优解判别定理,本例 的线性规划问题存在无穷多最优解。事实上若以x4为换入变量,以x3为 换出变量,再进行一次迭代,可得一下单纯形表:
C CB 0 2 1 XB x4 x2 x1 1 x1 0 0 1 0
x1 x2 : z CX c1, c 2,..., c m, c m 1,..., c n xm C B, C N x CB CN m 1 : xn
50 x1 0 0 1 0
40 x2 1 0 0 0
0 x3 8/25 -8/25 -5/25 -14/5
0 x4 0 1 0 0
0 x5 RHS 比值 -3/25 12 3/25 8 5/25 30 -26/5
当前基本可行解:(30, 12, 0, 8, 0) , Z=1980
17
例: 用单纯形表方法求解线性规划问题
j
2 3 x1 x2
j
0
0
-1/3
-4/3
最优解:x1=1,x2=2,x3=0,x4=0
School of Business ECUST
3.3.3 单纯形法的计算步骤(max)
(1)将线性规划问题转化为标准型,找出初始可行 基,给出初始基本可行解,建立初始单纯形表。 (2)检验各非基变量的检验数,如果所有检验数都 小于等于0,则已得到最优解;否则,转下一步。 (3)正检验数最大对应的变量作为换入变量;极小 比值准则决定换出变量;迭代运算。
(4)重复(2)(3)直到得到最优解。
11
习题
max s.t.
z=
50x1 3x1
+40x2 +5x2 x2 ≤150 ≤ 20
8x1
x1,
+5x2
x2
≤300
≥ 0
12
Байду номын сангаас
X2 60 50 40 30 20 10
A
X1=0
E
X5=0
D C
X4=0 X3=0
B
(2)
X2=0 50
(3) (1)
10
T
2 x2 0 1 0 0
0 x3 1/2 -1/2 1 0
0 x4 1 0 0 0
0 x5 -1/2 1/2 0 -1
b 1 2 4 8
j
最优解 X 4, 2, 0,1, 0 最优解的一般表示式
最优值
T
maxZ' =8 or minZ=-8
T
X (2,3, 2, 0, 0) (1 ) 4, 2, 0,1, 0 , 0 1.
i 1
School of Business ECUST
m
, j 1,2,..., n j c j ci aij
i 1
m
c1 c2 … cm cm+1 … cn
c1 c2 ... cm
m 1 ... a1 n 1 0 ... 0 a1, m 1 ... a2 n 0 1 ... 0 a2, ...... , m 1 ... amn 0 0 ... 1 am
0 0 … 0
cm 1
m i 1
j
….
cn
m i 1
ci ai, m 1 c a i i,n
School of Business ECUST
单纯形表 cj
CB XB
c1
x1
c2 … cm
x2 … xm
cm+1 … cn
xm+1 … xn
b
b1 b2 ... bm
20
30
40
X1
13
标准化
max z= s.t.
50x1 3x1
+40x2 +5x2 x2 +x3 +x4 +x5 x3, x4, x5 =150 = 20 =300 ≥ 0 (1) (2) (3)