最近一段时间有很多人问我最优潮流计算中储能系统的建模方法。部分朋友的问题我回复了,有些没有回消息的,我就不再一一回复了,在这里我写一篇博客统一介绍一下。
首先,让【GPT】简单介绍一下储能系统:
“储能设备在电力系统中的作用不可忽视。它们能够将多余的电能储存起来,并在需要时释放出来,以平衡电力供求关系。储能设备可以提供电网的稳定性和可靠性,保证电力系统的正常运行。首先,储能设备能够储存电能,以便在高峰期或紧急情况下提供备用电力。其次,当可再生能源如太阳能和风能产生电力过剩时,储能设备可以将其储存起来,以便在能源短缺或可再生能源不可用时供应电力。储能设备还可以提供快速响应的频率调节,以对抗电力波动。此外,通过在储能设备中储存低成本电力,并在高峰期将其释放,可以有效降低能源成本。总之,储能设备在电力系统中的作用是确保电力供应的稳定性和可持续性,提高能源利用效率,降低成本,并促进清洁能源的应用”。
GPT回答的还算切题,简单来说,储能系统就是电能的存储装置,电力系统中电能过剩时将电能储存在储能中,电能紧缺时将储能中储存的电能释放出来,像抽水蓄能站就是一种典型的储能系统,而最近比较火热的电动汽车,其本质上也是一种特殊的储能系统。
在对储能系统进行建模时,通常会涉及一些相关概念,在此进行简单介绍。
储能的额定容量是指储能设备能够储存的最大电能量,通常以千瓦时(kWh)或兆瓦时(MWh)为单位。额定容量越大,意味着储能设备能够储存更多的电能,从而提供更长时间的电力供应。
额定功率是指储能设备输出的最大功率,通常以千瓦(kW)或兆瓦(MW)为单位。额定功率越大,意味着储能存储或者释放电能的速度越快。
我们在文献中通常见到的“储能优化配置”这一说法,实际上就是通过数学优化方法来选择储能最优的额定容量和额定功率。
储能的充电就是将外界的电能存储到储能中,充电功率就是储能装置在充电过程中,单位时间内从外部电源吸收电能的速率,通常以千瓦(kW)或兆瓦(MW)为单位。
类似地,储能的放电就是将储能中存储的电能释放出来,放电电功率就是储能装置在放电过程中,单位时间内释放电能的速率,通常以千瓦(kW)或兆瓦(MW)为单位。
需要注意的是,一般文献中所指的储能充电功率和放电功率,都是储能实际存储或者向外界输出的功率,由于存在功率损耗,外界向储能输入的功率和充电功率不一定相等,储能消耗的功率和放电功率不一定相等。这种现象又引出了充电效率和放电效率的概念。
储能的充电效率就是指充电过程中实际存储到储能中的电能和外界向储能输入电能的比值,反映了充电过程中电能的损耗情况,充电效率越高表示充电时损耗越低。
储能的放电效率就是指放电过程中储能实际输出的电能和储能所消耗电能的比值,反映了放电过程中电能的损耗情况,放电效率越高表示放电时损耗越低。
储能的荷电状态表示储能装置中存储电能的多少,通常可以使用百分比或者kWh(MWh)两种单位。
当使用%作为单位时,储能的荷电状态表示储能中目前存储的电能和其总容量的比值,理论上可以从0%(没有储存电能)变化到100%(储存电能达到最大容量)。例如,一个储能装置的荷电状态为50%,表示该装置当前储存电能的容量为最大容量的50%。
当使用kWh(MWh)作为单位时,储能的荷电状态表示储能当前存储电能的实际值,理论上也可以从0kWh(没有储存电能)变化到额定容量(储存电能达到最大容量),例如,一个储能装置的荷电状态为30MWh,表示该装置当前储存电能为30MWh。
根据上述概念的介绍我们可以知道,储能系统的额定容量、额定功率、充放电效率都是常量(当然,对于储能优化配置问题来说,额定容量和额定功率也是变量),充放电功率和荷电状态是变量。而且它们之间还存在一定关系:储能充电时荷电状态增大,储能放电时荷电状态减小。理解了这一点后,就可以正式开始学习储能的建模方式。
假设储能在t时刻充电或放电的功率为PS,t,其中当PS,t≥0时,表示储能系统向外界放电,储能自身荷电状态降低;当PS,t≤0时,表示储能系统充电,储能自身荷电状态增大。此时储能的荷电状态ES,t和充放电功率PS,t的关系可以表示为:
此外,需要注意的是,计算荷电状态时,充放电效率一个要×,一个要÷,这是充放电效率的概念所决定的,大家可以结合上一节充电效率和放电效率的概念自行体会一下。
这个公式含有非线性函数max(),一般都需要进行线性化再进行求解,文献中通常有三种不同的处理方式,下面分别进行介绍。
文献[1]中通过引入一组0-1变量,可以将储能的非线性约束转为线性约束,具体如下:
式(4)和式(5)表示储能的充放电功率应小于其额定值,式(6)表示储能在一个调度期内充放电功率数值上相等(也就是调度始末的荷电状态不变)。式(7)表示储能的荷电状态应保持在一定的区间内。
也有文献为了公式表达更简洁,引入一个中间变量ES,t表示储能的荷电状态,则式(6)和式(7)可以改写为:
这样处理增加了变量的数目,但是可以使约束条件表达式更加简洁直观。
在储能的实际运行中,对储能控制策略可能存在很多特殊情况,例如在某一时间段,需要禁止储能进行充电和放电,这种情况下只引入一组0-1变量可能就不是很合适。
举个例子进行说明,假设存在另一个变量Um用于限制储能的充放电行为,当Um=1,表示储能可以进行充放电,当Um=0时,表示禁止储能进行充放电行为,这时候可以增加两组约束条件,表示变量Um对储能充放电行为的限制:
另一种更常规的方式是引入两组0-1变量,其中一个表示充电状态,另一个表示放电状态,如文献[2]中的方式:
当存在对储能充放电状态的限制条件时,引入两组0-1分别表示储能的充放电状态,可以更方便地实现对储能运行的建模。实际情况中这样的约束条件有很多,例如电动汽车只有在充电站时才可以充电,抽水蓄能站在不满足水利条件时无法进行操作等等。
采用常规的数学规划算法时,引入0-1变量一般对问题求解效率不会造成太大影响,但对智能优化算法来说,存在0-1变量通常求解难度会更大,此外,非线性条件并不会影响智能优化算法的求解效率,而决策变量的数目越大,一般来说智能优化算法求解性能会更差。因此,使用智能优化算法求解储能运行策略时,要遵循的原则就是:
1.尽可能避免使用0-1变量。
2.尽可能减少变量的数目。
基于上述原则,很多文献提出了各种不同的建模方式,文献[3]中所提的是1种比较常规的做法,具体如下:
由上面的介绍可知,这样建模是假设了储能的充放电效率都为1,就可以只用储能荷电状态 这1个变量表示储能运行过程中的约束。
另一种方式是只用储能的充放电功率这一个变量表示储能的运行状态,就可以考虑储能的充放电效率,表达方式如下:
我编了一个简单的算例来说明三种不同方法的具体应用:
某地有一个风-光-储互补系统,某一天中风电、光伏出力以及负荷需求都是已知的,现在需要控制储能的充放电策略,尽可能降低负荷短缺以及弃风弃光的现象。其中,储能系统的额定容量为40MW,额定功率为20MW,充放电效率分别为0.95和0.96,最大和最小荷电状态分别为15%和90%,初始荷电状态为30%,风、光、负荷各个小时的数据分别如下表(单位/MW):
光伏出力 |
风电出力 |
负荷需求 |
0 |
15.9958 |
15.6378 |
0 |
18.4567 |
14.7866 |
0 |
20.2975 |
14.3611 |
0 |
19.0719 |
13.7227 |
0 |
17.2262 |
13.5099 |
0.6857 |
7.3827 |
10.6378 |
2.1619 |
8.6131 |
13.8297 |
4.6232 |
10.4588 |
16.3831 |
7.0138 |
12.3044 |
16.7878 |
7.6877 |
7.3827 |
19.4884 |
9.6786 |
3.6913 |
16.8517 |
14.7472 |
5.5370 |
14.2982 |
10.9453 |
3.0761 |
12.8087 |
10.0531 |
2.4609 |
11.7448 |
7.3323 |
8.6131 |
12.3831 |
6.8265 |
10.4588 |
14.511 |
4.1410 |
16.6110 |
15.9955 |
1.3980 |
16.6110 |
16.6389 |
0.1607 |
11.0740 |
17.914 |
0 |
9.2283 |
20.1335 |
0 |
9.8436 |
17.2756 |
0 |
9.8436 |
14.8727 |
0 |
14.7653 |
13.1064 |
0 |
19.0719 |
12.2762 |
首先看一下风电、光伏出力之和与负荷需求的匹配情况:
从图中可以看到,风光出力和负荷需求存在明显的不匹配情况,如果没有储能系统的话,将出现弃风弃光与负荷短缺的情况。下面我们使用Matlab编程求解储能的运行策略,使得风电、光伏出力和负荷需求尽可能匹配。目标函数可以表示为:
下面使用三种不同的建模方式分别求解该问题。
通过引入一组0-1变量,可以将上述问题表述为:
该优化问题的目标函数是一个二次函数,约束条件均为线性,包含0-1变量,是一个混合整数二次规划问题,可以使用Yalmip求解器进行求解。运行文件夹内的Method1.m文件即可得到如下结果:
由图可知,通过加入储能系统,可以明显减少系统的弃风弃光现象,避免出现负荷短缺的情况,增加新能源消纳率。
下面引入两组0-1变量,将上述问题表述为:
该优化问题的目标函数是一个二次函数,约束条件均为线性,包含0-1变量,是一个混合整数二次规划问题,可以使用Yalmip求解器进行求解。运行文件夹内的Method2.m文件即可得到如下结果:
和第一种建模方式的结果完全一致,说明两种方法是等效的。为了说明第二种建模方式的效果,我们假设为了防止储能过度损耗,要求储能系统一天之内的充放电次数不能大于20次。大家可以思考一下,如果只有一组0-1变量,该如何表达这个约束条件。如果是有两组0-1变量,增加的约束条件可以这样表达:
将这个约束条件添加到原优化问题中,然后重新进行优化求解。运行文件中的Method2_1.m文件即可得到如下结果:
由以上结果可知,增加储能充放电次数约束之后,弃风弃光与负荷短缺的情况略有增加,新能源消纳率略有下降。但约束储能充放电次数一定程度上可以延缓储能寿命,在实际建模中可以适当考虑。
将储能充放电功率作为决策变量,使用经典的粒子群算法进行求解,优化问题可以表述为:
使用罚函数的方式将约束条件添加到目标函数中,使用粒子群算法进行求解,其中问题维度为24,种群规模设为500,迭代次数设为500,运行文件夹内的Method3.m文件即可得到如下结果:
由结果可知,粒子群算法的效果比直接使用数学规划算法要差不少,需要采取一定措施进行改进。另一方面我们也可以知道,对于可以通过线性化表达转为线性规划、二次规划或者二阶锥规划的非线性规划问题,最好还是使用数学优化方法,加上求解器进行求解,一般效果都会比智能优化算法更好。除非模型实在太复杂,才考虑使用智能优化算法。
完整代码可以从以下链接获取:
储能运行约束的Matlab建模方法资源
[1]刘一欣,郭力,王成山.微电网两阶段鲁棒优化经济调度方法[J].中国电机工程学报,2018,38(14):4013-4022+4307.
[2]高红均,刘俊勇,沈晓东等.主动配电网最优潮流研究及其应用实例[J].中国电机工程学报,2017,37(06):1634-1645.
[3]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012.