【OR】YALMIP 含参数规划
Navigator
- mutiparametric programming
- generic example
- Simple MPC example
- Mixed integer multiparametric programming
mutiparametric programming
多参数规划求解需要安装MPT求解器
MPT安装脚本下载
generic example
以下的二次规划(QP),决策变量为z\mathbf{z}z,参数向量为x\mathbf{x}x
%%
A = randn(15,3);
b = rand(15,1);
E = randn(15,2);z = sdpvar(3,1);
x = [0.1;0.2];F = [A*z <= b+E*x];
obj = (z-1)'*(z-1);sol = optimize(F,obj);
value(z)
为了得到关于x\mathbf{x}x的参数解,需要调用函数solvemp
,并且显式告知求解器x\mathbf{x}x是参数变量,并且为参数变量定义范围
%%
x = sdpvar(2, 1);
F = [A*z<=b+E*x, -1<=x<=1];
sol = solvemp(F, obj, [], x)
输出值是MPT的解结构,设置参数得到对应参数下的解
% 设置参数,得到对应解
xx = [0.1; 0.2];
[i, j]=isinside(sol{1}.Pn, xx);
sol{1}.Fi{j}*xx+sol{1}.Gi{j}
可以利用YALMIP提供的nonlinear operator framework整合流程
%%
[sol, diagnostics, aux, value_func, optimal_z]=solvemp(F, obj, [], x);
% assign and value
assign(x, [0.1; 0.2]);
value(optimal_z)
MPT重载了绘图函数,可以绘制出不同参数值下的最优解情况
% plot
plot(value_func);
plot(optimal_z);
Simple MPC example
定义线性系统的数值,预测矩阵和当前状态的变量xxx,控制序列为U(x)U(x)U(x),对于一个5阶段的MPC系统描述如下(create_CHS
是一个cheat_function
用于产生当前状态xxx和输入控制序列UUU的数值矩阵)
N = 5;
A = [2 -1; 1 0];
B = [1; 0];
C = [0.5 0.5];
[H, S]=create_CHS(A, B, C, N);
x = sdpvar(2, 1);
U = sdpvar(N, 1);
预测输出为当前状态和控制序列的函数
Y = H*x+S*U;
设置费用函数为输出序列和控制序列消耗的二次项之和
obj = Y'*Y+U'*U;
设置约束条件,末端约束和控制向量约束
F = [1>=U>=-1, 1>=Y(N)>=1];
在∣x∣≤5|x|\leq 5∣x∣≤5条件下求解控制向量U(x)U(x)U(x)
The explicit solution U(x)U(x)U(x) is obtained by calling
solvemp
with the parametric variable xxx as the fourth argument. Additionally, since we only are interested in the first element of the solution U(x)U(x)U(x), we use a fifth input to communicated this.
F = [F, 5>=x>=-5];
% solve
[sol, digno, aux, value_func, Optimizer]=solvemp(F, obj, [], x, U(1));
求出控制序列如图所示
价值函数如图
Mixed integer multiparametric programming
通过添加二元变量(binary variable
)可以求解扩展MPC问题
N = 3;
A = [2 -1;1 0];
B = [1;0];
C = [0.5 0.5];
[H,S] = create_CHS(A,B,C,N);
x = sdpvar(2,1);
U = sdpvar(N,1);
Y = H*x+S*U;objective = norm(Y,1) + norm(U,1);F = [1 >= U >= -1];
F = [F, 5 >= x >= -5];
加入额外的逻辑约束后,这类非凸算子引入许多二元变量,此时MPC问题比较有效率的求解方式是动态规划
F = [F, ismember(U, [-1:1/3:1])];
[sol,diagnostics,aux,Valuefunction,Optimizer] = solvemp(F,objective,[],x,U(1));
plot(Optimizer);
【OR】YALMIP 含参数规划相关推荐
- 基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划、优化调度等。 含风电、光伏、热电联产、电锅炉等各种设备模型
基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划.优化调度等. 含风电.光伏.热电联产.电锅炉等各种设备模型,适合初学者学习,没有涉及复杂的调度或规划原则,是个有一定基 ...
- 【微电网优化】基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题【含Matlab源码 2266期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题[含Matlab源码 2266期] ...
- 【电力系统】基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题【含Matlab源码 2175期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[电力系统]基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题[含Matlab源码 2175期] 点击上面蓝色字体, ...
- 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制
电气热 综合能源 二阶锥 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制,综合能源系统考虑39节点电网+6节点气网+热网模型,程序注释 ...
- 【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 电力系统机组调度 考虑了源荷不确定性 考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能、风光、火电机组及水电机组
电力系统机组调度 考虑了源荷不确定性 求解:matlab+yalmip+gurobi作为求解器) 内容:考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能.风光.火电机组及水电机组 ...
- 基于MATLAB/yalmip/cplex 的机组最优组合
文章目录 一.绪论 1.研究目的 2.背景概述 二.机组组合优化数学模型 2.1.问题分析 2.2.符号说明 2.3.模型建立 2.4.模型简化 三.算例介绍 总结 一.绪论 1.研究目的 (1).熟 ...
- MATLAB代码:含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度
MATLAB代码:含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度 关键词:冰蓄冷空调 CCHP-MG 多时间尺度优化 冷热电联供 参考文档:<含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度& ...
- matlab yalmip在微电网优化调度中的应用(一)
matlab & yalmip在微电网优化调度中的应用(一)--基础模型 基础模型 组成 目的 建模 编程实现 1.决策变量 2.约束条件 3.目标函数 4.优化设置 5.结果可视化 结果与分 ...
- MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 关键词:碳捕集 虚拟电厂 需求响应 优化调度 电转气协同调度 参考文档:<计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 ...
最新文章
- 怼天怼地怼空气的Linus 喜欢和什么样的人一起工作?
- NPS的几个技术点(在Win 2003中称为Internet 验证服务)
- TP的中间件:过滤处理HTTP的请求与响应
- proxy error: could not proxy request解决方案
- 【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构
- Postman离线安装包
- Cuda beginning
- Android 系统蓝牙 控制手机端音乐暂停 (AVRCP)
- 禁止cmd dos 窗口被关闭
- 2021考研数学二汤家凤接力题典1800【题目册】
- 职称计算机 frontpage 2003,职称计算机考试大纲:FrontPage2003网页设计与制作
- php百度蜘蛛劫持,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
- 基于权重的地图匹配技术
- 给定字符串 s 和 t ,判断 s 是否为 t 的子序列
- [置顶] 程序员面试之道(《程序员面试笔试宝典》)之程序员如何保持身心健康?
- mysql班级学生 一对多怎样设计表_MySQL的多表设计
- 【ninja】Windows下安装ninja环境
- linux预读大小,Linux blockdev命令设置文件预读大小
- ROS学习——Ubuntu 安装软件报错问题(关于进程锁)
- 乐学python慕课答案_乐学英语演讲教程