当前位置:网站首页>【MPC】②quadprog求解正定、半正定、负定二次规划
【MPC】②quadprog求解正定、半正定、负定二次规划
2022-07-01 10:14:00 【后厂村路蔡徐坤】

一、概述
第一期文章已经详细介绍,二次规划问题和matlab的quadprog函数的使用方法,详情可见:quadprog函数详解。在二次规划问题中,根据海森矩阵的正定性,二次规划问题可以分为严格凸、凸、非凸二次型问题。为了验证,matlab的quadprog函数对三种二次型问题的求解能力,本文生成各种类型的海森矩阵,并尝试用quadprog进行求解。
二、Matlab验证
(一)海森正定、半正定、负定矩阵生成
海森矩阵首先需要满足矩阵对称性,同时根据特征值判定矩阵的正定性。因此,为了简单起见直接生成对角阵进行验证。
H_posi=diag([1,2,3]);
H_semi=diag([0,2,3]);
H_nega=diag([-1,-2,-3]);
(二)矩阵正定性验证
矩阵正定性判断:主要是利用eig函数求解矩阵的特征值,并判单特征值的正负。
% 判断矩阵m是正定、半正定还是负定
% 需要输入矩阵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
(三)各类型二次型求解程序
clear;clc;
H_posi=diag([1,2,3]);
H_semi=diag([0,2,3]);
H_nega=diag([-1,-2,-3]);
A = [1 1 1; -1 2 1; 2 1 1];
b = [2; 2; 3];
f = [2;-3;1];
lb = zeros(3,1);
ub = ones(size(lb));
Aeq = ones(1,3);
beq = 1/2;
x_posi = quadprog(H_posi,f,A,b,Aeq,beq,lb,ub)
x_semi = quadprog(H_semi,f,A,b,Aeq,beq,lb,ub)
x_nega = quadprog(H_nega,f,A,b,Aeq,beq,lb,ub)
三、求解结果
三种类型的二次规划问题,quadprog函数均能求解。但是非凸情况,会有非凸函数提示。
找到满足约束条件的最小值。
优化完成,因为目标函数在可行的方向上是不递减的。 在可行的方向上不减少,在最优性容许值内。
并且约束条件在约束条件容许值内得到满足。 <停止标准的详细信息>
四、quadprog算法选择
quadprog求解器包含三种二次规划算法,可以使用 optimoptions 配置 Algorithm 选项。
- ‘interior-point-convex’(默认值)
- ‘trust-region-reflective’
- 'active-set
算法选择原则:
- 如果您遇到凸问题,或不知道您的问题是否为凸问题,请使用 ‘interior-point-convex’。
- 如果您的非凸问题只有边界或只有线性等式约束,请使用 ‘trust-region-reflective’。
- 如果您有具有大量线性约束而没有大量变量的半正定问题,请尝试 ‘active-set’。
边栏推荐
- 【邂逅Django】——(二)数据库配置
- Is the securities account opened by Yixue school for individuals safe? Is there a routine
- 【Laravel 】faker数据填充详解
- 全球基金和资管的股票建仓率达到15年内新低
- BSN长话短说之十:如何保证NFT的安全
- Kotlin 协程调度切换线程是时候解开真相了
- STM32逆变器电源设计方案,基于STM32F103控制器[通俗易懂]
- What if the win11 account is locked and unable to log in? Win11 account is locked and unable to log in
- STM32 inverter power supply design scheme, based on STM32F103 controller [easy to understand]
- tryhackme圣诞挑战2021-Advent of Cyber 3-day1-IDOR漏洞,不安全的访问控制漏洞
猜你喜欢

The stock position building rate of global funds and asset management reached a new low in 15 years

投稿开奖丨轻量应用服务器征文活动(5月)奖励公布

Meituan P4 carefully collated microservice system architecture design manual to see the world of microservice architecture

Kotlin coprocessor scheduling switch threads it's time to unravel the truth

TC8:UDP_USER_INTERFACE_01-08

新数据库时代,不要只学 Oracle、MySQL

Floyd repeat

历史上的今天:九十年代末的半导体大战;冯·诺依曼发表第一份草案;CBS 收购 CNET...

uniapp微信小程序组件按需引入

SQL optimization - in and not in, exist
随机推荐
TC8:UDP_USER_INTERFACE_01-08
日本教授起诉英特尔FPGA与SoC产品侵犯一项设计专利
数字藏品新一轮热度开启
The "China Mobile Chain" state secret engine was officially launched on BSN
SQL server2014 failed to delete the database, with an error offset of 0x0000
历史上的今天:九十年代末的半导体大战;冯·诺依曼发表第一份草案;CBS 收购 CNET...
12. Gateway new generation gateway
零基础入门测试该学什么?最全整理,照着学就对了
Have you learned the necessary global exception handler for the project
PHP string to binary conversion
线程基础知识
venv: venv 的目录结构
“中移链”国密引擎在BSN正式上线
C one line code calculates the MD5 value of the file - codeplus series
亿学学堂帮个人开的证券账户安全吗?是不是有套路
请问有没有人知道clickhouse 中 limit语句执行的逻辑,图片中,上面的SQL可以执行成功
Which securities company has a low, safe and reliable Commission for stock trading and account opening
What a high commission! The new programmer's partner plan is coming. Everyone can participate!
有大佬知道这是为啥吗?表结构都是刚直接复制的源表 mysql-cdc
【黑马早报】俞敏洪称从来不看新东方股价;恒驰5将于7月开启预售;奈雪虚拟股票或涉嫌非法集资;7月1日起冰墩墩停产...