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

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

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.

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

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

相关文章

Centos7 交叉编译QT5.9.9源码 AArch64架构

环境准备 centos7 镜像 下载地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ aarch64交叉编译链 下载地址:https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/ QT5.9.9源代码 下载地址&#xff1…

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 模型的加载

文章目录 一、Caffe模型加载接口二、TensorFlow模型加载接口三、TensorFlowLite模型加载接口四、ONNX模型加载五、ONNX模型加载六、PyTorch模型加载接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 RKNN-Toolkit2 目前支持 Caffe、TensorFlow、TensorFlowLite、ONN…

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果一览…

VMware 修改ip地址 虚拟机静态ip设置 centos动态ip修改为静态ip地址 centos静态ip地址 vmware修改ip地址

虚拟机的centos服务器经常变换ip,测试起来有些麻烦,故将动态ip修改为静态ip 1. 查看vmware 虚拟机网络配置: 点击编辑,打开虚拟网络配置 2. 选中nat模式,点击nat设置,最终获取网关ip: 192.168.164.2 3. 进…

七大排序算法详解

1.概念 1.排序的稳定性 常见的稳定的排序有三种:直接插入排序,冒泡排序,归并排序 对于一组数据元素排列,使用某种排序算法对它进行排序,若相同数据之间的前后位置排序后和未排序之前是相同的,我们就成这种…

压力检测器的基本信息是什么

压力检测器利用了传感器技术、电路处理技术、无线传输技术,能够精准测量气体或者液体等介质的压力,并将测得的数据上传至监控平台。 压力检测器能够适用于供水厂、污水处理厂、消防水系统、输油管道、输气管道等相关场景,拥有自动补偿功能、…

Log4Qt日志框架(1)- 引入到QT中

Log4Qt日志框架(1)- 引入到QT中 1 下载源码2 简介3 加入到自己的项目中3.1 使用库文件3.2 引入源文件 4 说明 1 下载源码 github:https://github.com/MEONMedical/Log4Qt 官方(版本较老):https://sourceforge.net/projects/log4q…

暄桐展览| 我们桐学有自己的习作展(1)

林曦老师《从书法之美到生活之美》的第五阶课程《静定的滋养2021》已告一段落。570天的用功,桐学们的技艺都有了水涨船高的进益。      无论书法课(全阶和五阶)还是国画课,暄桐都有一套完整系统的教学体系,也会在桐…

Linux下的Shell基础——正则表达式入门(四)

前言: 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 在Linux 中,grep,sed,awk 等文本处理工具都支持…

Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤

基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段,为建筑施工现场提供智能硬件及物联网平台的解决方案,以实现建筑工地的实时化、可视化、多元化、智慧化…

用手势操控现实:OpenCV 音量控制与 AI 换脸技术解析

基于opencv的手势控制音量和ai换脸 HandTrackingModule.py import cv2 import mediapipe as mp import timeclass handDetector():def __init__(self, mode False, maxHands 2, model_complexity 1, detectionCon 0.5, trackCon 0.5):self.mode modeself.maxHands max…

FFmpeg<第一篇>:环境配置

1、官网地址 http://ffmpeg.org/download.html2、linux下载ffmpeg 下载: wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2解压: tar xvf ffmpeg-snapshot.tar.bz23、FFmpeg ./configure编译参数汇总 解压 ffmpeg-snapshot.tar.bz2 之后&…

60.每日一练:回文数(力扣)

目录 问题描述 代码解决以及思想 解法(一) 知识点 解法(二) 问题描述 代码解决以及思想 解法(一) class Solution { public:bool isPalindrome(int x) {string arr to_string(x); // 将整数转换为…

如何自己实现一个丝滑的流程图绘制工具(一)vue如何使用

背景 项目需求突然叫我实现一个类似processOn一样的在线流程图绘制工具。 这可难倒我了,立马去做调研,在github上找了很多个开源的流程图绘制工具, 对比下来我还是选择了 bpmn-js 原因: 1、他的流程图是涉及到业务的&#xff0c…

element ui - el-select获取点击项的整个对象item

1.背景 在使用 el-select 的时候,经常会通过 change 事件来获取当前绑定的 value ,即对象中默认的某个 value 值。但在某些特殊情况下,如果想要获取的是点击项的整个对象 item,该怎么做呢? 2.实例 elementUI 中是可…

Vue教程(五):样式绑定——class和style

1、样式代码准备 样式提前准备 <style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg, yellow, pink, orange, yellow);}.sad{border: 4px …

Git基础——基本的 Git本地操作

本文涵盖了你在使用Git的绝大多数时间里会用到的所有基础命令。学完之后&#xff0c;你应该能够配置并初始化Git仓库、开始或停止跟踪文件、暂存或者提交更改。我们也会讲授如何让Git忽略某些文件和文件模式&#xff0c;如何简单快速地撤销错误操作&#xff0c;如何浏览项目版本…

【精品】基于VUE3的 电商详情 图片显示模块

效果 组件 <template><div class"goods-imgs"><div class"imgs-show"><img :src"mainImage" alt"大图" /></div><ul class"img-thumbnail"><li v-for"(item, index) in image…

【安装】MongoDB7安装MongoSH命令

MongoDB Shell Download | MongoDB 下载之后 解压 配置环境变量即可 以前使用 mongo命令 改为 mongosh 官方说明 安装mongosh MongoDB 中文手册 | MongoD Manual | 中文操作手册 | MongoDB 最新版 (whaleal.com) 安装 mongosh — MongoDB Shell