储能运行约束的Matlab建模方法

news2024/11/19 5:33:20

        最近一段时间有很多人问我最优潮流计算中储能系统的建模方法。部分朋友的问题我回复了,有些没有回消息的,我就不再一一回复了,在这里我写一篇博客统一介绍一下。

1.储能系统介绍

        首先,让【GPT】简单介绍一下储能系统:

        “储能设备在电力系统中的作用不可忽视。它们能够将多余的电能储存起来,并在需要时释放出来,以平衡电力供求关系。储能设备可以提供电网的稳定性和可靠性,保证电力系统的正常运行。首先,储能设备能够储存电能,以便在高峰期或紧急情况下提供备用电力。其次,当可再生能源如太阳能和风能产生电力过剩时,储能设备可以将其储存起来,以便在能源短缺或可再生能源不可用时供应电力。储能设备还可以提供快速响应的频率调节,以对抗电力波动。此外,通过在储能设备中储存低成本电力,并在高峰期将其释放,可以有效降低能源成本。总之,储能设备在电力系统中的作用是确保电力供应的稳定性和可持续性,提高能源利用效率,降低成本,并促进清洁能源的应用”。

        GPT回答的还算切题,简单来说,储能系统就是电能的存储装置,电力系统中电能过剩时将电能储存在储能中,电能紧缺时将储能中储存的电能释放出来,像抽水蓄能站就是一种典型的储能系统,而最近比较火热的电动汽车,其本质上也是一种特殊的储能系统。

        在对储能系统进行建模时,通常会涉及一些相关概念,在此进行简单介绍。

1.1 额定容量和额定功率

        储能的额定容量是指储能设备能够储存的最大电能量,通常以千瓦时(kWh)或兆瓦时(MWh)为单位。额定容量越大,意味着储能设备能够储存更多的电能,从而提供更长时间的电力供应。

        额定功率是指储能设备输出的最大功率,通常以千瓦(kW)或兆瓦(MW)为单位。额定功率越大,意味着储能存储或者释放电能的速度越快。

        我们在文献中通常见到的“储能优化配置”这一说法,实际上就是通过数学优化方法来选择储能最优的额定容量和额定功率。

1.2 充电和放电

        储能的充电就是将外界的电能存储到储能中,充电功率就是储能装置在充电过程中,单位时间内从外部电源吸收电能的速率,通常以千瓦(kW)或兆瓦(MW)为单位。

        类似地,储能的放电就是将储能中存储的电能释放出来,放电电功率就是储能装置在放电过程中,单位时间内释放电能的速率,通常以千瓦(kW)或兆瓦(MW)为单位。

        需要注意的是,一般文献中所指的储能充电功率和放电功率,都是储能实际存储或者向外界输出的功率,由于存在功率损耗,外界向储能输入的功率和充电功率不一定相等,储能消耗的功率和放电功率不一定相等。这种现象又引出了充电效率和放电效率的概念。

1.3 充电效率和放电效率

        储能的充电效率就是指充电过程中实际存储到储能中的电能外界向储能输入电能的比值,反映了充电过程中电能的损耗情况,充电效率越高表示充电时损耗越低。

        储能的放电效率就是指放电过程中储能实际输出的电能储能所消耗电能的比值,反映了放电过程中电能的损耗情况,放电效率越高表示放电时损耗越低。

1.4 荷电状态

        储能的荷电状态表示储能装置中存储电能的多少,通常可以使用百分比或者kWh(MWh)两种单位。

        当使用%作为单位时,储能的荷电状态表示储能中目前存储的电能和其总容量的比值,理论上可以从0%(没有储存电能)变化到100%(储存电能达到最大容量)。例如,一个储能装置的荷电状态为50%,表示该装置当前储存电能的容量为最大容量的50%。

        当使用kWh(MWh)作为单位时,储能的荷电状态表示储能当前存储电能的实际值,理论上也可以从0kWh(没有储存电能)变化到额定容量(储存电能达到最大容量),例如,一个储能装置的荷电状态为30MWh,表示该装置当前储存电能为30MWh。

