首页 > 编程知识 正文

matlab求二元函数极值,matlab求解线性规划问题

时间:2023-05-03 07:49:40 阅读:169486 作者:2033

主题:二次规划问题和MATLAB函数quadprog的使用

二次规划(Quadratic Programming,QP )问题的一般形式如下:

其中,是标量,是阶对称矩阵。 很容易知道二次计划的Hesse矩阵相等。 在半正定矩阵的情况下,将该计划称为凸二次计划,否则称为非凸计划。 在凸二次规划的情况下,目标函数q(x )是凸函数。 当至少一个向量x满足约束且q(x )在可行域上有下界时,二次规划问题有全局最小值x。 如果g是正则矩阵,则将该计划称为严格凸二次计划,此时全局最小值是唯一的。 当G=0时,二次规划问题为线性规划问题。 根据优化理论,一个点x变为全局最小值所需要的条件是满足Karush-Kuhn-Tucker(KKT )条件。 当q(x )是凸函数时,KKT条件也是充分条件。

关于非凸计划,由于存在比较多的驻地,所以很难求解。

根据约束条件,二次规划可以分为等式约束二次规划问题和不等式约束二次规划问题。 等式约束二次规划问题只包含等式约束。 常见的解法有直接消去法、广义消去法、拉格朗日(Lagrange )法; 关于不等式约束二次规划问题,基本思路是将不等式约束转换为等式约束求解。 一般的解法有有效集(active set )法,有效集法在每个步骤的迭代中将有效约束作为等式约束,然后可以用拉格朗日法求解,反复进行直到求得最优解。

如文献[4][5]所示,很多学者专门研究各种二次计划的求解方法,对于不是数学专业的人来说,如何将二次计划作为道具来使用更为重要。

用MATLAB求解二次规划的函数为quadprog,具体使用方法可咨询求助文件。

【例】求下面这样的二次规划问题。

【分析】首先应该以如下矩阵形式表示目标函数:

这里详细说明写成矩阵形式的方法。

首先,向量x很容易写。 因为f(x )包含两个变量x1和x2

然后,由于向量f仅与两个变量x1及x2的一维项相关联,因此fTx=-2x1-6x2,并且因此

最后,请注意,矩阵h只涉及两个变量x1和x2的二次项,因此这里与二次类型不同。 这里有1/2的系数,所以矩阵h的元素是二次型中矩阵元素大小的两倍。 给出一个规律。 设矩阵h的第I行第j列的元素的大小为h(I,j ),二次项xixj的系数为a ) I,j )

在该例中,由于作为x1的平方项的x1x1 (由于系数为1/2,因此第1行第1列的元素为1=2* ) )1/2)、作为x2的平方项的x2x2 )系数为1,因此第2行第2列的元素为2=2*1、x1x2项)

目标函数结束后,我们来看看约束的部分。 约束必须写如下:

在本例中,限制条件只有不等式限制,所以Aeq和beq为空,对于a和b很容易得到。

另一方面,在制约条件中变量x1和x2只被赋予了下限,没有被赋予上限,所以ub为空,

得到所有参数,将参数输入MATLAB,然后编程如下。 ()代码直接在Command Window中输入一行,因此每行前面都有符号“”。 ) ) ) ) )

H=[1 -1; -12 ); f=[-2; -6); A=[1 1; -1 2; 2 ); b=[2; 2; 3 ); lb=[0; 0 ); [x,fval,exitflag,output,lambda]=quadProg(h,f,a,b,[],[],lb ) )输出以下结果:

warning :大规模- scalealgorithmdoesnotcurrentlysolvethisproblemformulation, using medium-scalealgorithminstead.inquadprogat 291 optimization terminated.x=0. 6667.3333 fval=-8.2222 exit flag=1ouat dium-scale : active-set ' firstorderopt : [ ] CG iterations 3360 [ ] message : ' optimization terminated.' lambda=

【1】gjdxy,dqdds,ddppx .优化方法(第二版(m ) .北京:高等教育出版社,2010。

【2】悲伤之门,熟悉ATGdym.MATLAB优化计算[M] .北京:电子工业出版社,2009。

【3】lnsunqingshen,464518439 .百度知道什么是凸二次计划,2011-06-20。

【4】笑战斗机.若干特殊凸二次规划问题的求解算法研究[D] .山东科技大学,2013

【5】jddsp .边界约束凸二次规划的求解[D] .南京航空航天大学,2005 .

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。