激励型需求响应之yalmip策略(matlab代码)

2023-10-31 07:30

本文主要是介绍激励型需求响应之yalmip策略(matlab代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在平时应用yalmip过程中存在多种策略,也是数学模型的一种策略转换,比如本文讲得激励型需求响应优化模型中,涉及到负荷转移时间点约束、负荷转移或削减连续时长约束等,这些约束如何通过合理的数学模型进行表达是各位学习使用yalmip过程中深入研究模型转化的重要参考。(本文结合齐先军《激励型需求响应对配电网运行可靠性的影响 》进行分析,文末附有对应程序代码链接)

目录

1 基于负荷聚合商的激励需求响应模型简介

(1)负荷削减(Load Curtailment, LC)合同

(2)负荷转移(Load Shifting, LS)合同

2 激励需求响应模型

3 模型讨论

4 程序代码

5 程序链接


1 基于负荷聚合商的激励需求响应模型简介

负荷聚合商可以聚合居民负荷、商业负荷等中小型负荷,代表他们参与市场投标竞争,接受市场

运营商的调度[13]。聚合商代表用户与电网公司签订合同,规定负荷削减与负荷转移的时间与容量;用户在合同规定的时段内减少用电量或改变用电时间,从而获得相应的补偿。电力市场运行模式如图1 所示。

 在日前市场,负荷聚合商预测第二天各小时的电价与用户的负荷水平,以自身收益最大化为目标 制定需求响应方案,代表用户参与电力市场投标,并从中获得收益;在实时市场中,聚合商根据合同规定的时段和容量来调度所属用户的可控负荷。本文重点关注日前市场的投标决策优化,暂不考虑实时市场的负荷控制问题。

也就是说聚合商通过合同的方式来控制居民负荷进行转移或削减,具体的合同分为负荷削减合同(LC)和负荷转移合同(LS),基于激励的需求响应通常以合同的形式执行,直接采用赔偿或折扣的方式来激励和引导用户参与系统所需要的各种负荷削减项目。聚合商按照预测电价向电网运营商出售聚合的可控容量,并按照合同约定的补偿价格向用户支付费用。

1)负荷削减(Load Curtailment, LC)合同

用户在规定的时段内按合同要求实现负荷的削减, 并且不将这部分用电转移到其他时段。合同内容包括削减容量、单位补偿价格、启动价格、削减时长约束以及每日最大削减次数约束。这类合同通常针对具有热存储性的空调和热水器等用电设备以及一些非必须使用的电器。

(2)负荷转移(Load Shifting, LS)合同

用户根据合同要求改变自己的用电习惯,推迟或提前对某些设备的使用,将负荷转移到其他时段。合同内容在负荷削减合同的基础上增加了转移时段、被转移时段以及转移率,负荷只能按照一定的比例从转移时段转移到被转移时段,该比例即为转移率。这类合同通常针对洗碗机和烘干机等使用时间较为灵活的用电设备。

激励需求响应模型

模型按照齐先军《激励型需求响应对配电网运行可靠性的影响 》,在日前市场中,聚合商需要结合预测电价以及用户的响应潜力,并以自身利润最大化为目标进行最优化来决定各个时段的投标容量。目标函数为

式中, C 为聚合商的利润; Pt   为电力市场在 t 时段的电价; LLC 和 LLS 分别为 t 时段内负荷削减与负荷转移的投标量;NT 为进行投标决策优化的所有时段集合,本文中设定为 24 个时段,每个时段为 1h;Ct LC和 Ct LS 分别为 t 时段内聚合商需要支付给用户的负荷削减以及负荷转移成本。式(1)的前半部分表示聚合商从电网获得的收益,后半部分为需要支付给用户的成本,目标函数仅考虑聚合商的利益。

