(文章复现)考虑微网新能源经济消纳的共享储能优化配置matlab代码_matlab双层规划模型文献复现-程序员宅基地

技术标签: matlab  电气期刊论文复现  双层优化入门  电力系统运行优化  开发语言  

参考文献:

[1]谢雨龙,罗逸飏,李智威等.考虑微网新能源经济消纳的共享储能优化配置[J].高电压技术,2022,48(11):4403-4413.

1.基本原理

        双层规划是具有两个层次的优化问题,具有外层和内层两个优化目标,本研究的问题结构如图2所示。两层问题相互耦合,决策结果相互影响,可以在外层先进行决策的条件下,寻找内层问题的最优值。在本文提出的算法中,外层模型用于寻找新能源最优消纳率并求解共享储能电站配置问题,内层模型在外层模型的基础上利用外层模型决策的消纳率和储能电站配置方案求解微网最优化运行问题。

1. 1 外层模型

        外层模型用于求解经济消纳率及共享储能电站配置问题,优化目标为共享储能电站–微网系统综合成本最低,决策变量为新能源经济消纳率及共享储能电站功率容量。

1.1.1 优化目标函数

        共享储能电站–微网系统总成本由3部分构成:共享储能电站投资、微网从电网购电费用、微网购买燃料费用。外层优化目标为共享储能电站–微网系统综合成本最低。优化目标函数可表示为:

        1)共享储能电站投资费用

        共享储能电站投资包含电站建设的一次性投资等年值与每年用于维护的固定投资费用,在计算共享储能电站投资成本时应考虑资金时间价值,故投资成本等年值可表示为:

        2)微网从电网购电费用

        3)微网购买燃料费用

1.1.2 约束条件

        1)能量倍率约束

        储能电池容量与额定功率之间存在能量倍率约束,具体表示为:

        2)充放电约束

        在同一调度时段,电站的充放电状态由各微网用户电站母线处完成能量交换后的总能量需求决定,同时限制共享储能电站在同一调度时段不能同时充电和放电,其约束为:

         3)储能电池荷电状态约束

1.2 内层模型

        内层模型用于求解微网经济运行问题,优化目标为微网年运行成本最低,决策变量为微网内各设备运行情况、微网从电网购电情况、微网与共享储能电站功率交换情况与经济消纳率。

1.2.1 优化目标函数

        内层模型优化目标为微网年运行成本最低,可表示为:

         1)微网向共享储能电站售电收益

        2)微网从共享储能电站购电成本 

        3)微网向共享储能电站缴纳服务费成本 

1.2.2 约束条件

        1)微网供电系统约束

        微网内部电功率需满足发用电平衡,其约束条件为

        微网可以与共享储能电站进行能量交换,且在同一调度时段不能同时充放电,能量交换约束为 

        微网内电气设备出力以及微网从大电网购电功率需满足一定限制,其约束条件为 

        2)微网供冷供热系统约束

        微网供冷供热系统需满足冷热功率平衡及余热平衡,约束条件为

        微网内供冷供热系统设备出力需满足一定限制,约束条件为 

         3)微网新能源消纳约束

2.模型求解

        本文构建的双层规划模型中存在非线性约束,且两层模型相互耦合,难以对其直接进行求解,可使用KKT法对其进行转化求解。该方法可在内层模型凸连续可微的前提下,利用内层模型互补松弛条件将内层模型转换成外层模型的附加约束条件,形成单层模型。转化后的模型优化目标仅包含原外层模型优化目标,原内层模型优化目标及约束条件以约束形式存在。双层规划模型转化求解流程如图3所示,模型转化与线性化过程在附录中给出。通过上述步骤,将内层模型转化为外层模型的附加约束条件,形成单层混合整数线性规划模型,随后可利用求解器 CPLEX 12.8 对其进行求解。

表1 相关参数

表2 决策变量 

