当前位置:网站首页>[MPC] ① quadratic programming problem matlab solver quadprog
[MPC] ① quadratic programming problem matlab solver quadprog
2022-07-01 10:21:00 【Houchang Village Road caixukun】
List of articles
One 、 summary
Quadratic programming is a quadratic optimization problem with linear constraints . stay Matlab in ,quadprog It is a quadratic objective function solver with linear constraints .
( One ) Standard form of secondary Planning
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
Actually H yes Hessian front , yes n ride n Symmetric matrix of .
1、 Positive definiteness and function optimality of Hessian matrix
- If Hessian The matrix is positive semidefinite , Then we say that the formula is a convex quadratic programming , In this case, the difficulty of the problem is similar to that of linear programming . If at least one vector satisfies the constraint and The feasible region There is a lower bound , Then the convex quadratic programming problem has a global minimum .
- If it is positive definite , Then this kind of quadratic programming is strictly convex quadratic programming , Then the global minimum is unique .
- If it's a Indefinite matrix , Is a nonconvex quadratic programming , This kind of secondary planning is more challenging , Because they have multiple stationary points and local minimum points .
2、 Basic mathematical concepts
- Basic concepts :https://blog.csdn.net/jbb0523/article/details/50598523
- Convex Strictly convex , give an example :https://zhuanlan.zhihu.com/p/399549564
3、 On the positive definiteness of symmetric matrices
- Positive definite matrix : All eigenvalues of the matrix are greater than 0
- Positive semidefinite matrices : All eigenvalues of the matrix are non negative
- Negative definite matrix : All eigenvalues of the matrix are less than 0
https://blog.csdn.net/Infinity_07/article/details/109569450

4、matlab just 、 Half positive 、 Negative definite matrix generation , And quadprog verification
(1)matlab Judge positive qualitative :
% Judgment matrix m It's positive definite 、 Semi positive definite or negative definite
m = [2 -1; -1 2];
if issymmetric(m) % Check whether the matrix is symmetrical
% disp(' Matrix symmetry ');
d = eig(m); % Calculate the eigenvalue of the matrix
if all(d > 0)
disp(' The matrix is positive definite ');
elseif all(d >= 0)
disp(' Matrix positive semidefinite ');
else
disp(' Matrix negative definite ');
end
else
disp(' Matrix asymmetry ');
end
(2)matlab Operation of generating positive definite matrix
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]);
( Two ) Input parameters
| Symbol | Parameter meaning |
|---|---|
| H | Quadratic objective matrix |
| f | Linear objective vector |
| A | Linear inequality matrix |
| b | Linear inequality vector |
| Aeq | Linear equality constraint matrix |
| beq | Linear equality constraint vector |
| lb | Lower bound |
| ub | upper bound |
( 3、 ... and ) Output parameters
| Symbol | Parameter meaning |
|---|---|
| x | Explain , Returns... As a vector of real numbers |
| wsout | Hot start object of solution |
| fval | The value of the objective function at the re solution |
| exitflag | quadprog The reason for the stop |
| output | Information about the optimization process , Returns... As a structure |
| lambda | Lagrange multiplier at the solution |
Two 、MATLAB Basic grammar
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)
3、 ... and 、MATLAB Typical solution examples
( One ) Quadratic programming with linear inequality constraints

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
( Two ) Quadratic programming with linear equality constraints

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
( 3、 ... and ) Quadratic programming with linear constraints and boundaries

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);
边栏推荐
- 内存泄漏定位工具之 valgrind 使用
- 数据库的增删改查问题
- What is cloud primordial? Will it be the trend of future development?
- 【邂逅Django】——(二)数据库配置
- Wireshark TS | 快速重传和乱序之混淆
- 缺少比较器,运放来救场!(运放当做比较器电路记录)
- What a high commission! The new programmer's partner plan is coming. Everyone can participate!
- 有大佬知道这是为啥吗?表结构都是刚直接复制的源表 mysql-cdc
- 4hutool practice: dateutil format time [easy to understand]
- C# 一行代码计算文件的MD5值 - CodePlus系列
猜你喜欢

基于Matlab的开环Buck降压斩波电路Simulink仿真电路模型搭建

数字藏品新一轮热度开启

Fried money, lost 10million.

I like two men...

SQL optimization - in and not in, exist

Common penetration tools -goby

北汽蓝谷:业绩承压,极狐难期

Error: missing revert data in call exception

What legal risks and qualifications should be paid attention to when building a digital collection platform?

项目必用的全局异常处理器,你学会了吗
随机推荐
PO模式深入封装
venv: venv 的目录结构
Is it safe to buy funds on the access letter?
MySQL常用命令
TC8:UDP_ USER_ INTERFACE_ 01-08
Finally, someone made it clear what DRAM and NAND flash are
Kotlin coprocessor scheduling switch threads it's time to unravel the truth
sql语句修改字段类型「建议收藏」
leetcode:111. Minimum depth of binary tree
[fxcg] large scale job hopping may be one of the driving forces behind the soaring inflation in the United States
CRC 校验
leetcode:111. 二叉树的最小深度
有大佬知道这是为啥吗?表结构都是刚直接复制的源表 mysql-cdc
button按钮清除边框
What legal risks and qualifications should be paid attention to when building a digital collection platform?
How to understand JS promise
How did the data center change from "Britney Spears" to "Mrs. cow"?
C# [字节数组]与[16进制字符串]互相转换 - CodePlus系列
STM32 inverter power supply design scheme, based on STM32F103 controller [easy to understand]
It is interesting to understand MMAP in this way!