当前位置: 首页 > news >正文

【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

目录

1 主要内容

2 程序难点及问题说明

3 部分程序

4 下载链接


主要内容

该程序分为两部分,日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面方法,根据每个居民的实际需要得到响应储能充放电功率,优化得到整体的储能充放电功率情况。日内滚动mpc跟踪部分——采用《基于MPC的微电网并网优化调度》P31-36页相关内容,通过预测模型、滚动优化、反馈校正得到soc跟踪情况。

程序难点及问题说明

  • 代码修正

for i=1:96    C=[C;P_C1(i) == P_G1(i)+P_PV1(i);%储能功率=电网供电+光伏储能P_PV1(i)<=P_C1(i)<=P_cap;%储能值约束0<=P_G1(i)<=P_cap;%电网供电约束E1(1)+sum(P_C1)*nc*t==E_cap;%soc约束,到储能结束soc=1];
end

该程序含有这段代码,最后一句代码和i不相关,却重复循环96次,这句代码和下面的代码功能重复,在学习和修改代码的时候增加了复杂度。此外,还有几处类似问题已经修正。

原文献有储能充放电功率模型如下,该部分约束能够保证充放电功率不能同时不为0,但是在代码里面却存在这方面问题,已经进行了修正。

  • 部分问题

代码原来的出图效果如下:

该部分是第一阶段优化结果,对于云储能用户,考虑最简单的调度策略,即根据电价详细分清楚每个时间段的充放电状态,所以soc曲线也较为规律​(该图应该为5段,即充-放-充-放-充,但是考虑到前四段已经能够说明问题,就只分析前四段)。

得到两个阶段的soc跟踪效果图,但是为什么只是充电阶段的跟踪图呢​?为什么第一个图效果那么好呢​?第一个问题留给大家思考,第二个问题一会揭晓​。

  • 修正后的代码运行结果

修正代码实现了全过程的soc跟踪控制。

本模型的跟踪控制主要是由于光伏波动引起的,在不存在光伏波动的时间段就会出现soc完美的跟踪效果,也就回答了上面第二个问题​。

部分程序

clc;clear all;
%% 数据准备
data = xlsread('预测数据.xlsx');
​
p_pv = data;%正值代表负荷。负值代表用户光伏发电量高于负荷的部分
p_pv(data<0) = 0;    %用户的剩余光伏数据
prepv=sum(p_pv,2);
data_d = data;
data_d(data>0) = 0;   %用户放电负荷数据
data_d = -1.*data_d;
preload=sum(data_d,2);
%% 参数设置
e_cap = xlsread('各用户租赁容量.xlsx');  %各用户租赁的能量容量
p_cap = 0.5.*e_cap;                                %各用户租赁的功率容量
E_cap = 175;                                       %CES储能容量
P_cap = 90;                                        %CES功率容量
​
e0 = 0.2.*e_cap;                                   %各用户初始电量
E0 = 0.2*E_cap;                                    %CES初始电量
emin = 0.1.*e_cap; 
Emin = 0.1*E_cap;
​
nc = 0.96;  %充电效率
nd = 0.96;  %放电效率
​
r1 = 0.32;   %低谷电价
r2 = 0.66;   %平谷电价
r3 = 1.1;    %高峰电价
r = zeros(288,1);  %各时段电价
r(1:96) = r1;
r(97:144) = r3;
r(145:204) = r2;
r(205:252) = r3;
r(253:288) = r2;
​
t = 5/60;  %时间间隔
%% 定义变量
E1 = sdpvar(96,1);%储能容量变量
E1(1) = E0;
P_PV1 = sum(p_pv(1:96,:),2);%充电时段0-8:00整体光伏出力
P_C1 = sdpvar(96,1);%储能出力变量
P_G1 = sdpvar(96,1);%电网供电变量
C=[];%初始化约束
for i=1:96    C=[C;P_C1(i) == P_G1(i)+P_PV1(i);%储能功率=电网供电+光伏储能P_PV1(i)<=P_C1(i)<=P_cap;%储能值约束0<=P_G1(i)<=P_cap;%电网供电约束
%        E1(1)+sum(P_C1)*nc*t==E_cap;%soc约束,到储能结束soc=1];
end

4 下载链接

点击直达!

相关文章:

【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

目录 1 主要内容 2 程序难点及问题说明 3 部分程序 4 下载链接 1 主要内容 该程序分为两部分&#xff0c;日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面方法&#xff0c;根据每个居民的实际需要得到响应储能充放电功率&#xff0c;优化得到整体…...

796. 子矩阵的和(C++和Python3)——2023.5.6打卡

文章目录 QuestionIdeasCode Question 输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个询问&#xff0c;每个询问包含四个整数 x1,y1,x2,y2 &#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数…...

docker打包部署spring boot应用(mysql+jar+Nginx)

文章目录 一、基本准备二、mysql部署二、jar部署三、Nginx部署 一、基本准备 小唐拿的就是之前放置在我们服务器上的应用进行部署&#xff0c;主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue 项目参考&#xff1a;小破站数据大屏可视化&#xff08;…...

Golang-常见数据结构Slice

Slice slice 翻译成中文就是切片&#xff0c;它和数组&#xff08;array&#xff09;很类似&#xff0c;可以用下标的方式进行访问&#xff0c;如果越界&#xff0c;就会产生 panic。但是它比数组更灵活&#xff0c;可以自动地进行扩容。 了解 slice 的本质, 最简单的方法就是…...

操作系统——设备管理

