激励型需求响应之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

相关文章

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据