2.储能运行的数学建模

        根据上述概念的介绍我们可以知道,储能系统的额定容量、额定功率、充放电效率都是常量(当然,对于储能优化配置问题来说,额定容量和额定功率也是变量),充放电功率和荷电状态是变量。而且它们之间还存在一定关系:储能充电时荷电状态增大,储能放电时荷电状态减小。理解了这一点后,就可以正式开始学习储能的建模方式。

        假设储能在t时刻充电或放电的功率为PS,t,其中当PS,t≥0时,表示储能系统向外界放电,储能自身荷电状态降低;当PS,t≤0时,表示储能系统充电,储能自身荷电状态增大。此时储能的荷电状态ES,t和充放电功率PS,t的关系可以表示为:

        此外,需要注意的是,计算荷电状态时,充放电效率一个要×,一个要÷,这是充放电效率的概念所决定的,大家可以结合上一节充电效率和放电效率的概念自行体会一下。

        这个公式含有非线性函数max(),一般都需要进行线性化再进行求解,文献中通常有三种不同的处理方式,下面分别进行介绍。

2.1 引入一组0-1变量的方式

        文献[1]中通过引入一组0-1变量,可以将储能的非线性约束转为线性约束,具体如下:

        式(4)和式(5)表示储能的充放电功率应小于其额定值,式(6)表示储能在一个调度期内充放电功率数值上相等(也就是调度始末的荷电状态不变)。式(7)表示储能的荷电状态应保持在一定的区间内。

        也有文献为了公式表达更简洁,引入一个中间变量ES,t表示储能的荷电状态,则式(6)和式(7)可以改写为:

        这样处理增加了变量的数目,但是可以使约束条件表达式更加简洁直观。

2.2 引入两组0-1变量的方式

        在储能的实际运行中,对储能控制策略可能存在很多特殊情况,例如在某一时间段,需要禁止储能进行充电和放电,这种情况下只引入一组0-1变量可能就不是很合适。

        举个例子进行说明,假设存在另一个变量Um用于限制储能的充放电行为,当Um=1,表示储能可以进行充放电,当Um=0时,表示禁止储能进行充放电行为,这时候可以增加两组约束条件,表示变量Um对储能充放电行为的限制:

        另一种更常规的方式是引入两组0-1变量,其中一个表示充电状态,另一个表示放电状态,如文献[2]中的方式: 

当存在对储能充放电状态的限制条件时,引入两组0-1分别表示储能的充放电状态,可以更方便地实现对储能运行的建模。实际情况中这样的约束条件有很多,例如电动汽车只有在充电站时才可以充电,抽水蓄能站在不满足水利条件时无法进行操作等等。

2.3 智能优化算法中的简化表示

        采用常规的数学规划算法时,引入0-1变量一般对问题求解效率不会造成太大影响,但对智能优化算法来说,存在0-1变量通常求解难度会更大,此外,非线性条件并不会影响智能优化算法的求解效率,而决策变量的数目越大,一般来说智能优化算法求解性能会更差。因此,使用智能优化算法求解储能运行策略时,要遵循的原则就是:

        1.尽可能避免使用0-1变量。

        2.尽可能减少变量的数目。

        基于上述原则,很多文献提出了各种不同的建模方式,文献[3]中所提的是1种比较常规的做法,具体如下:

 

        由上面的介绍可知,这样建模是假设了储能的充放电效率都为1,就可以只用储能荷电状态 E_S(t)这1个变量表示储能运行过程中的约束。

        另一种方式是只用储能的充放电功率这一个变量表示储能的运行状态,就可以考虑储能的充放电效率,表达方式如下:

3.实例分析

