蒋俊正,周 芳
(桂林电子科技大学1信息与通信学院,2.生命和环境科学学院,广西桂林 541004)
Sedumi软件包最早由加拿大Mcmaster大学的研究人员于上世纪90年代后期提出,它基于Matlab语言开发主要用于求解半定规划问题[1]。在“数字信号处理”和“最优化理论与方法”等电子信息类课程教学和科研中,很多问题都可以归结为某种优化问题,可以直接或间接地使用Sedumi软件包进行有效求解。
半定规划问题可以直接使用Sedumi软件包进行求解[2-4]。下面笔者分别介绍线性规划、二阶锥规划和半定规划问题的标准形式以及求解的Matlab代码。
1)线性规划

用于求解问题(1)的Matlab代码为
[x,y,info]=sedumi(A,b,c)
代码中向量y是最优解,info包含了一些辅助信息,比如求解耗时等。
2)二阶锥规划

用于求解问题(2)的Matlab代码为
K.1=m;
K.q=q;
[xs,ys,info]=sedumi(At,bt,ct,K);
代码中m等于矩阵D的行数,即线性约束的个数。代码参数为

3)半定规划

式中,矩阵Fi,i=0,…,p为对称矩阵。用于求解问题(4)的Matlab代码为
K.S=size(F0,1);
[x,y,info]=sedumi(At,bt,ct,K);
info代码中参数为

由于Sedumi软件包在求解中采用了对偶理论,因此求解效率很高。
然而在实际中,很多的优化问题并不具备上述的三种标准形式,导致Sedumi软件包的使用并非如上述那么直观。因此,如何将非标准形式转化为标准形式,是有效利用Sedumi的关键所在。
我们以二次规划问题转化为二阶锥规划问题为例进行说明。二次规划问题是指目标函数是关于优化变量的二次函数、约束是线性函数的优化问题:

其中,矩阵A是正定的。引入辅助变量 ,问题(6)可等价为


式中代码参数为……p>