随机模型预测控制(SMPC)——考虑概率约束(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

模型预测控制(MPC)又称为滚动时域控制和滚动时域控制,是一种强有力的工程应用技术。MPC的价值主要体现在其处理约束的内在能力,同时最小化一些代价(或最大化一些回报)。MPC的基本思想是用有限时域最优控制问题来反复逼近无限时域约束最优控制问题。在每一个时间步,这样一个有限时域问题被解决,并且只有第一个输入以一种后退时域的方式被应用到系统中。

MPC使用一个对象模型来预测其未来的行为,然后根据预测计算出一个最优的输入轨迹。然而,在大多数实际应用中,由于模型的不确定性或外界干扰,都无法得到精确的模型。在文献中,不确定性通常是通过描述一个鲁棒MPC问题来解决的,在这个问题中,不确定性被假定为有界的,并且计算出满足每个可能的不确定性实现的约束的控制律。这种悲观的观点可能会显著降低控制器的整体性能,因为需要防范低概率不确定性异常值。

随机MPC(SMPC)提供了另一种对不确定性不那么悲观的观点。在SMPC中,约束是概率解释的,允许很小的违反概率。在这种情况下,甚至可以研究无界不确定性。不幸的是,SMPC问题通常很难解决,只能近似地或通过施加特定的问题结构来解决。在这种情况下,我们主要关注以下问题:但是如果不确定性没有界,会发生什么?或者当它不是均匀分布的时候?一个不太保守的方法显然是考虑到这些可能性,确定不确定性的适当分布,并制定一个随机的MPC问题。

📚2 运行结果

主函数部分代码:

% plot inputs and states 
​
%% run smpc (runs new MPC simulation)
[x,u, x1_limit, sig, beta, s, comp_time]= run_mpc;
​
​
​
%% plot input and states
​
% set up figure for input and states
figure(2)
clf
​
plot_noise = 1;         % plot noise? 0: no; 1: yes (if yes: computation time will also be plotted)
% if noise was not saved, automatically swich to 0
if exist('s','var') == 0
    plot_noise = 0;
end
​
​
steps = 0:length(x)-1;  % get steps (last input is computed but not applied) 
​
​
% state x1
if plot_noise == 0
    subplot(3,1,1)
else
    subplot(3,2,1)
end
hold on
title('state - x1')
grid on
plot(steps,x(:,1), 'b', 'Linewidth',0.8)
% plot constraint only if close enough
if x1_limit < 40
    yline(x1_limit, 'r', 'Linewidth',0.8)
    ylim([-0.5 x1_limit+0.5]);
    gamma1 = sqrt(2*[1;0]'*[sig^2 0; 0 sig^2]*[1;0])*erfinv(2*beta-1); % chance constraint addition for first predicted step
    yline(x1_limit-gamma1, 'r--', 'Linewidth',0.8)
end
xlim([steps(1) steps(end)]);
hold off
​
​
% state x2
if plot_noise == 0
    subplot(3,1,2)
else
    subplot(3,2,3)
end
hold on
title('state - x2')
plot(steps,x(:,2), 'b', 'Linewidth',0.8)
grid on
ylim([-0.5 5.5]);
xlim([steps(1) steps(end)]);
hold off
​
​
% input u
if plot_noise == 0
    subplot(3,1,3)
else
    subplot(3,2,5)
end
K = [0.2858 -0.4910];
u_applied = [];
for i = 1:length(u)
    u_applied(i,1) = u(i,1) - K*[x(i,1); x(i,2)];
end
hold on
title('input - u')
grid on
plot(steps,u_applied(:,1), 'b', 'Linewidth',0.8)
yline(0.2,'r', 'Linewidth',0.8)
yline(-0.2,'r', 'Linewidth',0.8)
ylim([-0.25 0.25]);
xlim([steps(1) steps(end)]);
hold off
​
​
% plot noise (given seeding)
% rng(30,'twister'); % hardcoded seeding
rng(s);             % retrieve seeding from run_mpc
​
w = [];
​
for i = 1: length(x)
    w(i,1) = normrnd(0,sig);
    w(i,2) = normrnd(0,sig);
end
​
% plot subplots with noise
if plot_noise == 1
    
    w_max = max(max(abs(w))); % get largest uncertainty  
        
    
    subplot(3,2,2)
    hold on
    title('noise - w1')
    plot(steps, w(:,1), 'b', 'Linewidth',0.8)
    % plot standard deviation
    yline(sig,'r:', 'Linewidth',0.8)
    yline(-sig,'r:', 'Linewidth',0.8)
    if w_max > 0
        ylim([-1.2*w_max 1.2*w_max])
    end
​

🎉3 参考文献

[1]T. Br¨udigam, M. Olbrich, M. Leibold, and D. Wollherr. Combining stochastic and scenario model predictive control to handle target vehicle uncertainty in autonomous driving. In 21st IEEE International Conference on Intelligent Transportation Systems, Maui, USA, 2018.​

部分理论引用网络文献,若有侵权联系博主删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息安全技术 健康医疗数据安全指南 付下载地址

声明 本文是学习GB-T 39725-2020 信息安全技术 健康医疗数据安全指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 数据使用管理办法示例 第一章 总则 第一条 为规范数据使用流程&#xff0c;根据国家相关法律法规及相关规定&#xff0c;特制定本…

YOLOv5实时检测调用usb摄像头 [ jetson nano -Ubuntu18.4 - Astra pro相机 ]

在基于rosmaster小车的jetson nano主板部署yolo v5目标检测网络的时候发现无法打开摄像头Astra pro进行实时监测&#xff0c;所以记录一下解决方法&#xff1a; 0.确认摄像头可用 首先先参考我上一篇博客所记录的方法打开USB摄像头&#xff1a; Jetson Nano打开USB摄像头&…

MySQL(二)

MySQL - 常用命令 1. 常用命令2. 操作数据库2.1 操作数据库2.2 创建数据库表2.3 数据库存储引擎2.4 修改数据库(ALTER<改变>) 3. MySQL数据管理3.1 外键3.2 DML语言1. 添加 insert2. 修改 update3. 删除 delete 4. DQL查询数据4.1 基础查询4.2 条件查询4.3 分组查询4.4 连…

生成式AI火爆全球,你是否已经做好了准备?

2023年&#xff0c;随着ChatGPT的火爆全球&#xff0c;生成式AI也引发了各界人士的广泛关注。一时间&#xff0c;从国际科技巨头到国内人工智能企业&#xff0c;几乎所有我们耳熟能详的科技公司&#xff0c;都纷纷杀入了生成式AI市场。 作为全球云计算技术的开创者和领导者&…

HTML+CSS+JS 学习笔记(三)———Javascript(中)

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;三&#xff09;———Javascript(上) &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 JavaScrip…

yolov5-fastapi-demo更换中文标签

本章是基于yolov5-fastapi-demo项目的更改 WelkinU/yolov5-fastapi-demo: FastAPI Wrapper of YOLOv5 (github.com) 首先&#xff0c;因为训练的时候设置的标签是英文&#xff0c;换成中文要重新训练&#xff0c;而且使用中文训练也很繁琐要改很多东西&#xff0c;因此可以直…

获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官

Moonbeam基金会赞助的”Into the Socialverse”主题的BlockBooster黑客松于近日落幕。该活动由BlockBooster、OKX、Gitcoin和OxU香港区块链俱乐部联合主办&#xff0c;共有22个开发团队参赛。经过多位评委的严格筛选&#xff0c;3支优秀团队脱颖而出&#xff0c;获得Moonbeam基…

汽车充电桩检测设备TK4860C交流充电桩检定装置

TK4860C是一款在交流充电桩充电过程中实时检测充电电量的标准仪器&#xff0c;仪器以新能源车为负载&#xff0c;结合宽动态范围测量技术、电能ms级高速刷新等技术&#xff0c;TK4860C实现充电全过程的累积电能精准计量&#xff0c;相比于传统的预设检定点的稳态计量&#xff0…

为什么建企业网站对企业来说非常重要?

随着互联网的飞速发展&#xff0c;建企业网站已经成为了企业重要的一部分。企业网站是企业与外界沟通的重要渠道&#xff0c;对于企业的品牌形象、市场推广和销售业绩都有着不可替代的作用。本文将从以下几个方面&#xff0c;阐述为什么建企业网站对企业来说非常重要&#xff0…

2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

写在前面 以下代码&#xff0c;目前均可通过民间OJ数据&#xff08;dotcpp & New Online Judge&#xff09;&#xff0c; 两个OJ题目互补&#xff0c;能构成全集&#xff0c;可以到对应链接下搜题提交&#xff08;感谢OJ对题目的支持&#xff09; 如果发现任何问题&…

巧用千寻位置GNSS软件|如何快速完成道路桥涵放样

道路桥涵放样主要解决道路施工中正交、斜交涵洞的测量&#xff0c;正交涵洞放样是中心线的定线放样&#xff1b;斜交涵洞放养是涵洞中心线与线路成一固定夹角的情况下的放样。 那么如何运用千寻位置GNSS软件实现道路桥涵放样呢&#xff1f;下面为各位一一介绍。 点击【测量】-&…

Oracle:ORA-00600[4137]问题分析

背景: 在为用户的新机房环境Oracle 19.18版本数据库检查时&#xff0c;发现smon进程后台日志不断出现事务恢复报错Serial Transaction recovery caught exception 30319&#xff0c;进一步检查发现存在事务恢复失败报ORA-00600[4137] 问题: smon进程后台日志不断出现事务恢复报…

Steam-V Rising 私人服务器架设教程

一、安装前的准备 一台服务器 拥有公网IP并且做好了端口映射 二、使用SteamCMD安装服务器 1.下载SteamCMD SteamCMD是Steam专用的命令行式客户端程序&#xff0c;所有的安装方式可以参照&#xff1a;https://developer.valvesoftware.com/wiki/SteamCMD 或者在其他站点自行…

ThinkPHP6之数据库操作上

ThinkPHP6之数据库操作上 前言1. 数据库配置2. 数据库操作1. 查询操作2. 插入操作3. 修改4. 删除5. 其他 3.数据集总结 前言 注意&#xff0c;tp6在进行语法学习的时候都是在app/index.php中写代码的&#xff0c;代码写在index函数下面&#xff0c;而且tp6自带的文件都是由自动…

借助尾号限行 API 实现限行规则应用的设计思路分析

引言 尾号限行是指根据车牌号的末尾数字&#xff0c;规定某些时段内不能在特定区域行驶&#xff0c;这是城市交通管理的一种措施。尾号限行政策的实施可以缓解城市交通拥堵问题&#xff0c;减少环境污染和交通事故等问题。 尾号限行 API 是一种提供已知所有执行限行政策的城市…

Spring5学习总结(五)Spring5的新特性Log4j2@Nullable注解支持函数式风格支持JUnit5

Spring5学习总结&#xff08;五&#xff09;Spring5的新特性/Log4j2/Nullable注解/支持函数式风格/支持JUnit5 整个 Spring5 框架的代码基于 Java8&#xff0c;运行时兼容 JDK9&#xff0c;许多不建议使用的类和方法在代码库中删除 一、支持整合Log4j2 Spring 5.0 框架自带了…

【刷题】Java日常刷题1

A.Sort the Subarray 题意&#xff1a;给出一个数组&#xff0c;一个在此基础上被操作过的数组&#xff0c;找出被操作过的最长的非递减连续序列。 题解&#xff1a;这道题最开始写就被给的样例迷惑了&#xff0c;给出的样例都是被操作过出现非递减序列的片段&#xff0c;因此…

AI 时代的学习方式: 和文档对话

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

AlgoC++第五课:基于矩阵的算法实现

目录 基于矩阵的算法实现前言1. 矩阵2. 矩阵求导推导3. 矩阵示例代码3.1 Matrix.hpp3.2 Matrix.cpp3.3 main.cpp3.4 拓展-cblas_sgemm3.5 拓展-LU分解 4. 多元线性回归5. 多元逻辑回归6. 最小二乘法7. 岭回归(L2)8. 多元牛顿法9. 高斯牛顿法10. Levenberg-Marquardt(修正牛顿法…

JavaWeb03(域对象EL表达式JSTL标签)

目录 一.jsp内置对象之域对象 1.1 什么是jsp的内置对象? JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象&#xff0c;这些对象不需要开发人员显式声明即可使用。一共有9个&#xff1a; 分别为request、response、session、application、out、pageContext、confi…