3.1 问题背景

        我编了一个简单的算例来说明三种不同方法的具体应用:

        某地有一个风-光-储互补系统,某一天中风电、光伏出力以及负荷需求都是已知的,现在需要控制储能的充放电策略,尽可能降低负荷短缺以及弃风弃光的现象。其中,储能系统的额定容量为40MW,额定功率为20MW,充放电效率分别为0.95和0.96,最大和最小荷电状态分别为15%和90%,初始荷电状态为30%,风、光、负荷各个小时的数据分别如下表(单位/MW):

光伏出力

风电出力

负荷需求

0

15.9958

15.6378

0

18.4567

14.7866

0

20.2975

14.3611

0

19.0719

13.7227

0

17.2262

13.5099

0.6857

7.3827

10.6378

2.1619

8.6131

13.8297

4.6232

10.4588

16.3831

7.0138

12.3044

16.7878

7.6877

7.3827

19.4884

9.6786

3.6913

16.8517

14.7472

5.5370

14.2982

10.9453

3.0761

12.8087

10.0531

2.4609

11.7448

7.3323

8.6131

12.3831

6.8265

10.4588

14.511

4.1410

16.6110

15.9955

1.3980

16.6110

16.6389

0.1607

11.0740

17.914

0

9.2283

20.1335

0

9.8436

17.2756

0

9.8436

14.8727

0

14.7653

13.1064

0

19.0719

12.2762

         首先看一下风电、光伏出力之和与负荷需求的匹配情况:

        从图中可以看到,风光出力和负荷需求存在明显的不匹配情况,如果没有储能系统的话,将出现弃风弃光与负荷短缺的情况。下面我们使用Matlab编程求解储能的运行策略,使得风电、光伏出力和负荷需求尽可能匹配。目标函数可以表示为: 

        下面使用三种不同的建模方式分别求解该问题。

3.2 引入一组0-1变量的方式

        通过引入一组0-1变量,可以将上述问题表述为:

 

        该优化问题的目标函数是一个二次函数,约束条件均为线性,包含0-1变量,是一个混合整数二次规划问题,可以使用Yalmip求解器进行求解。运行文件夹内的Method1.m文件即可得到如下结果: 

        由图可知,通过加入储能系统,可以明显减少系统的弃风弃光现象,避免出现负荷短缺的情况,增加新能源消纳率。

3.3 引入两组0-1变量的方式

        下面引入两组0-1变量,将上述问题表述为:

        该优化问题的目标函数是一个二次函数,约束条件均为线性,包含0-1变量,是一个混合整数二次规划问题,可以使用Yalmip求解器进行求解。运行文件夹内的Method2.m文件即可得到如下结果: 

        和第一种建模方式的结果完全一致,说明两种方法是等效的。为了说明第二种建模方式的效果,我们假设为了防止储能过度损耗,要求储能系统一天之内的充放电次数不能大于20次。大家可以思考一下,如果只有一组0-1变量,该如何表达这个约束条件。如果是有两组0-1变量,增加的约束条件可以这样表达: 

        将这个约束条件添加到原优化问题中,然后重新进行优化求解。运行文件中的Method2_1.m文件即可得到如下结果: 

        由以上结果可知,增加储能充放电次数约束之后,弃风弃光与负荷短缺的情况略有增加,新能源消纳率略有下降。但约束储能充放电次数一定程度上可以延缓储能寿命,在实际建模中可以适当考虑。

3.4 智能优化算法中的简化表示

        将储能充放电功率作为决策变量,使用经典的粒子群算法进行求解,优化问题可以表述为:

        使用罚函数的方式将约束条件添加到目标函数中,使用粒子群算法进行求解,其中问题维度为24,种群规模设为500,迭代次数设为500,运行文件夹内的Method3.m文件即可得到如下结果: 

        由结果可知,粒子群算法的效果比直接使用数学规划算法要差不少,需要采取一定措施进行改进。另一方面我们也可以知道,对于可以通过线性化表达转为线性规划、二次规划或者二阶锥规划的非线性规划问题,最好还是使用数学优化方法,加上求解器进行求解,一般效果都会比智能优化算法更好。除非模型实在太复杂,才考虑使用智能优化算法。

