图解法和单纯形法求解线性规划问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最大值为:
z =
16.2000
迭代次数:
i=
4
程序结果与例题结果一致。
例2求解下述线性规划问题
在命令窗口输入:
>> A=[1 1;2 1];b=[40;60];c=[3 2];
>> simplemethod(A,b,c);
即可得到结果:
已得到最优解:
X =
20 20 0 0
最大值为:
z =
100
迭代次数:
图解法和单纯形法求解以下线性规划问题
1.1
只含两个变量的线性规划问题,可以通过在平面上作图的方法求解,步骤如下:
(1)以变量x1为横坐标轴,x2为纵坐标轴,适当选取单位坐标长度建立平面坐标直角坐标系。由变量的非负性约束性可知,满足该约束条件的解均在第一象限内。
(2)图示约束条件,找出可行域(所有约束条件共同构成的图形)。
单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。
单纯形法的一般解题步骤可归纳如下:①把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。②若基本可行解不存在,即约束条件有矛盾,则问题无解。③若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解。④按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。⑤若迭代过程中发现问题的目标函数值无界,则终止迭代。
判别方法:无最优解判别定理
在求解极大化的线性规划问题过程中,若某单纯形表的检验行存在某个大于零的检验数,但是该检验数所对应的非基变量的系数列向量的全部系数都为负数或零,则该线性规划问题无最优解。
例5求解下述线性规划问题
在命令窗口输入:
>> A=[1 -1;-3 2];b=[1;6];c=[1 1];
其中 称为非基变量XN的检验向量,它的各个分量称为检验数。若σN的每一个检验数均小于等于0,即σN≤0,那么现在的基本可行解就是最优解。
2.3
定理1:最优解判别定理
对于线性规划问题 ,若某个基本可行解所对应的检验向量 ,则这个基本可行解就是最优解。
定理2:无穷多最优解判别定理
若 是一个基本可行解,所对应的检验向量 ,其中存在一个检验数σm+k=0,则线性规划问题有无穷多最优解。
所以约束方程 就可以表示为
用可行基B的逆阵B-1左乘等式两端,再通过移项可推得:
若令所有非基变量 ,则基变量
由此可得初始的基本可行解
2.2
假如已求得一个基本可行解 ,将这一基本可行解代入目标函数,可求得相应的目标函数值
其中 分别表示基变量和非基变量所对应的价值系数子向量。
要判定 是否已经达到最大值,只需将 代入目标函数,使目标函数用非基变量表示,即:
为了求得原问题的初始基本可行解,必须尽快通过迭代过程把人工变量从基变量中替换出来成为非基变量。为此可以在目标函数中赋予人工变量一个绝对值很大的负系数-M。这样只要基变量中还存在人工变量,目标函数就不可能实现极大化。
以后的计算与单纯形表解法相同,M只需认定是一个很大的正数即可。假如在单纯形最优表的基变量中还包含人工变量,则说明原问题无可行解。否则最优解中剔除人工变量的剩余部分即为原问题的初始基本可行解。
1.3
使用单纯形法求解线性规划时,首先要化问题为标准形式
所谓标准形式是指下列形式:
当实际模型非标准形式时,可以通过以下变换化为标准形式:
①当目标函数为 时,可令Z′=-Z,而将其写成为
求得最终解时,再求逆变换Z=-Z′即可。
②当s·t·中存在 形式的约束条件时,可引进变量
便写原条件成为
其中的xn+1称为松驰变量,其作用是化不等式约束为等式约束。
同理,若该约束不是用“≤”号连接,而是用“≥”连接,则可引进松驰变量
使原条件写成
2
2.1
单纯形法迭代原理:
(1)确定初始可行解
1当线性规划问题的所有约束条件均为≤号时,松弛变量对应的系数矩阵即为单位矩阵,以松弛变量为基变量可确定基可行解。
2对约束条件含≥号或=号时,可构造人工基,人为产生一个m×m单位矩阵用大M法或两阶段法获得初始基可行解。
2.5
在Байду номын сангаас纯形法的求解过程中,有下列重要指标:
(1)每一个基本可行解的检验向量 ,根据检验向量可以确定所求得的基本可行解是否为最优解。如果不是最优又可以通过检验向量确定合适的换入变量。
(2)每一个基本可行解所对应的目标函数值 ,通过目标函数值可以观察单纯形法的每次迭代是否能使目标函数值有效地增加,直至求得最优目标函数为止。
在单纯形法求解过程中,每一个基本可行解X都以某个经过初等行变换的约束方程组中的单位矩阵Ι为可行基。
当B=I时,B-1=I,易知: ,
可将这些重要结论的计算设计成如下一个简单的表格,即单纯形表来完成:
C
CB
CN
θ
CB
XB
b
X1X2…Xm
Xm+1Xm+2…Xn
C1
C2
﹕
Cm
X1
X2
﹕
Xm
b1
b2
﹕
bm
I
2.
把已确定的入基变量在各约束方程中的正的系数除以其所在约束方程中的常数项的值,把其中最小比值所在的约束方程中的原基变量确定为出基变量。
即若
则应令xl出基。其中bi是目前解的基变量取值,aik是进基变量xk所在列的各个系数分量,要求仅对正分量做比,(这由前述作法可知,若aik≤0,则对应的xi不会因xk的增加减值而成为出基变量)。
z =
6
迭代次数:
i=
6
与例题结果一致。
3.2
通过大M法或两阶段法求初始的基本可行解。但是如果在大M法的最优单纯形表的基变量中仍含有人工变量,人工变量的值不能取零,说明了原线性规划的数学模型的约束条件出现了相互矛盾的约束方程,此时线性规划问题也无最优解。
例4利用大M法求解下述线性规划问题
在命令窗口输入:
>> A=[1 1 1;1 0 -1;0 1 -1];b=[6;4;3];c=[-3 -2 -1];sign=[-1 1 1];
>> simplemethod(A,b,c,sign);
结果输出“此问题无可行解”。
3.3
无最优解则是指线性规划问题存在可行解,但是可行解的目标函数达不到最优值,即目标函数在可行域内可以趋于无穷大(或者无穷小)。无最优解也称为有限最优解,或无界解。
N
θ1
θ2
﹕
θm
Z
CBb
0
C-CBN
2.6
大M法首先将线性规划问题化为标准型。如果约束方程组中包含有一个单位矩阵I,那么已经得到了一个初始可行基。否则在约束方程组的左边加上若干个非负的人工变量,使人工变量对应的系数列向量与其它变量的系数列向量共同构成一个单位矩阵。以单位矩阵为初始基,即可求得一个初始的基本可行解。
>> simplemethod(A,b,c);
结果输出“此问题无最优解或有无界解”。
4
本文程序虽能解决简单线性规划问题,但对于存在退化解问题却不能做出解答。还有些实际问题会做出错误解答,因此还需进一步改进。
通过本次学习单纯形法,我对单纯形法中的基本概念如基变量、非基变量、基向量、非基向量、可行基以及基本可行解等概念有了初步了解。在理解了单纯形法的解题步骤的基础上,编写了一个求解简单线性规划问题的单纯形法程序,更加深化了单纯形法的理解。
(3)画出目标函数等值线,并确定函数增大(或减小)的方向。
(4)可行域中使目标函数达到最优的点即为最优解。
然而,由于图解法不适用于求解大规模的线性规划问题,其实用意义不大。
1.2
它的理论根据是:线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。顶点所对应的可行解称为基本可行解。
(2)再从原来的基变量中确定一个换出变量,使它从基变量变成非基变量(将它的值从正值减至零)。
由此可得一个新的基本可行解,由 可知,这样的变换一定能使目标函数值有所增加。
2.
把基检验数大于0的非基变量定为入基变量。若有两个以上的σj>0,则选其中的σj最大者的非基变量为入基变量。
从最优解判别定理知道,当某个σj>0时,非基变量xj变为基变量不取零值可以使目标函数值增大,故我们要选基检验数大于0的非基变量换到基变量中去(称之为入基变量)。若有两个以上的σj>0,则为了使目标函数增加得更大些,一般选其中的σj最大者的非基变量为入基变量。
i=
4
程序结果与例题结果一致。
例3利用大M法求解下述线性规划问题
在命令窗口输入:
>> A=[1 1;-1 1;0 1];b=[2;1;3];c=[-1 2];sign=[1 1 -1];
>> simplemethod(A,b,c,sign);
结果如下:
已得到最优解:
X =
0 3 1 2 0 0 0
最大值为:
定理3:无最优解判别定理
若 是一个基本可行解,有一个检验数 ,但是 ,则该线性规划问题无最优解。
2.
如果现行的基本可行解X不是最优解,即在检验向量 中存在正的检验数,则需在原基本可行解X的基础上寻找一个新的基本可行解,并使目标函数值有所改善。具体做法是:
(1)先从检验数为正的非基变量中确定一个换入变量,使它从非基变量变成基变量(将它的值从零增至正值)。
(2)最优性检验与解的判别(目标函数极大型)
1当所有变量对应的检验数均非正时,现有的基可行解即为最优解。若存在某个非基变量的检验数为零时,线性规划问题有无穷多最优解;当所有非基变量的检验数均严格小于零时,线性规划问题具有唯一最优解。
2若存在某个非基变量的检验数大于零,而该非基变量对应的系数均非正,则该线性规划问题具有无界解(无最优解)。
3当存在某些非基变量的检验数大于零,需要找一个新的基可行解,基要进行基变换。
2.1
确定初始的基本可行解等价于确定初始的可行基,一旦初始的可行基确定了,那么对应的初始基本可行解也就唯一确定,为了讨论方便,不妨假设在标准型线性规划中,系数矩阵A中前m个系数列向量恰好构成一个可行基,即A=(BN),其中B=(P1,P2,…Pm)为基变量x1,x2,…xm的系数列向量构成的可行基,N=(Pm+1,Pm+2,…Pn)为非基变量xm+1,xm+2,…xn的系数列向量构成的矩阵。
2.
完整的单纯形法的计算程序设计框图如下所示:
图1单纯形法程序框图
3
3.1
例1求如下方程的最优解
在命令行输入:
>> A=[1 2 2 1 0;3 4 1 0 1];b=[8;7];c=[5 2 3 -1 1];
>> simplemethod(A,b,c);
即可得出结果:
X =
1.2000 0 3.4000 0 0 0 0
z =
16.2000
迭代次数:
i=
4
程序结果与例题结果一致。
例2求解下述线性规划问题
在命令窗口输入:
>> A=[1 1;2 1];b=[40;60];c=[3 2];
>> simplemethod(A,b,c);
即可得到结果:
已得到最优解:
X =
20 20 0 0
最大值为:
z =
100
迭代次数:
图解法和单纯形法求解以下线性规划问题
1.1
只含两个变量的线性规划问题,可以通过在平面上作图的方法求解,步骤如下:
(1)以变量x1为横坐标轴,x2为纵坐标轴,适当选取单位坐标长度建立平面坐标直角坐标系。由变量的非负性约束性可知,满足该约束条件的解均在第一象限内。
(2)图示约束条件,找出可行域(所有约束条件共同构成的图形)。
单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。
单纯形法的一般解题步骤可归纳如下:①把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。②若基本可行解不存在,即约束条件有矛盾,则问题无解。③若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解。④按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。⑤若迭代过程中发现问题的目标函数值无界,则终止迭代。
判别方法:无最优解判别定理
在求解极大化的线性规划问题过程中,若某单纯形表的检验行存在某个大于零的检验数,但是该检验数所对应的非基变量的系数列向量的全部系数都为负数或零,则该线性规划问题无最优解。
例5求解下述线性规划问题
在命令窗口输入:
>> A=[1 -1;-3 2];b=[1;6];c=[1 1];
其中 称为非基变量XN的检验向量,它的各个分量称为检验数。若σN的每一个检验数均小于等于0,即σN≤0,那么现在的基本可行解就是最优解。
2.3
定理1:最优解判别定理
对于线性规划问题 ,若某个基本可行解所对应的检验向量 ,则这个基本可行解就是最优解。
定理2:无穷多最优解判别定理
若 是一个基本可行解,所对应的检验向量 ,其中存在一个检验数σm+k=0,则线性规划问题有无穷多最优解。
所以约束方程 就可以表示为
用可行基B的逆阵B-1左乘等式两端,再通过移项可推得:
若令所有非基变量 ,则基变量
由此可得初始的基本可行解
2.2
假如已求得一个基本可行解 ,将这一基本可行解代入目标函数,可求得相应的目标函数值
其中 分别表示基变量和非基变量所对应的价值系数子向量。
要判定 是否已经达到最大值,只需将 代入目标函数,使目标函数用非基变量表示,即:
为了求得原问题的初始基本可行解,必须尽快通过迭代过程把人工变量从基变量中替换出来成为非基变量。为此可以在目标函数中赋予人工变量一个绝对值很大的负系数-M。这样只要基变量中还存在人工变量,目标函数就不可能实现极大化。
以后的计算与单纯形表解法相同,M只需认定是一个很大的正数即可。假如在单纯形最优表的基变量中还包含人工变量,则说明原问题无可行解。否则最优解中剔除人工变量的剩余部分即为原问题的初始基本可行解。
1.3
使用单纯形法求解线性规划时,首先要化问题为标准形式
所谓标准形式是指下列形式:
当实际模型非标准形式时,可以通过以下变换化为标准形式:
①当目标函数为 时,可令Z′=-Z,而将其写成为
求得最终解时,再求逆变换Z=-Z′即可。
②当s·t·中存在 形式的约束条件时,可引进变量
便写原条件成为
其中的xn+1称为松驰变量,其作用是化不等式约束为等式约束。
同理,若该约束不是用“≤”号连接,而是用“≥”连接,则可引进松驰变量
使原条件写成
2
2.1
单纯形法迭代原理:
(1)确定初始可行解
1当线性规划问题的所有约束条件均为≤号时,松弛变量对应的系数矩阵即为单位矩阵,以松弛变量为基变量可确定基可行解。
2对约束条件含≥号或=号时,可构造人工基,人为产生一个m×m单位矩阵用大M法或两阶段法获得初始基可行解。
2.5
在Байду номын сангаас纯形法的求解过程中,有下列重要指标:
(1)每一个基本可行解的检验向量 ,根据检验向量可以确定所求得的基本可行解是否为最优解。如果不是最优又可以通过检验向量确定合适的换入变量。
(2)每一个基本可行解所对应的目标函数值 ,通过目标函数值可以观察单纯形法的每次迭代是否能使目标函数值有效地增加,直至求得最优目标函数为止。
在单纯形法求解过程中,每一个基本可行解X都以某个经过初等行变换的约束方程组中的单位矩阵Ι为可行基。
当B=I时,B-1=I,易知: ,
可将这些重要结论的计算设计成如下一个简单的表格,即单纯形表来完成:
C
CB
CN
θ
CB
XB
b
X1X2…Xm
Xm+1Xm+2…Xn
C1
C2
﹕
Cm
X1
X2
﹕
Xm
b1
b2
﹕
bm
I
2.
把已确定的入基变量在各约束方程中的正的系数除以其所在约束方程中的常数项的值,把其中最小比值所在的约束方程中的原基变量确定为出基变量。
即若
则应令xl出基。其中bi是目前解的基变量取值,aik是进基变量xk所在列的各个系数分量,要求仅对正分量做比,(这由前述作法可知,若aik≤0,则对应的xi不会因xk的增加减值而成为出基变量)。
z =
6
迭代次数:
i=
6
与例题结果一致。
3.2
通过大M法或两阶段法求初始的基本可行解。但是如果在大M法的最优单纯形表的基变量中仍含有人工变量,人工变量的值不能取零,说明了原线性规划的数学模型的约束条件出现了相互矛盾的约束方程,此时线性规划问题也无最优解。
例4利用大M法求解下述线性规划问题
在命令窗口输入:
>> A=[1 1 1;1 0 -1;0 1 -1];b=[6;4;3];c=[-3 -2 -1];sign=[-1 1 1];
>> simplemethod(A,b,c,sign);
结果输出“此问题无可行解”。
3.3
无最优解则是指线性规划问题存在可行解,但是可行解的目标函数达不到最优值,即目标函数在可行域内可以趋于无穷大(或者无穷小)。无最优解也称为有限最优解,或无界解。
N
θ1
θ2
﹕
θm
Z
CBb
0
C-CBN
2.6
大M法首先将线性规划问题化为标准型。如果约束方程组中包含有一个单位矩阵I,那么已经得到了一个初始可行基。否则在约束方程组的左边加上若干个非负的人工变量,使人工变量对应的系数列向量与其它变量的系数列向量共同构成一个单位矩阵。以单位矩阵为初始基,即可求得一个初始的基本可行解。
>> simplemethod(A,b,c);
结果输出“此问题无最优解或有无界解”。
4
本文程序虽能解决简单线性规划问题,但对于存在退化解问题却不能做出解答。还有些实际问题会做出错误解答,因此还需进一步改进。
通过本次学习单纯形法,我对单纯形法中的基本概念如基变量、非基变量、基向量、非基向量、可行基以及基本可行解等概念有了初步了解。在理解了单纯形法的解题步骤的基础上,编写了一个求解简单线性规划问题的单纯形法程序,更加深化了单纯形法的理解。
(3)画出目标函数等值线,并确定函数增大(或减小)的方向。
(4)可行域中使目标函数达到最优的点即为最优解。
然而,由于图解法不适用于求解大规模的线性规划问题,其实用意义不大。
1.2
它的理论根据是:线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。顶点所对应的可行解称为基本可行解。
(2)再从原来的基变量中确定一个换出变量,使它从基变量变成非基变量(将它的值从正值减至零)。
由此可得一个新的基本可行解,由 可知,这样的变换一定能使目标函数值有所增加。
2.
把基检验数大于0的非基变量定为入基变量。若有两个以上的σj>0,则选其中的σj最大者的非基变量为入基变量。
从最优解判别定理知道,当某个σj>0时,非基变量xj变为基变量不取零值可以使目标函数值增大,故我们要选基检验数大于0的非基变量换到基变量中去(称之为入基变量)。若有两个以上的σj>0,则为了使目标函数增加得更大些,一般选其中的σj最大者的非基变量为入基变量。
i=
4
程序结果与例题结果一致。
例3利用大M法求解下述线性规划问题
在命令窗口输入:
>> A=[1 1;-1 1;0 1];b=[2;1;3];c=[-1 2];sign=[1 1 -1];
>> simplemethod(A,b,c,sign);
结果如下:
已得到最优解:
X =
0 3 1 2 0 0 0
最大值为:
定理3:无最优解判别定理
若 是一个基本可行解,有一个检验数 ,但是 ,则该线性规划问题无最优解。
2.
如果现行的基本可行解X不是最优解,即在检验向量 中存在正的检验数,则需在原基本可行解X的基础上寻找一个新的基本可行解,并使目标函数值有所改善。具体做法是:
(1)先从检验数为正的非基变量中确定一个换入变量,使它从非基变量变成基变量(将它的值从零增至正值)。
(2)最优性检验与解的判别(目标函数极大型)
1当所有变量对应的检验数均非正时,现有的基可行解即为最优解。若存在某个非基变量的检验数为零时,线性规划问题有无穷多最优解;当所有非基变量的检验数均严格小于零时,线性规划问题具有唯一最优解。
2若存在某个非基变量的检验数大于零,而该非基变量对应的系数均非正,则该线性规划问题具有无界解(无最优解)。
3当存在某些非基变量的检验数大于零,需要找一个新的基可行解,基要进行基变换。
2.1
确定初始的基本可行解等价于确定初始的可行基,一旦初始的可行基确定了,那么对应的初始基本可行解也就唯一确定,为了讨论方便,不妨假设在标准型线性规划中,系数矩阵A中前m个系数列向量恰好构成一个可行基,即A=(BN),其中B=(P1,P2,…Pm)为基变量x1,x2,…xm的系数列向量构成的可行基,N=(Pm+1,Pm+2,…Pn)为非基变量xm+1,xm+2,…xn的系数列向量构成的矩阵。
2.
完整的单纯形法的计算程序设计框图如下所示:
图1单纯形法程序框图
3
3.1
例1求如下方程的最优解
在命令行输入:
>> A=[1 2 2 1 0;3 4 1 0 1];b=[8;7];c=[5 2 3 -1 1];
>> simplemethod(A,b,c);
即可得出结果:
X =
1.2000 0 3.4000 0 0 0 0