当前位置:网站首页>【MPC】①二次规划问题MATLAB求解器quadprog
【MPC】①二次规划问题MATLAB求解器quadprog
2022-07-01 10:14:00 【后厂村路蔡徐坤】
文章目录
一、概述
二次规划是指约束为线性的二次优化问题。在Matlab中,quadprog是具有线性约束的二次目标函数求解器。
(一)二次规划标准形式
min x 1 2 x T H x + f T x \mathop {\min }\limits_x \frac{1}{2}{ {\bf{x}}^{\bf{T}}}{\bf{Hx}} + { {\bf{f}}^{\bf{T}}}{\bf{x}} xmin21xTHx+fTx
其实H是Hessian 阵,是n乘n的对称阵。
1、海森矩阵的正定性与函数最优性
- 如果 Hessian 矩阵是半正定的,则我们说该式是一个凸二次规划,在这种情况下该问题的困难程度类似于线性规划。如果有至少一个向量满足约束并且在 可行域 有下界,则凸二次规划问题就有一个全局最小值。
- 如果是正定的,则这类二次规划为严格的凸二次规划,那么全局最小值就是唯一的。
- 如果是一个 不定矩阵 ,则为非凸二次规划,这类二次规划更有挑战性,因为它们有多个平稳点和局部极小值点。
2、基本数学概念
- 基础概念:https://blog.csdn.net/jbb0523/article/details/50598523
- 凸 严格凸,举例:https://zhuanlan.zhihu.com/p/399549564
3、对称阵的正定性判断
- 正定矩阵:矩阵的所有特征值均大于0
- 半正定矩阵:矩阵的所有特征值均非负
- 负定矩阵:矩阵所有特征值均小于0
https://blog.csdn.net/Infinity_07/article/details/109569450

4、matlab正、半正、负定阵生成,与quadprog验证
(1)matlab判断正定性:
% 判断矩阵m是正定、半正定还是负定
m = [2 -1; -1 2];
if issymmetric(m) % 检查矩阵是否对称
% disp('矩阵对称');
d = eig(m); % 计算矩阵特征值
if all(d > 0)
disp('矩阵正定');
elseif all(d >= 0)
disp('矩阵半正定');
else
disp('矩阵负定');
end
else
disp('矩阵不对称');
end
(2)matlab产生正定阵的操作
https://blog.csdn.net/zhao523520704/article/details/52918376/
H_posi=diag([1,2,3]);
H_semi=diag([0,2,3]);
H_nega=diag([-1,-2,-3]);
(二)输入参数
| 符号 | 参数含义 |
|---|---|
| H | 二次目标矩阵 |
| f | 线性目标向量 |
| A | 线性不等式矩阵 |
| b | 线性不等式向量 |
| Aeq | 线性等式约束矩阵 |
| beq | 线性等式约束向量 |
| lb | 下界 |
| ub | 上界 |
(三)输出参数
| 符号 | 参数含义 |
|---|---|
| x | 解,以实数向量形式返回 |
| wsout | 解的热启动对象 |
| fval | 再解处的目标函数值 |
| exitflag | quadprog停止的原因 |
| output | 有关优化过程的信息,以结构体形式返回 |
| lambda | 解处的拉格朗日乘数 |
二、MATLAB基础语法
x = quadprog(H,f)
x = quadprog(H,f,A,b)
x = quadprog(H,f,A,b,Aeq,beq)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
x = quadprog(problem)
[x,fval] = quadprog(___)
[x,fval,exitflag,output] = quadprog(___)
[x,fval,exitflag,output,lambda] = quadprog(___)
[wsout,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,ws)
三、MATLAB典型求解样例
(一)具有线性不等式约束的二次规划

H = [1 -1; -1 2];
f = [-2; -6];
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b);
x =
0.6667
1.3333
fval = -8.2222
exitflag =
1
(二)具有线性等式约束的二次规划

H = [1 -1; -1 2];
f = [-2; -6];
Aeq = [1 1];
beq = 0;
[x,fval,exitflag,output,lambda] = ...
quadprog(H,f,[],[],Aeq,beq)
x = -0.8000
0.8000
fval = -1.6000
exitflag =
1
(三)具有线性约束和边界的二次规划

H = [1,-1,1
-1,2,-2
1,-2,4];
f = [2;-3;1];
lb = zeros(3,1);
ub = ones(size(lb));
Aeq = ones(1,3);
beq = 1/2;
x = quadprog(H,f,[],[],Aeq,beq,lb,ub);
边栏推荐
- PO模式深入封装
- 亿学学堂帮个人开的证券账户安全吗?是不是有套路
- Win11账号被锁定无法登录怎么办?Win11账号被锁定无法登录
- Meituan P4 carefully collated microservice system architecture design manual to see the world of microservice architecture
- Thread Basics
- 442. 数组中重复的数据
- 京东与腾讯续签三年战略合作协议;起薪涨至26万元!韩国三星SK争相加薪留住半导体人才;Firefox 102 发布|极客头条...
- 线程基础知识
- CRC check
- CodeBlocks 左侧项目栏消失,workspace 自动保存项目,Default workspace,打开上次的workspace,工作区(图文教程,已解决)
猜你喜欢
![[fxcg] large scale job hopping may be one of the driving forces behind the soaring inflation in the United States](/img/f6/be4e1affb9568acdedb94117b9b037.jpg)
[fxcg] large scale job hopping may be one of the driving forces behind the soaring inflation in the United States

谁还在买“三只松鼠”们

SQLAchemy 常用操作

leetcode:111. Minimum depth of binary tree

It is interesting to understand MMAP in this way!

关于#SQL#的问题,如何解决?

C one line code calculates the MD5 value of the file - codeplus series

缺少比较器,运放来救场!(运放当做比较器电路记录)
![C [byte array] and [hexadecimal string] mutual conversion - codeplus series](/img/d2/dad88f53701c7cd7638bd4983cbb4b.png)
C [byte array] and [hexadecimal string] mutual conversion - codeplus series

这样理解mmap,挺有意思!
随机推荐
Error: missing revert data in call exception
Tearful eyes, it's not easy to change jobs. Three rounds of interviews, four hours of soul torture
Initial experience of Flink, a mainstream real-time stream processing computing framework
大佬们,数据湖iceberg的数据,怎样导出到mysql? 有什么工具? sqoop,datax都没
零基础入行软件测试必看,10年测试老鸟的良心建议(共15条)
php 实现抽奖功能
Ubuntu system installation and MySQL configuration
历史上的今天:九十年代末的半导体大战;冯·诺依曼发表第一份草案;CBS 收购 CNET...
【黑马早报】俞敏洪称从来不看新东方股价;恒驰5将于7月开启预售;奈雪虚拟股票或涉嫌非法集资;7月1日起冰墩墩停产...
bash: ln: command not found
12. Gateway new generation gateway
有大佬知道这是为啥吗?表结构都是刚直接复制的源表 mysql-cdc
Centos 配置discuz 提示请检查 mysql 模块是否正确加载
SQLAchemy 常用操作
CodeBlocks 左侧项目栏消失,workspace 自动保存项目,Default workspace,打开上次的workspace,工作区(图文教程,已解决)
Thread Basics
推荐一款 JSON 可视化工具神器!
STM32 inverter power supply design scheme, based on STM32F103 controller [easy to understand]
C one line code calculates the MD5 value of the file - codeplus series
超标量处理器设计 姚永斌 第4章 分支预测 --4.1 小节摘录