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

相关文章

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

轻松掌握python的dataclass让你的代码更简洁优雅

《轻松掌握python的dataclass让你的代码更简洁优雅》本文总结了几个我在使用Python的dataclass时常用的技巧,dataclass装饰器可以帮助我们简化数据类的定义过程,包括设置默... 目录1. 传统的类定义方式2. dataclass装饰器定义类2.1. 默认值2.2. 隐藏敏感信息

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

Java实现批量化操作Excel文件的示例代码

《Java实现批量化操作Excel文件的示例代码》在操作Excel的场景中,通常会有一些针对Excel的批量操作,这篇文章主要为大家详细介绍了如何使用GcExcel实现批量化操作Excel,感兴趣的可... 目录前言 | 问题背景什么是GcExcel场景1 批量导入Excel文件,并读取特定区域的数据场景2