改进求解凸二次规划中的Lemke算法.docx
- 文档编号:10618252
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:13
- 大小:22.34KB
改进求解凸二次规划中的Lemke算法.docx
《改进求解凸二次规划中的Lemke算法.docx》由会员分享,可在线阅读,更多相关《改进求解凸二次规划中的Lemke算法.docx(13页珍藏版)》请在冰豆网上搜索。
改进求解凸二次规划中的Lemke算法
改进求解凸二次规划中的Lemke算法
张璐
辽宁工程技术大学理学院,辽宁阜新(123000
E-mail:
zhanglu85517@
摘要:
通过对经典的Lemke互补转轴算法求解凸二次规划问题的分析,找到了Lemke算法的局限性。
本文在Lemke算法求解线性互补问题的基础上修正了经典的Lemke算法的迭代过程,提出了一种改进的Lemke算法,通过算例证明了算法能有效克服解的局限性,减少了凸二次规划问题的迭代过程,提高了算法的效率。
关键词:
非线性规划;凸二次规划;线性互补问题;Lemke算法
1.引言
二次规划问题是最简单而又最基本的非线性规划问题,其目标函数是二次函数,约束是线性等式或不等式。
对于二次规划问题,可行域是凸集,所以当目标函数是凸函数时,任何K-T点都是二次规划问题的极小点。
研究二次规划问题的算法不仅仅是为了解决二次规划问题本身,同时也是为了更好的求解其他非线性规划问题。
因为大多数最优化方法是从二次函数模型导出的,这种类型的方法在实际中常常是有效的,其主要是因为一般函数的极小点附近常可用二次函数很好地进行近似。
由于二次规划是特殊的非线性规划,因此求解非线性规划问题的方法均可用于二次规划问题的求解。
同时,由于二次规划本身的特殊性,对它的求解可以采用一些更有效的方法[1]。
因此,不论从数学角度还是应用角度来看,二次规划问题的研究都具有重要意义。
到目前为止,已经出现了很多求解二次规划问题的算法,并且现在仍有很多学者在从事这方面的研究工作。
所以,需要我们对现存的有效的求解二次规划问题的算法进行改进,得到新的求解算法来克服某些算法的缺点,并且给出具体的实例显示该算法的有效性。
本文主要研究凸二次规划的求解算法,以及线性互补问题的性质等相关问题。
对Lemke算法进行进一步研究,对它可能出现退化的原因和迭代过程以及局限性进一步分析。
本文通过分析经典的Lemke互补转轴算法求解含有等式约束的凸二次规划问题可能出现退化的原因,修正了Lemke算法的迭代步骤,提出了一种改进的Lemke算法。
通过求解具体实例,说明了改进算法求解凸二次规划问题的有效性[2]。
2.Lemke算法介绍
2.1Lemke算法的基本思想
Lemke算法的基本思想是,由一个准互补基本可行解出发,通过转轴方法(即主元消去求出一个新的准互补基本可行解[3]。
这个过程可以不断地迭代,力争使变量0z称为非基变量,或者得到一个判据,说明问题(3-3和(3-4可行域无界。
转轴方法(主元消去遵循以下规则:
(1保持可行性按照最小比值规则确定离基变量。
(2保持准互补性若iw(或iz是离基变量,则iz(或iw是进基变量。
2.2Lemke方法的计算步骤
(1若0q≥,则停止计算,(,(,0wzq=是互补基本可行解;否则,用表格形式表示成方程组,设
max{1,,}iiqqimn−=−=⋅⋅⋅+
取s行为主行,0z对应的列为主列,进行主元消去,令ssyz=。
(2设在现行表中变量sy下面的列为sd.若0sd≤,则停止计算;否则,按最小比值规则确定指标r,使
min|0iiisrsisqqddd⎧⎫⎪⎪=>⎨⎬⎪⎪⎩⎭
如果r行的基变量是0z,则转步骤(4;否则,进行步骤(3。
(3设r行的基变量为lw或lz(对于某个ls≠,变量sy进基,以r行为主行,sy对应的列为主列,进行主元消去。
如果离基变量是lw,则令slyz=;如果离基变量是lz,则令slyw=。
转步骤(2。
(4变量sy进基,0z离基。
以r行为主行,sy对应的列为主列,进行主元消去。
得到互补基本可行解,停止计算[4]。
2.3Lemke互补转轴算法的局限性分析
首先,这一算法满足于一个互补基本可行解。
所以用它不可能求得线性互补问题的多个解。
其次,这一算法的收敛条件很强,限制了它的使用范围。
此算法的收敛定理:
(10z∀≥均有0TzMz≥.而且0(0TzMzz=≥蕴涵(0T
MMz+=。
(Missaidtobecopositive-plus;
(2每一个准互补基本可行解(almostcomplementarybasicfeasiblesolution均非退化。
若式(2与(1相容,则Lemke互补转轴算法终止于一个互补基本可行解;若不相容,则终止于射线,条件(1很强,而且不易检查。
但可以指出:
若M的主对角线上出现负元素,则条件(1必不满足[5,6,7]。
3.改进算法研究
3.1改进的Lemke算法的基本思想
本文研究的改进算法主要是求解线性互补问题,虽然向量q都有负向量,然而不必引入人工向量0z,可以通过一个简单公式算的一个互补基本可行解。
定理3.1设矩阵M的第k列无负元素,即0kM>。
若对应于q的负分量(0iq<,都有0ikm>,而且
max0ikiikkkqqqmm⎧⎫−−<=⎨
⎬⎩⎭(3-1则线性互补问题有一个互补基本可行解
/kkkk
iikki
zqmwmzq=−=+,1,,,ipik=⋅⋅⋅≠(3-2
其余变量均为零。
证明:
将线性互补问题列表(如表3-1
表3-1互补问题基本表格
Tab.3-1Complementaryproblembasistable
基w1…wk…wpz1…zk…zpq
w11…0…0-m11…-m1k…-m1pq1………………………………wk0…1…0-mk1…-mkk…-mkpqk………………………………
wp0…0…1-mp1…-mpk…-mpp
qp以kkm−为主元迭代一次后,基变量的值即为(3-2。
由(3-1和(3-2可以得到0kz>,0iikkiwmzq=+>,1,,,ipik=⋅⋅⋅≠。
因而由(3-2给出线性互补问题的一个互补基本可行解(非基变量均为零。
下面讨论离基变量的选取与进基变量的确定。
设初始解(0(0(0(0(011(,,,,,nnZ
wwzz=⋅⋅⋅⋅⋅⋅其中(0(00iiwz=(1,,in=⋅⋅⋅,不妨设其中的两个分量(0tw和(0s
z(ts≠为负数(对一个或多个分量为负的情形可以类推。
显然,离基变量要在(0tw和(0sz中产生。
同时,进基变量要在(0sw和(0tz中产生。
由矩阵的初等行变
换知识可知,(0tz和(0sw进基后理论上的值应为(1.tt
ttqzM=或(1ssssqwM=(其中ijM为系数矩阵M中元素。
显然,进基后的(1tz或(1sw的值为非负时,解的结构才有所改善。
若
(10tz≥,(10sw<,则选取(0tw为离基变量;若(10tz<,(10sw≥,则选取(0sz为离基变量。
不妨记以上离基规则为最大正互补变量规则。
3.2改进的Lemke算法的算法证明
(1算法的可行性分析
定义3.1:
如果基本可行解中只有一对分量都不是基变量,而其余各对分量都有一个,而且刚好有一个为基变量的,称为特互补基本可行解。
其中,一对分量指iw,iz,即w,z有相同的足标的一对分量。
定义3.2:
一个特互补基本可行解中如果大于0的分量个数少于原互补问题的阶数,则称为其退化的互补基本可行解。
定义3.3:
取非基对的一个变量足标定为主元列号,经一个主元消去步骤便可得出另一个特互补基本可行解。
用这种方法得到的新的特互补基本可行解称为相邻的特互补基本可行解。
定理3.2:
一个线性互补问题,若它是非退化的,则任何一个特互补基本可行解最多有两个相邻的特互补基本可行解。
证明:
我们只要证明对于非退化问题进行一个主元消去步时,主元行号唯一就可以了。
事实上,
00miniik
sirqrkskikmqqqmmm<<⎧⎫==⎨⎬⎩⎭
如取r为主元行号,则
0rssskrk
qmm=−=%与问题无退化特互补基本可行解矛盾。
我们把线性互补问题中矩阵M的元素记为ijm,而右端项各分量记为iq,记主元消去
后的新值为iq
%。
由定理3.2我们知道,如果每次迭代我们把kw或kz定死,则所产生的邻点是唯一的。
(2下面讨论这些关于离、进基变量的选取所采用的规则的合理性。
从几何上看,wMzq−=的每一个等式约束均为2pR空间中的一个超平面。
若
wMzq−=有解,它的解集为这些超平面形成的凸多面体的棱。
而满足互补条件0Twz=的
解则为这些凸多面体的顶点,我们所考虑的迭代则是从它的一个顶点旋转到另一个顶点。
由于它的顶点个数有限,因此有结论:
若凸二次规划有解,则采用最大互补变量规则,经有限步迭代必能求得相应的线性互补问题的非负互补解,从而得到凸二次规划的解。
3.3改进的Lemke算法的计算步骤
第一步若0q≥,则停止计算,(,(,0wzq=是互补基本可行解。
第二步如果不满足0q≥,但矩阵M的第k列都为正元素,即0ikM>。
若对应于q的负分量(0iq<,都有0ikm>,而且
max0ikiikkk
qqqmm⎧⎫−−<=⎨⎬⎩⎭则线性互补问题有一个互补基本可行解
/kkkk
iikki
zqmwmzq=−=+,1,,,ipik=⋅⋅⋅≠其余变量均为零。
若矩阵M有多个列都为正元素,则可有多个互补基本可行解,选取最优
解。
第三步若不满足0q≥,且矩阵M的每列不全为负元素,设
{}(0(0(0min0,1,,riiqqqip=<=⋅⋅⋅
取r行为主行,则取(0rz作为入基变量,对应的(0
rw作为出基变量(1,,rp=⋅⋅⋅,即取主元(0rrd。
对系数矩阵作进行主元消去变换,令(0(0
rrwz=。
对基向量中(ktz或(ktw有负分量,求出其负分量的互补变量((
(.kkttkttqwM=或(((.kkttktt
qzM=(其中(kijm,(ktq分别为第k次迭代时M的系数矩阵和右端列中负元素,且tj≠,置0k=。
若(ktq均为非负元素,则停止
计算取基向量的值为(
ktq。
设否则,转第三步。
第四步在第三步中,在互补变量中挑选出最大的正分量(kt
w或(ktz(tr≠作为入基变量,对应的(ktz或(kt
w作为出基变量,取(kttd为主元对系数矩阵作消元变换。
置1kk=+,
转第三步。
4.改进算法在求解凸二次规划中的实例分析
例4.1求解下面的凸二次规划
22112212
121212min(2812810..210
242
0
fxxxxxxxstxxxxxx=++−−−+≤−+≤−≥
解:
本题中已知数据如下24412H⎡⎤=⎢⎥⎣⎦
810c−⎡⎤=⎢⎥−⎣⎦,1224A−⎡⎤=⎢⎥−⎣⎦,102b⎡⎤=⎢⎥−⎣⎦,化成线性互补问题得到
001200024122424412TAMAH−⎡⎤⎢⎥−−⎡⎤⎢⎥==⎢⎥⎢⎥−−⎣⎦⎢⎥⎣⎦,102810bqc⎡⎤⎢⎥−⎡⎤⎢⎥==⎢⎥⎢⎥−⎣⎦⎢⎥−⎣⎦
ywv⎡⎤=⎢⎥⎣⎦,uzx⎡⎤=⎢⎥⎣⎦
解法一:
根据经典的Lemke互补转轴算法,在引入人工变量后,经过4次迭代过程,得到
互补基本可行解(14,6,0,6,(0,0,4,0TT
wz==。
解法二:
根据改进的算法,矩阵M的第三列无负元素,而且33332810max0max/,,,224iiiqqqmm⎧⎫−−⎧⎫<==⎨⎬⎨⎬⎩⎭⎩⎭
利用算法的步骤二,线性互补问题有一个基本可行解
3333/4zqm=−=,1441014w=×+=,22426w=×−=
444106w=×−=,31240wzzz====
即(14,6,0,6,(0,0,4,0TT
wz==为线性互补问题的一个基本可行解。
所以最优解(4,0x∗=。
例4.2求解如下凸二次规划问题:
22112212
1212min(221010..326
0fxxxxxxxstxxxx=−+−−−−≥−≥
解:
有本题得到如下数据
21110H−⎡⎤=⎢⎥−⎣⎦,110c−⎡⎤=⎢⎥−⎣⎦
[]32A=−−,6b=−化成线性互补问题有:
21311020320T
HAMA−⎛⎞⎡⎤−⎜⎟==−⎢⎥⎜⎟⎣⎦⎜⎟−−⎝⎠,1106cqb−⎛⎞⎡⎤⎜⎟==−⎢⎥⎜⎟−⎣⎦⎜⎟⎝⎠11223321311102103206wzwzwz−−⎛⎞⎛⎞⎛⎞⎛⎞⎜⎟⎜⎟⎜⎟⎜⎟=−+−⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟−−⎝
⎠⎝⎠⎝⎠⎝⎠
0Twz=,0w≥,0z≥,3,wzR∈
解法一:
利用原始的Lemke互补转轴算法求得
表4-1经典的Lemke算法的初始表
Tab.4-1TheinitialtableofclassicalLemkealgorithm
基向量w1w2w3z1z2z3z0qw1100-21-3-1-1w20101-10-2-1-10w3001320-16
表4-2经典的Lemke算法的迭代表1
Tab.4-2ThefirstiteratedtableofclassicalLemkealgorithm
基向量w1w2w3z1z2*z3z0qw11-10-311*-109z00-10-1102110w30-112122016
表4-3经典的Lemke算法的迭代表2
Tab.4-3TheseconditeratedtableofclassicalLemkealgorithm基向量
w1w2w3z1*z2z3z0qz2
1/11-1/110-3/111-1/1109/11z0-10/11-1/11019/11*0
32/11120/11w3
-12/111/11158/11034/11068/11
表4-4经典的Lemke算法的迭代表3
Tab.4-4ThethirditeratedtableofclassicalLemkealgorithm
基向量
w1w2w3z1z2z3z0qz2-1/19-2/190017/193/1921/19z1-10/19-1/1901032/1911/1920/19
w332/197/19100-110/19-58/1912/19
所以线性互补可行解TT(20/19,21/19,0,(0,0,12/19zw==。
即经过三次迭代过程,得到K-T点12(,(20/19,21/19xx=。
解法二:
利用改进的算法
表4-5改进的Lemke算法的初始表
Tab.4-5TheinitialtableofimprovedLemkealgorithm
基向量w1w2w3z1z2z3q
w1100-21-3-1
w20101-10*-2-10w30013206因为{}
(0(0(01min0iiqqq=<,取2z为进基变量则2w为出基变量,以(022d为主元,经主元消去法得到
表4-6改进的Lemke算法的迭代表1
Tab.4-6ThefirstiteratedtableofimprovedLemkealgorithm
基向量w1w2w3z1z2z3q
w111/100-19/10*0-6/5-2
z20-1/100-1/1011/51
w30-2116/50-2/54
显然基向量为123(w,,(-2,1,4zw=,只有1w分量为负数,则1w的互补变量进基,即1z进基,则w1出基,取(111d为主元,进行主元消去得到
表4-7改进的Lemke算法的迭代表2
Tab.4-7TheseconditeratedtableofimprovedLemkealgorithm基向量w1w2w3z1z2z3qz1-10/19-1/1901012/1920/19z2-1/19-2/1900124/9521/19w316/95-174/95100-46/1912/19
得到基向量123(z,,(20/19,21/19,12/19zw=,各分量均非负则停止计算。
所以线性互补可行解TT
(20/19,21/19,0,(0,0,12/19zw==。
所以仅经过两次迭代过程,得到K-T点12(,(20/19,21/19xx=。
例4.3求解如下凸二次规划:
221122121212min(24426.2
22
fxxxxxxxstxxxx=−+−−+≤−+≤
解:
有本题得到如下数据2224H−⎡⎤=⎢⎥−⎣⎦
26c−⎡⎤=⎢⎥−⎣⎦,1112A⎡⎤=⎢⎥−⎣⎦,22b⎡⎤=⎢⎥⎣⎦
00110001211221224TAMAH−−⎡⎤⎢⎥−−⎡⎤⎢⎥==⎢⎥⎢⎥−−⎣⎦⎢⎥−⎣⎦,2226bqc⎡⎤⎢⎥⎡⎤⎢⎥==⎢⎥⎢⎥−⎣⎦⎢⎥−⎣⎦
ywv⎡⎤=⎢⎥⎣⎦,uzx⎡⎤=⎢⎥⎣⎦解法一:
根据经典的Lemke互补转轴算法,在引入人工变量后,经过4次迭代过程,得到互补基本可行解21446(0,,0,0,(
0,,5555TTwz==,因此得到K-T点1246(,(,55xx=。
解法二:
利用改进的算法
表4-8改进的Lemke算法的初始表
Tab.4-8TheinitialtableofimprovedLemkealgorithm
基向量w1w2w3w4z1z2z3z4qw1100000112w2010000-122w30010-11-22-2w40001-1-22-4*-6因为{}(0(0(04min0i
iqqq=<,选取4z为进基变量,则4w为出基变量。
以(044d为主元,经主元消去法得到
表4-9改进的Lemke算法的迭代表1
Tab.4-9ThefirstiteratedtableofimprovedLemkealgorithm
基向量w1w2w3w4z1z2z3z4qw11001/4-1/4-1/23/201/2w20101/2-1/2-100-1w30011/2-3/20-10-5z4000-1/41/41/2-1/213/2
显然基向量为12341(,,w,(,-1,-5,3/22
wwz=,2w和3w分量为负数,得3w的互补变量最大。
根据最大互补规则,则3w的互补变量进基,即3z进基,3w出基。
取(133d为主元,进行主元消去得到
表4-10改进的Lemke算法的迭代表2
Tab.4-10TheseconditeratedtableofimprovedLemkealgorithm
基向量w1w2w3w4z1z2z3z4qw1103/21-5/2*-1/200-7w20101/2-1/2-100-1z300-1-1/23/20105z400-1/2-1/211/2014
显然基向量为1234(,,z,(7,-1,5,4wwz=−,1w和2w分量为负数,则1w的互补变量最大,则1z进基,1w出基。
取(211d为主元,进行主元消去得到
表4-11改进的Lemke算法的迭代表3
Tab.4-11ThefirstiteratedtableofimprovedLemkealgorithm
基向量w1w2w3w4z1z2z3z4q
z1-2/5
0-3/5-2/511/50014/5w2-1/5
1-3/10
3/100-9/10
002/5z33/5
0-
1/10
1/100-3/10
104/5z42/5
01/10-1/10
03/10016/5
得到基向量
123414246
(z,,,(,,,
5555
wzz=,各分量均非负则停止计代过程。
即经过三
次迭代过程,得到互补基本可行解
21446
(0,,0,0,(,0,,
5555
TT
wz
==,因此得到K-T点
1246
(,(,
55
xx=。
5结论
本文通过对经典的Lemke互补转轴算法求解凸二次规划问题的分析,找到了Lemke算法的局限性。
根据Lemke算法求解线性互补问题(LCP问题,对经典的Lemke算法的迭代过程进行了修正,提出了一种改进的Lemke算法。
这种算法能有效地克服了本身解的局限性,并能减少凸二次规划问题的迭代过程。
根据凸二次规划的Lemke算法及线性互补问题的描述,证明了改进算法的可行性。
通过利用改进的Lemke算法对凸二次规划问题进行求解,对改进算法与经典的Lemke算法进行比较和分析。
数值结果表明:
改进算法能有效地克服了本身解的局限性,并能减少凸二次规划问题的迭代过程。
本文给出了求解凸二次规划问题的一种Lemke算法的改进算法。
该算法在迭代时不需要引入人工变量,把特殊的凸二次规划求解简单化,这使得求解过程灵活、方便。
算例表明,所提算法在求解相应问题时是简便而有效的。
参考文献
[1]Y.Y.Nie,S.O.Magundho.AQUASL-SIMPLEXMETHODFORSTRICTLYCONVEXQUADRATIC
PROGRAMMING.MINI-MICROSYSTEM,2001,22(1
[2]张文武,华中生.一种改进的求解含等式约束凸二次规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 改进 求解 二次 规划 中的 Lemke 算法