【OR】YALMIP 二次规划问题
Navigator
- QP
- Large-scale QP
QP
假设数据生成过程为
yt=atx+ety_t=a_tx+e_t yt=atx+et
目标是估计出过程变量xxx
x = [1 2 3 4 5 6]';
t = (0:0.02:2*pi)';
A = [sin(t) sin(2*t) sin(3*t) sin(4*t) sin(5*t) sin(6*t)];
e = (-4+8*rand(length(t),1)); % add noise
e(100:115) = 30;
y = A*x+e;
plot(t,y);
为了求解1-norm
回归问题,定义残差变量,设置目标函数为残差最小化,调用YALMIP
求解
xhat = sdpvar(6, 1);
residuals = y-A*xhat;
bnd = sdpvar(length(residuals), 1);
% 残差约束
cons = [-bnd<= residuals<= bnd];optimize(cons, sum(bnd));
x_L1=value(xhat);
设置为2-norm
回归问题,即QP求解
optimize([], residuals'*residuals);
x_L2=value(xhat);
设置为∞-norm
问题(最小化向量中的绝对值最大的元素)
bnd = sdpvar(1, 1);
cons = [-bnd<=residuals<=bnd];
optimize(cons, bnd);
x_inf = value(xhat);
绘制不同目标函数下的拟合图像
%% plot
hold on;
h1=plot(t, y);
h2=plot(t, A*x_L1);
h3=plot(t, A*x_L2);
h4=plot(t, A*x_inf);
legend([h1 h2 h3 h4], {'y', 'L1-norm', 'L-norm', 'L-inf norm'});
hold off;
优化求解过程可以在YALMIP
中简写表示
res_1=optimize([], norm(residuals, 1));
res_2=optimize([], norm(residuals, 2));
res_inf=optimize([], norm(residuals, inf));
Large-scale QP
The 2-norm solution is most easily stated in the described QP formulation, although it in some cases is more efficient in
YALMIP
to express the problem using a 2-norm, which will lead toSOCP
.
aux = sdpvar(length(residuals),1);
optimize([aux == residuals],aux'*aux);
在求解大规模QP问题时,可以引入辅助变量和等式约束,这样会使得二次项变得稀疏,求解器可以更快求解. 设QP问题的目标函数为
{xTQxQ=RTR使用Cholesky分解矩阵,降低计算复杂度\begin{cases} x^TQx\\ Q=R^TR\quad\text{使用Cholesky分解矩阵,降低计算复杂度} \end{cases} {xTQxQ=RTR使用Cholesky分解矩阵,降低计算复杂度
R = chol(Q);
z = sdpvar(length(x),1);
optimize([z == R*x],z'*z);
如果知道QQQ是一个低秩矩阵,可以进行如下矩阵分解优化
R = my_smart_factorization(Q);
z = sdpvar(size(R,2),1);
optimize([z == R*x],z'*z);
一种节省内存的方式
z = sdpvar(1);
optimize([z == sum(x)],z^2);
【OR】YALMIP 二次规划问题相关推荐
- YALMIP的简单说明
最近在做论文时,涉及到最优化问题,而最优化里面很多时候涉及的是二次约束二次规划QCQP这样的非凸问题,一般地,这样的非凸问题是得不到全局精确的最优解的,需要另辟蹊径.常用的有半定松弛SDR.将非线性松 ...
- 基于MATLAB的Cplex、Yalmip环境安装
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.安装前准备 二.Cplex安装 三.Yalmip安装 四.算例 结果展示: 前言 MATLAB是一个强大的数值计算 ...
- 优化:YALMIP一般使用方法及例程
文章目录 线性规划例子 二次规划例子 二阶锥规划 一般优化问题 全局优化问题 参考 可以说,yalmip是一位"集大成者",它不仅自己包含基本的线性规划求解算法,比如linprog ...
- matlab yalmip
YALMIP 是一个用于模型构建和优化问题的 MATLAB 工具包.它支持各种数学优化问题,如线性规划.非线性规划.二次规划.项目管理等,并且可以与多种后端优化器(如 Gurobi 和 MOSEK)集 ...
- 使用Yalmip+matlab求解主从博弈(双层规划)问题 | 教程(二)
yalmip官方学习网址: https://yalmip.github.io/command 作为yalmip小白,本文主要根据实际代码运用,进行yalmip学习. 学习以yalmip官方网站为主,其 ...
- yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)
转自,原文: https://www.cnblogs.com/kane1990/p/3428129.html 最近建立了一个网络流模型,是一个混合整数线性规划问题(模型中既有连续变量,又有整型变量). ...
- matlab yalmip 例程,YALMIP工具箱使用范例.pdf
YALMIP工具箱使用范例 YALMIP工具箱简介 东北大学数学系 王琪 wangqimath@126.com YALMIP工具箱简介 • 基于符号运算工具箱编写 • 一种定义和求解高级优化问题的模化 ...
- 路径调度问题(CVRP)后续之如何在MATLAB中安装YALMIP及CPLEX包
订阅博主专栏的用户可私信博主获取安装包,不用额外再付费下载安装包. 安装包下载地址:https://download.csdn.net/download/wenyusuran/14954633 一.M ...
- MATLAB实战系列(十四)-如何通过YALMIP和CPLEX求解小规模(CVRP)路径调度问题(附MATLAB代码)
前言 有约束条件的车辆路径问题(CVRP),可以看作是TSP(Traveling Salesman Problem,旅行商问题)的拓展.由于TSP已经被证明是NP难问题,所以CVRP也是NP难问题. ...
- MATLAB实战系列(二)- 如何使用YALMIP检验数学模型的正确性?
参加数学建模竞赛的小伙伴们,为了能让大家在比赛的第一个步骤不出错,即在模型建立这个步骤不出错,因此,今天准备讲一讲如何检验自己构建的数学模型是否合理. 本次推文分为三部分: 1)YALMIP工具箱的安 ...
最新文章
- 关于c语言程序开发过程 下面说法错误的是,c语言笔试真题
- 11家车企联手高通、大唐,加速V2X在华商用部署
- js获取和设置属性的方法
- VTK:Points之PoissonExtractSurface
- python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!
- 动漫的python语言代码大全_下载动漫壁纸-Python代码
- 真的没办法一心一意麽? php 文件操作
- java多线程批量读取文件(七)
- Flink学习笔记:搭建Flink on Yarn环境并运行Flink应用
- php js后端渲染,webpack后端渲染详解
- 使用sqoop导出mysql数据时错误处理【com.mysql.jdbc.RowDataDynami】
- 2018年python工作好找吗-2018年Python发展前景如何?Python就业有哪些方向?
- json_extract提取复杂json_Python中高效使用JSON的四个小窍门
- 数据中心常说的IDC,EDC,ODC,DC分别指什么类型机房?
- java 数组声明并初始化_Java数组的声明与初始化
- PCL学习笔记(十八)-- ConditionalRemoval和RadiusOutliersRemoval滤波器移除离群点
- 深圳财经生活频道--杨百万
- ADC 学习笔记(二)指标参数总结
- js获取n天后的日期
- 【自动化接口测试】FitNesse使用启蒙篇