0.关注博主有更多知识 操作系统入门知识合集 目录 1.设备管理概念 2.SPOOLing技术 1.设备管理概念 在计算中&#xff0c;除CPU、内存以外的所有设备统称为外设&#xff0c;即外部设备&#xff0c;例如鼠标、键盘、打印机、摄像头、磁盘、硬盘......那么这些只需要连接到计…...

图片分类:精细化分类,(Fine-Grained Categorization) 基于人的行为的精细化分类

文字大纲 简介数据集常用数据集方法1 : 强监督方法2 : 弱监督传统 ResNet EfficientNet 等Two Level Attention Model双线性网络 Bilinear CNN model参考文献和学习路径简介 细粒度图像识别 (fine-grained image recognition),即 精细化分类。 细粒度图像分类(Fine-Graine…...

Matlab2012a的图像处理工具箱的imshow函数

在处理图片文件时&#xff0c;除了使用matlab自带的image函数&#xff0c;还可以考虑用matlab的图像处理工具箱。这个工具箱提供了imshow和imtool两个函数&#xff0c;可实现图片的显示。 这两个函数都支持Handle Graphics体系结构&#xff0c;它们可创建图像对象&#xff0c;…...

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙) 文章目录 Linux_红帽8学习笔记分享_10(**SELinux管理与防火墙**)1.Linux系统的安全机制1.1 Filesystem1.2 Service1.3 Firewall1.4 SELinux 2.SElinux理论概述3.SElinux的配置文件3.1 SELINUX参数3.2 SELINUXTYPE参数 4.查看和…...

【资料分享】

文章目录 前言《408统考&#xff0c;真题&解析(2009-2021)》《Android 移动应用基础教程&#xff08;Android Studio&#xff09;&#xff08;第2版&#xff09;》黑马程序员 源代码《Hackers & Painters》--Paul Graham《数字电路与逻辑设计&#xff08;第3版&#xf…...

NewBing 还无法访问的几个问题

大部分的AI自媒体都在说&#xff0c;Bing new已经向全世界开放了&#xff0c;我也凑一下这个热闹&#xff0c;用Edge浏览器打开&#xff0c;访问https://www.bing.com/new?ccus 想体验一下Bing new的效果&#xff0c;结果如下&#xff1a; 相信很多人都碰到了这个问题 此体验…...

将 Segment Anything 扩展到医学图像领域

文章目录 前言技术交流SAM 拆解分析从医学角度理解 SAM 的效用MedSAM实验总结 前言 SAM 是一种在自然图像分割方面取得成功的模型&#xff0c;但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像&#xff0c;并成为用于分割各种医学图像的通用工具。为…...

毕业5年,技术越来越好,混的却越来越差...

别人都是越来越好&#xff0c;而我是越来越差&#xff01; 17年&#xff0c;从一个普通的本科毕业&#xff0c;那个时候的我&#xff0c;很迷茫&#xff0c;简历上的求职岗位都不知道写什么&#xff0c;因为家里是农村的&#xff0c;朴实的父母也帮不上什么忙&#xff0c;关于…...

C#实现把txt文本数据快速读取到excel中

主要介绍了C#实现把txt文本数据快速读取到excel中,本文直接给出示例代码,需要的朋友可以参考下 今天预实现一功能,将txt中的数据转到excel表中,做为matlab的数据源。搜集一些c#操作excel的程序。步骤如下: 下载一个Microsoft.Office.Interop.Excel.dll 在项目中引用。 编…...

Office转换需要用到的SDK(建议)

PDF相关SDK1. PDFBox&#xff1a;一个基于Java的开源库&#xff0c;可以读取、创建和操作PDF文件。2. iText&#xff1a;一个用于Java和.NET的开源库&#xff0c;可以创建、编辑和操作PDF文件。3. MuPDF&#xff1a;一个轻量级的开源PDF阅读器和渲染器&#xff0c;可用于创建和…...

python语法入门到面向过程编程(二)

类型总结 一&#xff1a;整形基本使用&#xff08;int&#xff09; 1 int用途:年龄 号码 等级… 2 定义方式 age10 ageint(10) xint(‘1111’) int只能将纯数字的字符串转成十进制的整型 print(type(x)) 3 整形常用操作内置的方法 算数运算&#xff08;、—、*、/&#xff0…...

Java常用类

基本数据类型包装类 Java是一种纯面向对象语言&#xff0c;但是java中有8种基本数据类型&#xff0c;破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象&#xff0c;java又给每种基本数据类型分别匹配了一个类&#xff0c;这个类我们称之为包装类/封装类。每个基本数据…...

4.30下周美联储携非农来袭黄金多空该如何布局?

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(4月28日)当周金价维持震荡交投&#xff0c;金价基本持稳于2000美元下方。支撑和打压金价的因素参半。经济衰退的担忧&#xff0c;以及避险情绪支持金价&#x…...

利用python查找指定目录下大于300M的文件

直接上代码&#xff0c;欢迎小伙伴们交流 import os def getBigFile(path, filesize): # 遍历指定目录及其子目录 for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: target_file os.path.join(dirpath, filename…...

浅尝ChatGPT使用之Python字典嵌套排序

一、背景 所负责的项目从v1.0升级到v2.0之后&#xff0c;发送到kafka的Json数据字段顺序和内容有所改变&#xff0c; v1.0版本推送数据样例&#xff1a; {"name": "小王子","author": "安托万德圣-埃克苏佩里&#xff08;1900-1944&#…...

最大网络流算法之dinic算法详解

1、题目描述 On the Internet, machines (nodes) are richly interconnected, and many paths may exist between a given pair of nodes. The total message-carrying capacity (bandwidth) between two given nodes is the maximal amount of data per unit time that can b…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...