4.完整代码

        完整代码可以从以下链接获取:

储能运行约束的Matlab建模方法资源

参考文献

[1]刘一欣,郭力,王成山.微电网两阶段鲁棒优化经济调度方法[J].中国电机工程学报,2018,38(14):4013-4022+4307.

[2]高红均,刘俊勇,沈晓东等.主动配电网最优潮流研究及其应用实例[J].中国电机工程学报,2017,37(06):1634-1645.

[3]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多天线传输技术】BPSK调制信号在AWGN信道下的理论误码率与仿真误码率

%% [0、预处理] clc; clear; close all;%% [1、配置参数] N1000000; %数据点数(个) SNR_dB0:10; %信噪比(dB形式) SNR10.^(SNR_dB/10); %信噪比(一般形式,Eb/N0)…

【业务功能篇78】微服务-前端后端校验- 统一异常处理-JSR-303-validation注解

5. 前端校验 我们在前端提交的表单数据,我们也是需要对提交的数据做相关的校验的 Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可 校验的页面效果 前端数据…

Android相机-HAL子系统

引言 应用框架要通过拍照预览摄像获得照片或者视频,就需要向相机子系统发出请求, 一个请求对应一组结果 一次可发起多个请求,并且提交请求是非阻塞的,始终按照接收的顺序以队列的形式先进先出地进行顺序处理 一个请求包含了拍摄和拍照配置的所有信息&…

企业数字化转型中,VR数字展厅能有哪些体验?

在数字化转型的浪潮下,企业纷纷开始注重数字展厅的开展,VR虚拟展厅结合VR全景技术,可以创造出许多有趣的玩法和体验,无论是虚拟参观、互动体验还是VR云会议对接,都为企业客户带来了全新的感知方式。 同传统展厅相比&am…

【LeetCode-中等题】560. 和为 K 的子数组

题目 题解一&#xff1a;逆序枚举数组 //方法一:枚举数组&#xff08;顺序&#xff09;int count 0;// 记录最终符合条件的数组个数int n nums.length;for(int end 0; end<n ; end){int sum 0;//记录每一次经过的元素总和for(int start end; start>0;start--){sum n…

漏洞挖掘和漏洞利用技术:讨论漏洞发现、利用和修复,深入研究不同类型漏洞的技术细节

章节一&#xff1a;引言 在当今数字化时代&#xff0c;计算机技术的迅猛发展为我们的生活带来了无数便利&#xff0c;然而也伴随着各种安全威胁。恶意黑客利用漏洞进行攻击已成为一种常见现象。本文将深入探讨漏洞挖掘和漏洞利用技术&#xff0c;以及如何修复这些漏洞&#xf…

微信小程序路由以及跳转页面传递参数

路由 在app.json的pages里面写 "pages/页面/页面" 直接保存pages直接生成非常方便 跳转页面 wx.navigateTo() 保留当前页面&#xff0c;跳转到应用内的某个非tabBar页面。 <text bindtap"daka">点击</text> daka:function () {wx.navigateTo…

第3篇:vscode搭建esp32 arduino开发环境

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 1.下载vscode并安装 https://code.visualstudio.com/ 运行VSCodeUserSetup-x64-1.80.1.exe 2.点击扩展&#xff0c;搜索arduino,并点击安装 3.点击扩展设置&#xff0c;配置arduino…

java+springboot+mysql村务档案管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的村务档案管理系统&#xff0c;系统包含超级管理员、工作人员角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;系统用户管理&#xff08;工作人员管理&#xff09;&#xff1b;公开资料&#xff1b;会议记录&…

PDF校对:追求文档的精准与完美

