激励型需求响应之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代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313773

相关文章

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave