MATLAB 二次规划函数的使用以及扩展

Posted QWQ_DIODA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 二次规划函数的使用以及扩展相关的知识,希望对你有一定的参考价值。

二次规划问题简介

二次规划指带有二次型数值最优化问题
一般表达形式

二次型,即代表了二次的向量,最优化也就是我们平常所说的求极大值和极小值的问题。

也就是说,当H为对角矩阵时,这个表达式就会变成一个最小二成的问题

H x 2 + f T x Hx^2+f^Tx Hx2+fTx

H代表黑森矩阵(Hessian矩阵)
而H对于最优化结果也有着十分重要的影响:

  • 黑森矩阵是半正定的,则该二次规划为一个凸二次规划,存在全局最优解;
  • 黑森矩阵是正定的,则该二次规划存在全局唯一最优解;
  • 黑森矩阵是非正定的,则该二次规划为非凸二次规划,存在多个平稳点和局部极小值点。

M i n : 0.5 ∗ H ∗ x 2 + f ∗ x Min:0.5*H*x^2+f*x Min:0.5Hx2+fx

但是现实世界的问题往往是多维向量

matlab二次规划问题箱简介

matlab中有着二次规划的工具箱函数,使用方便。

quadprog为二次规划函数,但同时,optimoptions可以对quadprog进行详细的设置。

我们先看主要的quadprog函数

该函数中的参数,如下图公式说明

x0则作为最优化计算的起始点

option则是一个详细设置的句柄,而这个详细设置的句柄就在optimoptions函数中创建。

option为optimoption返回的优化设置句柄。
SolverName: matlab中优化函数有很多,比如fminconquadprogfminimax等等,但是optimoption返回的句柄需要指明用的是哪个优化函数,因此该参数应该为一个对应函数名字符串。
Name & Value:即为对应设置项和设置值。

不同的优化函数有不同的设置项,查询方法就在matlab optimoption函数说明的输入参数-名称-值对组参数

打开quadprog 对应设置项我们就可看到对应设置项的设置方法。

简单代码

options = optimoptions('quadprog','Algorithm','active-set');
x0 = zeros(Nc*Nu+1,1);
delta_U = quadprog(H,g,A_cons,b_cons,[],[],lb,ub,x0,options);

C语言生成注意事项

  • 若要部署到嵌入式设备上,所属设备必须支持double类型计算!!
  • 不能使用problem参数
  • 不能有稀疏矩阵
  • optimoptions中的Algorithm 中参数必须为active-set

以上是关于MATLAB 二次规划函数的使用以及扩展的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 二次规划函数的使用以及扩展

matlab 中0-1规划

matlab 用单纯形法求解二次规划问题

matlab编程:0-1规划问题:向高手求程序代码。

matlab 用改进的单纯形法(Modified Simplex Method)求解二次规划问题

线性共轭梯度法求解正定二次函数极小点以及线性方程组的解--MATLAB源程序