3.2编程思路

        根据对文献内容的解读,可以设计下面的编程思路:

        步骤1:输入所需数据

        算例分析用到的部分数据可以从原文以及文献《能源互联网背景下共享储能的商业模式探索与实践》、《考虑电能交互的冷热电多微网系统日前优化经济调度》中找到,大部分数据文献中都没有给出,只能参考其他文献进行设置。然后将所有需要的数据,按照表1的定义格式输入即可。需要说明的是,文中将两个不同的参数都命名为δs,为了区分,把其中一个变量修改为δservice

        步骤2:定义决策变量

        这一步比较简单,按照表2,初始化决策变量即可,同时每个决策变量的维度以及类型(sdpvar还是binvar)不要出错。但需要注意的是,文献的理论部分,每个变量都包含了上下标M,N,但是算例中似乎是把每个典型日分开处理的,所以也可以仿照文章中的做法,把每个典型日分开处理,求解四个不同的优化问题,而不是耦合起来计算。

        步骤3:写目标函数和约束条件

        这一步也比较简单,按照给定的数据和定义的变量,分别写出上下层优化的目标函数即可。需要注意的是,原文的数学模型有点问题,主要的两个问题如下:

        1.在约束6中,应该是所有微电网向储能电站的购售电功率之和等于储能电站的充放电功率之和。原文中应该是有个笔误,改成这样才是正确的:

        2.从下层优化的公式8-17来看,上层共享储能站配置的额定容量与额定功率似乎和下层优化没有任何关系,也就是说如论上层优化的储能电站配置结果咋样,下层优化的结果都是不变的,显然是不合理的。

        从逻辑上分析,微网向储能电站购售电时,应该还受到储能电站充放电功率约束,也就是需要把上层优化中式6的约束添加到下层约束中,同时还要令所有微电网购售电的功率之和小于储能的额定功率,这样才能确保逻辑是合理的。也就是需要把式13改成下面这样:

步骤4:使用yalmip工具箱中的kkt函数求下层优化的KKT条件

        使用kkt函数,可以直接求出下层优化的KKT条件,并将其作为上层优化的约束,就可以求出双层优化问题的最优解。关于kkt函数的用法,可以参考yalmip工具箱的官方文档。

4.完整Matlab代码

        完整的matlab代码可以从这个链接获取:

(文章复现)考虑微网新能源经济消纳的共享储能优化配置matlab代码

        PS:初始代码存在错误,式7的等式约束右边充放电功率也应该添加时间索引t:

        目前已修复bug,感谢读者@zz84z1指出错误。

5.运行结果分析

        由于文献中没有给出四个典型日的风、光新能源,以及冷、热、电负荷的曲线,我手上也没有类似的数据,所以这份代码中只有一个典型日的运行结果。如果需要修改为其他数据,自行修改即可。只需修改数据,代码主体不需要变化。

5.1场景1运行结果

 

         场景1不配置共享储能站,所以新能源消纳率很低,只有68%左右。

5.2场景2运行结果

         配置共享储能站后,新能源消纳率从场景1的68提升到了91%。

5.3场景3运行结果

         场景3中,我把新能源消纳率限定为100%,为实现100%消纳清洁能源,则需要配置94578kWh的共享储能站,成本非常高。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44209907/article/details/131627678

智能推荐

servlet注解开发-程序员宅基地

文章浏览阅读820次。跟请求对象/响应对象一样,也是在容器初始化时被创建好的对象;该对象可用于容器初始化时 servlet 辅助信息的设置;例如:编码格式的设置、servlet 在执行时需要的一些数据。在 web.xml 中 servlet 标签下可以进行 ServletConfig 辅助信息的设置格式:ServletConfig 对象和 Servlet 类是一对一的关系;只有 web.xml 配置文件中配置了。_servlet注解开发

从零开始学Python第19课:面向对象编程进阶(2024版)-程序员宅基地

文章浏览阅读661次,点赞24次,收藏13次。例如,我们定义一个学生类和一个老师类,我们会发现他们有大量的重复代码,而这些重复代码都是老师和学生作为人的公共属性和行为,所以在这种情况下,我们应该先定义人类,再通过继承,从人类派生出老师类和学生类,代码如下所示。子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本,这样的方法在程序运行时就会表现出多态行为(调用相同的方法,做了不同的事情)。需要提醒大家的是,对象的方法其实本质上也是对象的属性,如果给对象发送一个无法接收的消息,引发的异常仍然是。