随着数字化时代的到来&#xff0c;PDF已经成为了多数机构和个人首选的文件格式&#xff0c;原因在于它的稳定性、跨平台特性以及统一的显示效果。但是&#xff0c;对于任何需要公开或正式发布的文档&#xff0c;确保其内容的准确性是至关重要的&#xff0c;这就是PDF校对显得尤…

IDEA创建Spring,Maven项目没有resources文件夹

有时新建Spring或Maven项目时&#xff0c;会出现目录中main下无resources文件夹的情况&#xff0c;来一起解决一下&#xff1a; FIles|Project Structure 在Modules模块找到对应路径&#xff0c;在main下创建resources&#xff0c;右键main&#xff0c;选择新文件夹 输入文件…

瞎扯之synchronized

我是胡说八道君&#xff0c;鉴别一个人基础打得牢不牢&#xff0c;有没有这个举一反三、将学过的知识串联起来的能力&#xff0c;教你一个简单的方法&#xff1a;关键词联想法 有兴趣的童鞋也可以跟着我的思路去画一张思维导图哦!加入你自己联想道德的部分更重要 eg: 给你一个…

金桥跨越相伴岁月 桂冠加冕爱意时光 GP芝柏表演绎浪漫七夕

两个多世纪以前&#xff0c;康士坦特芝勒德 (Constant Girard) 与玛莉亚柏雷戈 (Marie Perregaux) 喜结连理&#xff0c;两颗心灵在爱意中交织&#xff0c;二人将姓氏结合&#xff0c;创立“Girard-Perregaux”芝柏表&#xff0c;成为数百年来瑞士高级制表中仅有的以夫妻双人姓…

VoxWeekly|The Sandbox 生态周报|20230821

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…

idea 对JavaScript进行debug调试

文章目录 1.新增 JavaScript Debug 配置2.配置访问地址3.访问url. 打断点测试 前言 : 工作中接手别人的前端代码没有注释&#xff0c;看浏览器的network或者console切来切去&#xff0c;很麻烦&#xff0c;可以试试idea自带的javscript debug功能。 1.新增 JavaScript Debug 配…

基于水循环算法优化的BP神经网络(预测应用) - 附代码

基于水循环算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于水循环算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.水循环优化BP神经网络2.1 BP神经网络参数设置2.2 水循环算法应用 4.测试结果&#xff1a;5.Matlab代…

3d max插件CG MAGIC中的蜂窝材质功能可提升效率吗?

工作中能提升效率也都是大家所想的&#xff0c;对于设计师的一个设计过程中&#xff0c;可能想怎么样可以更快呀&#xff0c;是哪个步骤慢了呢&#xff1f; 这样的结果只能说会很多&#xff0c;但是建模这个步骤&#xff0c;肯定是有多无少的。 为了让模型更加逼真&#xff0c…

Flask狼书笔记 | 04_表单

文章目录 4 表单4.1 HTML表单4.2 使用Flask-WTF4.3 处理表单数据4.4 表单进阶实践小记 4 表单 表单是和用户交互最常见的方式之一&#xff0c;本章涉及的Python包由WTForms、Flask-WTF、Flask-CKEditor。&#xff08;p104&#xff09; 4.1 HTML表单 通过<form>标签创建…

实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana

基于之前的文章&#xff0c;精简操作而来 让ELK在同一个docker网络下通过名字直接访问Ubuntu服务器ELK部署与实践使用 Docker 部署 canal 服务实现MySQL和ES实时同步Docker部署ES服务&#xff0c;canal全量同步的时候内存爆炸&#xff0c;ES/Canal Adapter自动关闭&#xff0c…

【HTML】HTML面试知识梳理

目录 DOCTYPE&#xff08;文章类型&#xff09;head标签浏览器乱码的原因及解决常用的meta标签与SEOscript标签中defer和async的区别src&href区别HTML5有哪些更新语义化标签媒体标签表单进度条、度量器DOM查询和Web存储Canvas和SVG拖放 &#xff08;HTML5 drag API&#xf…