式中,qLC 为第 r 个负荷削减合同在 t 时刻削减的负荷量; pLC 为第 r 个削减合同所规定的 t 时段补偿价格; pLC0 为第 r 个负荷削减合同在 t 时刻实际需要支付的初始成本;削减合同状态指标 l LC 通过二进制数表示合同 r 执行的状态,1 表示 t 时段内合同被执行,0表示该时段内没有进行负荷削减; NLC 为负荷削减合同的集合。负荷削减约束为

式(4)为初始成本约束。oLC0 表示第 r 个负荷削减合同所规定的负荷削减初始成本; mLC 和 nLC 分别为负荷削减合同的起始指标和结束指标, 用1 和 0 分别表示第 r 个合同在 t 时段开始或结束。式(5)、式(6)分别为合同的最大削减时间和最小削减时间约束,其中 DLC,max 和 DLC,min 分别表示合同 r 削减时间的上、下限;式(7)为合同状态约束。式(8)规定合同无法在一个时段内同时开始和结束。式(9)为合同 r 每日执行次数约束,其中 M LC表示合同 r 每日执行的最大次数。

负荷转移需求响应模型和负荷削减模型类似,具体表达式如下所示。

 

 式中, oLS0 表示第 r 个负荷转移合同所规定的负荷转移初始成本; mLS0 和 nLS 分别表示负荷转移合同的起始和结束指标; DLS,max 和 DLS,min 分别表示负荷转移合同持续时间的上、下限;T LS1 为转移时段。

在负荷转移约束中,式(12)~式(16)表示的含义与式(4)~式(8)相似。相对于负荷削减合同,负荷转移合同中需要增加 3 个参数,即转移时段T LS1 、被转移时段 T LS2 和负荷转移率a 。用户执行第 r 个负荷转移合同时会在时段 T LS1 内减少用电,并将用电行为转移到时段T LS2 内。负荷转移率ar 为被转移到 T LS2 时段的负荷占 T LS1 时段内削减负荷的比例。式( 17)表示负荷只能从 T LS1 时段转移到其他时段。

这样就构造好了整个研究问题的混合整数线性规划模型。

3 模型讨论

在研究削减负荷和转移负荷的模型约束时,可以结合下表算例参数来分析,最主要的要求就是时间限制,我们可以看到,文章巧妙采用起始时间和终止时间两个0-1变量来实现这个约束。

季节

合同

容量MW

价格($/(MW·h))

启动价格/$

最小时间/h

最长时间/h

1

15

40

100

3

6

夏季

2

15

45

100

3

6

3

15

50

100

3

6

1

15

35

100

3

6

冬季

2

15

40

100

3

6

3

15

45

100

3

6

春秋季

1

10

25

100

3

5

2

10

30

100

3

5

通过对终止时间状态值在最长时长范围内求和大于起始时间状态来实现对最长时长约束,通过将起始时间状态与状态指标进行关联实现最小时间约束。

在模型建立的过程中,常常会遇到各种复杂的情况,包括很多非线性的问题,其实我们可以多思考一下模型是否可以通过设置一些变量或者转换条件来使得模型更加方便求解!

4 程序代码

可削减负荷的程序代码段如下:

con=[];con=[con,pLC0>=O.*mLC];%初始成本约束for t=1:T-Dmin+1con=[con,sum(ILC(t:t+Dmin-1))>=Dmin*mLC(t)];%最小时间约束endfor t=1:T-Dmax+1con=[con,sum(nLC(t:t+Dmax-1))>=mLC(t)];%最大时间约束endfor t=T-Dmax+2:Tcon=[con,sum(nLC(t:T))+sum(nLC(1:t+Dmax-1-T))>=mLC(t)];%形成24小时循环约束endfor t=2:Tcon=[con,mLC(t)-nLC(t)==ILC(t)-ILC(t-1)];%和文献一致endcon=[con,mLC+nLC<=1];%和文献一致

程序可实现的效果如下图。

 

 

5 程序链接

程序链接见评论区。

这篇关于激励型需求响应之yalmip策略(matlab代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/zhangxd212489/article/details/124505167
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/313773

相关文章

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,