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 含参数规划相关推荐

  1. 基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划、优化调度等。 含风电、光伏、热电联产、电锅炉等各种设备模型

    基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划.优化调度等. 含风电.光伏.热电联产.电锅炉等各种设备模型,适合初学者学习,没有涉及复杂的调度或规划原则,是个有一定基 ...

  2. 【微电网优化】基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题【含Matlab源码 2266期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题[含Matlab源码 2266期] ...

  3. 【电力系统】基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题【含Matlab源码 2175期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[电力系统]基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题[含Matlab源码 2175期] 点击上面蓝色字体, ...

  4. 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制

    电气热 综合能源 二阶锥 采用matlab编制含电气热的综合能源优化程序,采用yalmip和cplex求解,通过二阶锥模型实现相关约束限制,综合能源系统考虑39节点电网+6节点气网+热网模型,程序注释 ...

  5. 【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  6. 电力系统机组调度 考虑了源荷不确定性 考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能、风光、火电机组及水电机组

    电力系统机组调度 考虑了源荷不确定性 求解:matlab+yalmip+gurobi作为求解器) 内容:考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能.风光.火电机组及水电机组 ...

  7. 基于MATLAB/yalmip/cplex 的机组最优组合

    文章目录 一.绪论 1.研究目的 2.背景概述 二.机组组合优化数学模型 2.1.问题分析 2.2.符号说明 2.3.模型建立 2.4.模型简化 三.算例介绍 总结 一.绪论 1.研究目的 (1).熟 ...

  8. MATLAB代码:含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度

    MATLAB代码:含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度 关键词:冰蓄冷空调 CCHP-MG 多时间尺度优化 冷热电联供 参考文档:<含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度& ...

  9. matlab yalmip在微电网优化调度中的应用(一)

    matlab & yalmip在微电网优化调度中的应用(一)--基础模型 基础模型 组成 目的 建模 编程实现 1.决策变量 2.约束条件 3.目标函数 4.优化设置 5.结果可视化 结果与分 ...

  10. MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

    MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 关键词:碳捕集 虚拟电厂 需求响应 优化调度 电转气协同调度 参考文档:<计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 ...

最新文章

  1. 怼天怼地怼空气的Linus 喜欢和什么样的人一起工作?
  2. NPS的几个技术点(在Win 2003中称为Internet 验证服务)
  3. TP的中间件:过滤处理HTTP的请求与响应
  4. proxy error: could not proxy request解决方案
  5. 【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构
  6. Postman离线安装包
  7. Cuda beginning
  8. Android 系统蓝牙 控制手机端音乐暂停 (AVRCP)
  9. 禁止cmd dos 窗口被关闭
  10. 2021考研数学二汤家凤接力题典1800【题目册】
  11. 职称计算机 frontpage 2003,职称计算机考试大纲:FrontPage2003网页设计与制作
  12. php百度蜘蛛劫持,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
  13. 基于权重的地图匹配技术
  14. 给定字符串 s 和 t ,判断 s 是否为 t 的子序列
  15. [置顶] 程序员面试之道(《程序员面试笔试宝典》)之程序员如何保持身心健康?
  16. mysql班级学生 一对多怎样设计表_MySQL的多表设计
  17. 【ninja】Windows下安装ninja环境
  18. linux预读大小,Linux blockdev命令设置文件预读大小
  19. ROS学习——Ubuntu 安装软件报错问题(关于进程锁)
  20. 乐学python慕课答案_乐学英语演讲教程

热门文章

  1. Mac 修改VIM中C语言函数高亮显示
  2. 通过CImageList加载图标 报错
  3. msm8953 单独编译bootloader、kernel和system,以及采用adb fastboot下载镜像的方法
  4. VS2008SP1使用入门
  5. 按键精灵打怪学习-多窗口多线程后台技能
  6. 软件测试学习视频 分享
  7. JSEclipse安装后无法打开js文件_火狐浏览器打开邮箱添加不了附件
  8. 印象笔记 离线版_印象笔记如何离线
  9. php用空格分隔字符串,分割字符串空格
  10. 成品app直播源码,实现图形验证码