改进求解凸二次规划中的Lemke算法.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
改进求解凸二次规划中的Lemke 算法
张璐
辽宁工程技术大学理学院,辽宁阜新(123000
E-mail:zhanglu85517@
摘要:通过对经典的Lemke 互补转轴算法求解凸二次规划问题的分析,找到了Lemke 算法的局限性。
本文在Lemke 算法求解线性互补问题的基础上修正了经典的Lemke 算法的迭代过程,提出了一种改进的Lemke 算法,通过算例证明了算法能有效克服解的局限性,减少了凸二次规划问题的迭代过程,提高了算法的效率。
关键词:非线性规划;凸二次规划;线性互补问题;Lemke 算法
1.引言
二次规划问题是最简单而又最基本的非线性规划问题,其目标函数是二次函数,约束是线性等式或不等式。
对于二次规划问题,可行域是凸集,所以当目标函数是凸函数时,任何K-T 点都是二次规划问题的极小点。
研究二次规划问题的算法不仅仅是为了解决二次规划问题本身,同时也是为了更好的求解其他非线性规划问题。
因为大多数最优化方法是从二次函数模型导出的,这种类型的方法在实际中常常是有效的,其主要是因为一般函数的极小点附近常可用二次函数很好地进行近似。
由于二次规划是特殊的非线性规划,因此求解非线性规划问题的方法均可用于二次规划问题的求解。
同时,由于二次规划本身的特殊性,对它的求解可以采用一些更有效的方法[1]。
因此,不论从数学角度还是应用角度来看,二次规划问题的研究都具有重要意义。
到目前为止,已经出现了很多求解二次规划问题的算法,并且现在仍有很多学者在从事这方面的研究工作。
所以,需要我们对现存的有效的求解二次规划问题的算法进行改进,得到新的求解算法来克服某些算法的缺点,并且给出具体的实例显示该算法的有效性。
本文主要研究凸二次规划的求解算法,以及线性互补问题的性质等相关问题。
对Lemke 算法进行进一步研究,对它可能出现退化的原因和迭代过程以及局限性进一步分析。
本文通过分析经典的Lemke 互补转轴算法求解含有等式
约束的凸二次规划问题可能出现退化的原因,修正了Lemke 算法的迭代步骤,提出了一种改进的Lemke 算法。
通过求解具体实例,说明了改进算法求解凸二次规划问题的有效性[2]。
2.Lemke 算法介绍
2.1 Lemke 算法的基本思想
Lemke 算法的基本思想是,由一个准互补基本可行解出发,通过转轴方法(即主元消去求出一个新的准互补基本可行解[3]。
这个过程可以不断地迭代,力争使变量0z 称为非基变量,或者得到一个判据,说明问题(3-3和(3-4可行域无界。
转轴方法(主元消去遵循以下规则:
(1保持可行性按照最小比值规则确定离基变量。
(2保持准互补性若i w (或i z 是离基变量,则i z (或i w 是进基变量。
2.2 Lemke 方法的计算步骤
(1若0q ≥,则停止计算,(,(,0w z q =是互补基本可行解;否则,用表格形式表示成方程组,设
max{1,,}i i q q i m n −=−=⋅⋅⋅+
取s 行为主行,0z 对应的列为主列,进行主元消去,令s s y z =。
(2设在现行表中变量s y 下面的列为s d .若0s d ≤,则停止计算;否则,按最小比值规则确定指标r ,使
min |0i i is rs is q q d d d ⎧⎫⎪⎪=>⎨⎬⎪⎪⎩⎭
如果r 行的基变量是0z ,则转步骤(4;否则,进行步骤(3。
(3设r 行的基变量为l w 或l z (对于某个l s ≠,变量s y 进基,以r 行为主行,s y 对应的列为主列,进行主元消去。
如果离基变量是l w ,则令s l y z =;如果离基变量是l z ,则令s l y w =。
转步骤(2。
(4变量s y 进基,0z 离基。
以r 行为主行,s y 对应的列为主列,进行主元消去。
得到互补基本可行解,停止计算[4]。
2.3 Lemke 互补转轴算法的局限性分析
首先,这一算法满足于一个互补基本可行解。
所以用它不可能求得线性互补问题的多个解。
其次,这一算法的收敛条件很强,限制了它的使用范围。
此算法的收敛定理:
(1 0z ∀≥均有0T z Mz ≥.而且0(0T z Mz z =≥蕴涵(0T
M M z +=。
(M is said to be copositive-plus;
(2 每一个准互补基本可行解(almost complementary basic feasible solution均非退化。
若式(2与(1相容,则Lemke 互补转轴算法终止于一个互补基本可行解;若不相容,则终止于射线,条件(1很强,而且不易检查。
但可以指出:若M 的主对角线上出现负元素,则条件(1必不满足[5,6,7]。
3.改进算法研究
3.1改进的Lemke 算法的基本思想
本文研究的改进算法主要是求解线性互补问题,虽然向量q 都有负向量,然而不必引入人工向量0z ,可以通过一个简单公式算的一个互补基本可行解。
定理3.1 设矩阵M 的第k 列无负元素,即0k M >。
若对应于q 的负分量(0i q <,都有0ik m >,而且
max 0i k i ik kk q q q m m ⎧⎫−−<=⎨
⎬⎩⎭ (3-1 则线性互补问题有一个互补基本可行解
/k k kk
i ik k i
z q m w m z q =−=+ ,1,,,i p i k =⋅⋅⋅≠ (3-2
其余变量均为零。
证明:将线性互补问题列表(如表3-1
表3-1 互补问题基本表格
Tab.3-1 Complementary problem basis table
基w 1 … w k … w p z 1 … z k … z p q
w 1 1 … 0 … 0 -m 11 … -m 1k … -m 1p q 1 … … … … … … … … … … … … w k 0 … 1 … 0 -m k1 … -m kk … -m kp q k … … … … … … … … … … … …
w p 0 … 0 … 1 -m p1 … -m pk … -m pp
q p 以kk m −为主元迭代一次后,基变量的值即为(3-2。
由(3-1和(3-2可以得到0k z >,0i ik k i w m z q =+>,1,,,i p i k =⋅⋅⋅≠。
因而由(3-2给出线性互补问题的一个互补基本可行解(非基变量均为零。
下面讨论离基变量的选取与进基变量的确定。
设初始解(0(0(0(0(011(,,,,,n n Z
w w z z =⋅⋅⋅⋅⋅⋅其中(0(00i i w z =(1,,i n =⋅⋅⋅,不妨设其中的两个分量(0t w 和(0s
z (t s ≠为负数(对一个或多个分量为负的情形可以类推。
显然,离基变量要在(0t w 和(0s z 中产生。
同时,进基变量要在(0s w 和(0t z 中产生。
由矩阵的初等行变
换知识可知,(0t z 和(0s w 进基后理论上的值应为(1.t t
t t q z M =或(1s s ss q w M =(其中ij M 为系数矩阵M 中元素。
显然,进基后的(1t z 或(1s w 的值为非负时,解的结构才有所改善。
若
(10t z ≥,(10s w <,则选取(0t w 为离基变量;若(10t z <,(10s w ≥,则选取(0s z 为离
基变量。
不妨记以上离基规则为最大正互补变量规则。
3.2改进的Lemke 算法的算法证明
(1算法的可行性分析
定义3.1:如果基本可行解中只有一对分量都不是基变量,而其余各对分量都有
一个,而且刚好有一个为基变量的,称为特互补基本可行解。
其中,一对分量指i w ,i z ,即w ,z 有相同的足标的一对分量。
定义3.2:一个特互补基本可行解中如果大于0的分量个数少于原互补问题的阶数,则称为其退化的互补基本可行解。
定义3.3:取非基对的一个变量足标定为主元列号,经一个主元消去步骤便可得
出另一个特互补基本可行解。
用这种方法得到的新的特互补基本可行解称为相邻的特互补基本可行解。
定理3.2:一个线性互补问题,若它是非退化的,则任何一个特互补基本可行解最多有两个相邻的特互补基本可行解。
证明:我们只要证明对于非退化问题进行一个主元消去步时,主元行号唯一就可以了。
事实上,
00min i ik
s i r q rk sk ik m q q q m m m <<⎧⎫==⎨⎬⎩⎭
如取r 为主元行号,则
0r s s sk rk
q q
q m m =−=% 与问题无退化特互补基本可行解矛盾。
我们把线性互补问题中矩阵M 的元素记为ij m ,而右端项各分量记为i q ,记主元消去
后的新值为i q
%。
由定理3.2我们知道,如果每次迭代我们把k w 或k z 定死,则所产生的邻点是唯一的。
(2下面讨论这些关于离、进基变量的选取所采用的规则的合理性。
从几何上看,w Mz q −=的每一个等式约束均为2p R 空间中的一个超平面。
若
w Mz q −=有解,它的解集为这些超平面形成的凸多面体的棱。
而满足互补条件0T w z =的
解则为这些凸多面体的顶点,我们所考虑的迭代则是从它的一个顶点旋转到另一个顶点。
由于它的顶点个数有限,因此有结论:若凸二次规划有解,则采用最大互补变量规则,经有限步迭代必能求得相应的线性互补问题的非负互补解,从而得到凸二次规划的解。
3.3改进的Lemke 算法的计算步骤
第一步若0q ≥,则停止计算,(,(,0w z q =是互补基本可行解。
第二步如果不满足0q ≥,但矩阵M 的第k 列都为正元素,即0ik M >。
若对应于q 的负分量(0i q <,都有0ik m >,而且
max 0i k i ik kk
q q q m m ⎧⎫−−<=⎨⎬⎩⎭则线性互补问题有一个互补基本可行解
/k k kk
i ik k i
z q m w m z q =−=+,1,,,i p i k =⋅⋅⋅≠ 其余变量均为零。
若矩阵M 有多个列都为正元素,则可有多个互补基本可行解,选取最优
解。
第三步若不满足0q ≥,且矩阵M 的每列不全为负元素,设
{}(0(0(0min 0,1,,r i i q q q i p =<=⋅⋅⋅
取r 行为主行,则取(0r z 作为入基变量,对应的(0
r w 作为出基变量(1,,r p =⋅⋅⋅,即取主元(0rr d 。
对系数矩阵作进行主元消去变换,令(0(0
r r w z =。
对基向量中(k t z 或(k t w 有负分量,求出其负分量的互补变量((
(.k k t t k t t q w M =或(((.k k t t k t t
q z M =(其中(k ij m ,(k t q 分别为第k 次迭代时M 的系数矩阵和右端列中负元素,且t j ≠,置0k =。
若(k t q 均为非负元素,则停止
计算取基向量的值为(
k t q 。
设否则,转第三步。
第四步在第三步中,在互补变量中挑选出最大的正分量(k t
w 或(k t z (t r ≠作为入基变量,对应的(k t z 或(k t
w 作为出基变量,取(k tt d 为主元对系数矩阵作消元变换。
置1k k =+,
转第三步。
4.改进算法在求解凸二次规划中的实例分析
例4.1 求解下面的凸二次规划
22112212
121212min (2812810..210
242
,0
f x x x x x x x s t x x x x x x =++−−−+≤−+≤−≥
解:本题中已知数据如下 24412H ⎡⎤=⎢⎥⎣⎦
,810c −⎡⎤=⎢⎥−⎣⎦,1224A −⎡⎤=⎢⎥−⎣⎦,102b ⎡⎤=⎢⎥−⎣⎦, 化成线性互补问题得到
001200024122424412T A M A H
−⎡⎤⎢⎥−−⎡⎤⎢⎥==⎢⎥⎢⎥−−⎣⎦⎢⎥⎣⎦,102810b q c
⎡⎤⎢⎥−⎡⎤⎢⎥==⎢⎥⎢⎥−⎣⎦⎢⎥−⎣⎦
, y w v ⎡⎤=⎢⎥⎣⎦,u z x ⎡⎤=⎢⎥⎣⎦
解法一:根据经典的Lemke 互补转轴算法,在引入人工变量后,经过4次迭代过程,得到
互补基本可行解(14,6,0,6,(0,0,4,0T T
w z ==。
解法二:根据改进的算法,矩阵M 的第三列无负元素,而且 33332810max 0max /,,,224i i i q q q m m ⎧⎫−−⎧⎫<==⎨⎬⎨⎬⎩⎭⎩⎭
利用算法的步骤二,线性互补问题有一个基本可行解
3333/4z q m =−=,1441014w =×+=,22426w =×−=
444106w =×−=,31240w z z z ====
即(14,6,0,6,(0,0,4,0T T
w z ==为线性互补问题的一个基本可行解。
所以最优解(4,0x ∗=。
例4.2 求解如下凸二次规划问题:
22112212
1212min (221010..326
,0f x x x x x x x s t x x x x =−+−−−−≥−≥
解:有本题得到如下数据
21110H −⎡⎤=⎢⎥−⎣⎦,110c −⎡⎤=⎢⎥−⎣⎦
,[]32A =−−,6b =− 化成线性互补问题有:
21311020320T
H A M A −⎛⎞⎡⎤−⎜⎟==−⎢⎥⎜⎟⎣⎦⎜⎟−−⎝⎠,1106c q b
−⎛⎞⎡⎤⎜⎟==−⎢⎥⎜⎟−⎣⎦⎜⎟⎝⎠ 11223321311102103206w z w z w z −−⎛⎞⎛⎞⎛⎞⎛⎞⎜⎟⎜⎟⎜⎟⎜⎟=−+−⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟−−⎝
⎠⎝⎠⎝⎠⎝⎠
0T w z =,0w ≥, 0z ≥, 3,w z R ∈
解法一:利用原始的Lemke 互补转轴算法求得
表4-1 经典的Lemke 算法的初始表
Tab.4-1 The initial table of classical Lemke algorithm
基向量 w 1 w 2 w 3 z 1 z 2 z 3 z 0 q w 1 1 0 0 -2 1 -3 -1 -1 w 2 0 1 0 1 -10 -2 -1 -10 w 3 0 0 1 3 2 0 -1 6
表4-2 经典的Lemke 算法的迭代表1
Tab.4-2The first iterated table of classical Lemke algorithm
基向量 w 1 w 2 w 3 z 1 z 2* z 3 z 0 q w 1 1 -1 0 -3 11* -1 0 9 z 0 0 -1 0 -1 10 2 1 10 w 3 0 -1 1 2 12 2 0 16
表4-3 经典的Lemke 算法的迭代表2
Tab.4-3 The second iterated table of classical Lemke algorithm 基向量
w 1 w 2 w 3 z 1* z 2 z 3 z 0 q z 2
1/11 -1/11 0 -3/11 1 -1/11 0 9/11 z 0 -10/11 -1/11 0 19/11* 0
32/11 1 20/11 w 3
-12/11 1/11 1 58/11 0 34/11 0 68/11
表4-4 经典的Lemke 算法的迭代表3
Tab.4-4The third iterated table of classical Lemke algorithm
基向量
w 1 w 2 w 3 z 1 z 2 z 3 z 0 q z 2 -1/19 -2/19 0 0 1 7/19 3/19 21/19 z 1 -10/19 -1/19 0 1 0 32/19 11/19 20/19
w 3 32/19 7/19 1 0 0 -110/19 -58/19 12/19
所以线性互补可行解T T (20/19,21/19,0,(0,0,12/19z w ==。
即经过三次迭代过程,得到K-T 点12(,(20/19,21/19x x =。
解法二:利用改进的算法
表4-5 改进的Lemke 算法的初始表
Tab.4-5 The initial table of improved Lemke algorithm
基向量 w 1 w 2 w 3 z 1 z 2 z 3 q
w 1 1 0 0 -2 1 -3 -1
w 2 0 1 0 1 -10* -2 -10 w 3 0 0 1 3 2 0 6 因为{}
(0(0(01min 0i i q q q =<,取2z 为进基变量则2w 为出基变量,以(022d 为主元,经主元消去法得到
表4-6 改进的Lemke 算法的迭代表1
Tab.4-6 The first iterated table of improved Lemke algorithm
基向量 w 1 w 2 w 3 z 1 z 2 z 3 q
w 1 1 1/10 0 -19/10* 0 -6/5 -2
z 2 0 -1/10 0 -1/10 1 1/5 1
w 3 0 -2 1 16/5 0 -2/5 4
显然基向量为123(w ,,(-2,1,4z w =,只有1w 分量为负数,则1w 的互补变量进基,即1z 进基,则w 1出基,取(111d 为主元,进行主元消去得到
表4-7 改进的Lemke 算法的迭代表2
Tab.4-7The second iterated table of improved Lemke algorithm 基向量 w 1 w 2 w 3 z 1 z 2 z 3 q z 1 -10/19 -1/19 0 1 0 12/19 20/19 z 2 -1/19 -2/19 0 0 1 24/95 21/19 w 3
16/95 -174/95 1 0 0 -46/19 12/19
得到基向量123(z ,,(20/19,21/19,12/19z w =,各分量均非负则停止计算。
所以线性互补可行解T T
(20/19,21/19,0,(0,0,12/19z w ==。
所以仅经过两次迭代过程,得到K-T 点12(,(20/19,21/19x x =。
例4.3 求解如下凸二次规划:
221122121212min (24426.2
22
f x x x x x x x st x x x x =−+−−+≤−+≤
解:有本题得到如下数据2224H −⎡⎤=⎢⎥−⎣⎦
,26c −⎡⎤=⎢⎥−⎣⎦,1112A ⎡⎤=⎢⎥−⎣⎦,22b ⎡⎤=⎢⎥⎣⎦
00110001211221224T A M A H
−−⎡⎤⎢⎥−−⎡⎤⎢⎥==⎢⎥⎢⎥−−⎣⎦⎢⎥−⎣⎦,2226b q c
⎡⎤⎢⎥⎡⎤⎢⎥==⎢⎥⎢⎥−⎣⎦⎢⎥−⎣⎦
,y w v ⎡⎤=⎢⎥⎣⎦,u z x ⎡⎤=⎢⎥⎣⎦解法一:根据经典的Lemke 互补转轴算法,在引入人工变量后,经过4次迭代过程,得到互补基本可行解21446(0,,0,0,(
,0,,5555T T w z ==,因此得到K-T 点1246(,(,55x x =。
解法二:利用改进的算法
表4-8 改进的Lemke 算法的初始表
Tab.4-8 The initial table of improved Lemke algorithm
基向量 w 1 w 2 w 3 w 4 z 1 z 2 z 3 z 4 q w 1 1 0 0 0 0 0 1 1 2 w 2 0 1 0 0 0 0 -1 2 2 w 3 0 0 1 0 -1 1 -2 2 -2 w 4 0 0 0 1 -1 -2 2 -4* -6 因为{}(0(0(04min 0i
i q q q =<,选取4z 为进基变量,则4w 为出基变量。
以(044d 为主元,经主元消去法得到
表4-9 改进的Lemke 算法的迭代表1
Tab.4-9 The first iterated table of improved Lemke algorithm
基向量 w 1 w 2 w 3 w 4 z 1 z 2 z 3 z 4 q w 1 1 0 0 1/4 -1/4 -1/2 3/2 0 1/2 w 2 0 1 0 1/2 -1/2 -1 0 0 -1 w 3 0 0 1 1/2 -3/2 0 -1 0 -5 z 4 0 0 0 -1/4 1/4 1/2 -1/2 1 3/2 显然基向量为12341(,,w ,(,-1,-5,3/22
w w z =,2w 和3w 分量为负数,得3w 的互补变量最大。
根据最大互补规则,则3w 的互补变量进基,即3z 进基,3w 出基。
取(133d 为主元,进行主元消去得到
表4-10 改进的Lemke 算法的迭代表2
Tab.4-10 The second iterated table of improved Lemke algorithm
基向量 w 1 w 2 w 3 w 4 z 1 z 2 z 3 z 4 q w 1 1 0 3/2 1 -5/2* -1/2 0 0 -7 w 2 0 1 0 1/2 -1/2 -1 0 0 -1 z 3 0 0 -1 -1/2 3/2 0 1 0 5 z 4 0 0 -1/2 -1/2 1 1/2 0 1 4
显然基向量为1234(,,z ,(7,-1,5,4w w z =−,1w 和2w 分量为负数,则1w 的互补变量最大,则1z 进基,1w 出基。
取(211d 为主元,进行主元消去得到
表4-11 改进的Lemke算法的迭代表3
Tab.4-11The first iterated table of improved Lemke algorithm
基向量w1w2w3w4z1z2z3z4 q
z1-2/5
0 -3/5 -2/5 1 1/5 0 0 14/5 w2 -1/5
1 -3/10
3/10 0 -9/10
0 0 2/5 z33/5
0 -
1/10
1/10 0 -3/10
1 0 4/5 z42/5
0 1/10 -1/10
0 3/10 0 1 6/5
得到基向量
123414246
(z,,,(,,,
5555
w z z=,各分量均非负则停止计代过程。
即经过三次迭代过程,得到互补基本可行解
21446
(0,,0,0,(,0,,
5555
T T
w z
==,因此得到K-T点
1246
(,(,
55
x x=。
5结论
本文通过对经典的Lemke互补转轴算法求解凸二次规划问题的分析,找到了Lemke算法的局限性。
根据Lemke算法求解线性互补问题(LCP问题,对经典的Lemke算法的迭代过程进行了修正,提出了一种改进的Lemke算法。
这种算法能有效地克服了本身解的局限性,并能减少凸二次规划问题的迭代过程。
根据凸二次规划的Lemke算法及线性互补问题的描述,证明了改进算法的可行性。
通过利用改进的Lemke算法对凸二次规划问题进行求解,对改进算法与经典的Lemke算法进行比较和分析。
数值结果表明:改进算法能有效地克服了本身解的局限性,并能减少凸二次规划问题的迭代过程。
本文给出了求解凸二次规划问题的一种Lemke算法的改进算法。
该算法在迭代时不需要引入人工变量,把特殊的凸二次规划求解简单化,这使得求解过程灵活、方便。
算例表明,所提算法在求解相应问题时是简便而有效的。
参考文献
[1]Y.Y.Nie,S.O.Magundho.A QUASL-SIMPLEX METHOD FOR STRICTLY CONVEX QUADRATIC
PROGRAMMING.MINI-MICRO SYSTEM, 2001, 22(1
[2]张文武,华中生.一种改进的求解含等式约束凸二次规划问题的Lemke算法[J].中国科学技术大学学报,
2004.
[3]王浚岭.一种新的可分凸二次规划的不可行内点算法[J].应用数学, 2004, 17(1.
[4]张艺.线性约束凸二次规划的一个原始对偶内点算法[J].宁波大学学报(理工版,2004, 17(1.
[5]赵社峰,费浦生,李健.凸二次规划的投影收缩算法[J].武汉大学学报(理学
版,2001, 47(1.
[6]张胜.等式约束二次规划问题的迭代解法[J].南京师范大学报(自然科学
版,2000, 23(3.
[7]徐君开,叶福玲.求解线性互补问题的Lemke算法的一种改进[J].福州大学学报(自然科学版,1997, 25(6.
The improvement of Lemke algorithm for solving convex
quadratic programming
Zhang Lu
College of Science, Liaoning Technical University, Fuxin, Liaoning (123000
Abstract
Based on the analysis of solving convex quadratic programming with the complementary rotating axis algorithm of classical Lemke, find the localization of the Lemke algorithm. This paper revises the iterative process of the classical Lemke
algorithm based on the Lemke algorithm solving the Linear Complementary Problem, proposes a improved Lemke algorithm and demonstrates that the new algorithm could effectively overcome the localization of solution by The experimental results, decreasing iterative process of the convex quadratic programming, improving the algorithmic efficiency.
Keywords: nonlinear optimization;convex quadratic programming;Linear Complementary Problem; Lemke algorithm。