初步了解SequoiaDB巨杉数据库-程序员宅基地

文章浏览阅读658次。1.SequoiaDB 简介2.整体架构3.数据库存储引擎4.核心特性。_sequoiadb

2020 年中国程序员薪资和生活现状调查报告_2020年薪酬数据报告-程序员宅基地

文章浏览阅读1.7k次,点赞6次,收藏3次。作者 | 程序员客栈来源 | ID:proginnwx根据中国互联网络信息中心(CNNIC)近日发布第 44 次《中国互联网络发展状况统计报告》。截至 2019 年 06 月,中国网民规模为 8.54 亿,较 2018 年底增加 2598 万。网上外卖用户规模达 4.21 亿,较 2018 年底增长 1516 万;网络视频用户规模达 7.59 亿,较 2018 年底增长 3391 万;我..._2020年薪酬数据报告

从 NASL 说开:低代码编程语言能饭否_网易nasl语言-程序员宅基地

文章浏览阅读1.3w次,点赞78次,收藏73次。轻舟低代码平台,NASL是其中的关键,也是最大的差异化。回头看Gartner的定义,也有LCAP(低代码平台)和CADP(无代码平台)之分,前者对开发完整性、应用独立性、逻辑完备性、可接入可集成等都有要求,所以说,NASL的实现使得轻舟低代码更符合这一理念。说到框架,大家首先想到肯定是是react,springboot这种被广泛使用的前后端框架,低代码框架本质上跟他们类似,差别在于,低代码框架通常支持从前后端到数据库的全栈模型实现,而且封装程度更高。_网易nasl语言

数字音频总线A2B开发详解三(A2B系统的Flash Program详解)_a2b技术学习-程序员宅基地

文章浏览阅读1.2k次。A2B系统的EEPROM自启动如何做,本文来告诉你_a2b技术学习

随便推点

Unhandled exceptions: java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException_unhandled exceptions: java.lang.instantiationexcep-程序员宅基地

文章浏览阅读3.2k次。可能是没有异常处理,只需要加上throws Exception就解决问题了。_unhandled exceptions: java.lang.instantiationexception, java.lang.illegalacc

webview ERROR_UNSUPPORTED_SCHEME ,errorcode=-10问题处理-程序员宅基地

文章浏览阅读1.5k次。webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { try{ if(url.startsWith("baidumap://")){ Intent _error_unsupported_scheme

embed标签-程序员宅基地

文章浏览阅读66次。Embed  (一)、基本语法:  embed src=url  说明:embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等, Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。  示例:<embed src="your.mid">  (二)、属性设置:  1、自动播放...

php 上传文件漏洞,PHP -- 文件包含、文件上传漏洞-程序员宅基地

文章浏览阅读330次。PHP -- 文件包含、文件上传漏洞PHP -- 文件包含、文件上传漏洞文件包含文件引入漏洞,是由一个动态页面编译时引入另一个文件的操作。文件引入本身是没有问题,它是用于统一页面风格,减少代码冗余的一种技术。但是在特定的场景下就会形成漏洞jsp:include指令和include动作,其中include动作用于引入动态文件php:include(),include_once(),require()..._php文件上传4漏洞

配置NGINX同时运行 https 和 http_nginx 和 http无法同时启动-程序员宅基地

文章浏览阅读406次。SSL 是需要申请证书的,key和PEM文件要放到服务器路径。然后NGINX下要进行443端口和80端口的绑定。server { listen 80; server_name ietaiji.com www.ietaiji.com; root "D:/aaa/WWW/ietaiji"; index index.html_nginx 和 http无法同时启动

总结:linux之Service_linux service-程序员宅基地

文章浏览阅读1.3w次,点赞9次,收藏60次。service与systemctl关系梳理开机启动梳理_linux service