(文章复现)面向配电网韧性提升的移动储能预布局与动态调度策略(1)-灾前布局matlab代码

简介: 针对极端灾害导致配电网大面积停电场景,利用多种分布式资源协同恢复重要负荷。在电网与交通网融合背景下,提出了一种考虑移动储能预布局与动态调度的两阶段配电网韧性提升策略。在灾前预防阶段,考虑光伏出力不确定性与网络重构建立两阶段鲁棒优化模型,采用 Big-M 法和列约束生成算法迭代求解移动储能的配置数量与位置方案。通过 IEEE 33 节点配电系统算例验证了所提策略提升配电网韧性的有效性。

参考文献:

[1]王月汉,刘文霞,姚齐,万海洋,何剑,熊雪君.面向配电网韧性提升的移动储能预布局与动态调度策略[J].电力系统自动化,2022,46(15):37-45.

image.gif

1.基本原理

1. 1 目标函数

       本文以最恶劣光伏出力场景下的移动储能配置成本与负荷削减成本最小为目标,建立两阶段鲁棒优化模型来确定移动储能的配置数量与位置。第一阶段的决策变量为移动储能与节点的连接状态以及线路开关状态,第二阶段的决策变量为负荷削减功率、分布式电源出力、节点电压、支路功率与电流,光伏出力为不确定变量,目标函数如下:

image.gif

image.gif

1. 2 约束条件

1. 2. 1 第一阶段约束

       1)移动储能资源约束。在灾害发生前储备的移动储能资源有限,并且每台移动储能设备参数相同,每个节点最多预先配置一台设备,即

image.gif

       2)配电网辐射拓扑约束。考虑孤岛融合与无电源孤岛的情况,采用改进单商品流法确保恢复过程中配电网满足辐射状拓扑要求[19] ,通过引入虚拟源节点标志 0-1 变量image.gif,将网络重构后的孤岛数量加入优化过程,采用 Big-M 法对虚拟功率流进行松弛,具体表示如下:

image.gifimage.gif

1. 2. 2 第二阶段约束

       1)负荷削减约束。设负荷功率因数固定,负荷削减功率约束可表示如下:

image.gif

       2)分布式电源出力约束。

       各个节点的分布式电源出力不应超过其出力上限,假设在灾害发生前,移动储能、接入充电桩的电动汽车均处于满电状态,取充放电功率上限作为其出力上限。此外,分布式电源的有功功率、无功功率与功率因数之间存在约束,其中光伏采用定功率因数运行。分布式电源出力约束可表示如下:

image.gif

       3)配电网运行约束。对于辐射状配电网络,采用 DistFlow 潮流方程[20] ,于网络拓扑结构随线路开关状态变化,因此,采用 Big-M 法对电压方程进行松弛。系统运行约束可表示如下:

image.gifimage.gif

       对于电压、电流和功率之间的非线性约束式(19),通过二阶锥松弛方法将其转化为以下二阶锥约束:image.gif

       通过求解该两阶段优化模型,可以得到在最恶劣光伏出力场景下的移动储能配置数量、位置与网络拓扑方案,确保灾后移动储能迅速参与到负荷恢复过程中。

2 模型求解

       在给定电网-交通网融合系统参数条件下,通过求解灾前预布局鲁棒优化模型与多源协同的灾后恢复优化模型,获得最优的负荷削减与电源出力方案。其中,灾后恢复优化模型为混合整数二阶锥规划问题,可利用商业求解器 Gurobi 求解。对于灾前预防阶段的两阶段鲁棒优化模型,采用列约束生成(C&CG)算法求解,原问题的紧凑形式如下:

image.gifimage.gif

       然后,将原问题分解为主问题与子问题,其中主问题求解给定光伏出力 u* 情况下最优的移动储能预布局方案,如式(42)所示,该混合整数二阶锥规划问题可通过商业求解器求解。

image.gif

式中:Z 为辅助变量;K为最大迭代次数;下标l表示第l次迭代得到的变量。 子问题求解给定移动储能预布局方案X *情况下最恶劣的光伏出力,子问题形式为:

image.gif

       子问题内层min问题为凸优化问题,根据强对偶理论将其转化为max形式[24],与外层max问题合并形成如下单层优化问题:image.gif

image.gifimage.gifimage.gif

3.编程思路分析

3.1参数和变量定义

表1 相关参数

image.gif

表2 决策变量


3.2编程思路

       根据对文献内容的解读,可以设计下面的编程思路:

       步骤1输入所需数据

       原文献中使用了标准IEEE33节点配电网,原始数据可以在Matpower工具箱的数据文件中找到,其他的相关数据原文献附录中基本已经提供,大体没啥问题。将所需的数据,按照表1的定义格式输入即可。

       步骤2:定义决策变量

       这一步比较简单,按照表2,初始化决策变量即可。要注意的是每个决策变量的维度以及类型(sdpvar还是binvar)不要出错。

       步骤3:定义目标函数和约束条件,尝试求解确定性优化问题

       按照原文中给定的公式1-20,写出相应的目标函数与约束条件即可,需要注意的地方是在yalmip工具箱中,要转换为二阶锥优化,需要使用cone函数。

       上述步骤都完成后,可以假设不确定变量保持不变,尝试求解一下确定性优化问题。如果能正常求解,则可进行下一步,否则需要反复调试,找到问题所在。

       1.原文的约束条件(12)中,为约束DG的功率因数,引入了二次项,增大了模型求解难度。其实要表达功率因数上下限约束,写成P×tanφmax>Q>P×tanφmin即可,效果一样,但是可以避免引入二次项增加模型求解难度。

       2.在这里强调一点,配电网最优潮流最容易踩坑的地方就是标幺值转换上。之前有朋友拿自己写的代码问我,说感觉公式模型都是按照参考文献打的,但一用求解器就是“Infeasible problem”,拿给我一看,参数中有的数值用的是实际值,有的数值用的是标幺值,非常混乱,我把参数统一修改为标幺值就可以正常运行了。建议在编程时都转换为标幺值求解。

       步骤4将目标函数、约束条件写成紧凑形式

       确定性优化问题能正常求解后,就可以加入不确定变量,调试两阶段鲁棒优化问题是否能正常求解。为了便于两阶段鲁棒优化编程求解,需要把所有的系数写成紧凑的矩阵形式,所有的决策变量写成向量形式。这是因为两阶段鲁棒优化问题的子问题是一个双层优化问题,求解时一般需要通过对偶变换转为单层优化问题进行求解,一般变换过程都相当复杂,容易出错。但使用Matlab+Yalmip工具箱求解时,有三种更便捷的方法:

       一是直接使用yalmip工具箱中的kkt函数(kkt - YALMIP),通过KKT条件将双层优化问题转为单层优化问题。

       二是直接使用yalmip工具箱中的dualize函数(dualize - YALMIP),直接将原问题下层优化转为对偶问题,然后和上层优化合并形成单层优化。

       三是采用yalmip内置的鲁棒优化求解方法(Robust optimization - YALMIP),通过uncertain约束不确定变量,直接求解鲁棒优化问题,但这种方法要求不确定集为简单的盒装不确定集、椭圆不确定集或可通过1范数、2范数显式表达的不确定集。

       这份代码为方便起见,采用kkt条件求解子问题,因此将目标函数、约束条件写成紧凑形式这一步可以省略。

       关于式(41)的错误。从目标函数(1)中可以看到,目标函数中包括0-1变量image.gif以及连续变量image.gif,其中0-1变量包含在X中,连续变量包含在Y中,因此目标函数中应包括含有X的项以及含有Y的项,但式(41)中目标函数只与Y相关,应该是漏写了,代码中应该把这部分加上。

步骤5:求解两阶段鲁棒优化的主问题

       关于决策变量。原文式(1)描述的比较清楚,第一阶段的决策变量为两个0-1变量,支路状态以及移动储能安装位置,不确定变量为光伏的出力,第二阶段决策变量为其余变量,可写成下列形式:

image.gif

       原文中用到的算例是改进的IEEE33节点配电网,NB为33,NL为37,NPV为5,NDG为10,因此变量X为70维列向量,变量u为5维列向量,变量Y为226维列向量。

       在Matlab中编写主问题的求解函数时,输入参数应包括当前迭代次数(用于确定新增加的变量Yl和相应的约束条件)和不确定变量u的取值,输出参数包括决策变量X和LB。

image.gif

       步骤6:求解两阶段鲁棒优化的子问题

       子问题是一个min-max的双层优化问题,文中用到对偶变换转为单层优化问题,具有一定的难度(求优化问题的系数矩阵和对偶转换比较困难),代码中是采用yalmip编程的,直接用yalmip工具箱中的kkt函数就可以解出内层max问题的KKT条件,非常方便。这样就可以将min-max的双层优化子问题转为单层优化问题,并使用求解器求解。

       在matlab编写子问题的函数时,输入参数应包括0-1决策变量X的取值,输出参数包括不确定变量u和UB。

       步骤7:采用C&CG算法迭代求两阶段鲁棒优化问题最优解

       有关算法的基本原理可以看我之前的博客(两阶段鲁棒优化及行列生成算法(C&CG)超详细讲解)。此处不再赘述。因为原文式(41)有点小问题,所以为了方便编程,可以重新写一下主问题和子问题。

       主问题:

image.gif

       子问题:

image.gif

       步骤8:输出计算结果

       原文中将移动储能的预布局和优化调度拆成两阶段优化策略。预布局是第一阶段的优化,是一个基于混合整数二阶锥的两阶段鲁棒优化问题。这份代码复现了第一阶段灾前移动储能预布局的结果,后面的灾后多源协同的恢复优化模型,过几天有空了我也会解读并发到博客上。

4.完整Matlab代码

       灾前移动储能预布局阶段的完整的matlab代码可以从这个链接获取:

面向配电网韧性提升的移动储能预布局与动态调度策略(1)-灾前布局matlab代码

       全文复现matlab代码可以从这个链接获取:

面向配电网韧性提升的移动储能预布局与动态调度策略-全文复现matlab代码

5.运行结果分析

5.1确定性优化结果

       (1)考虑移动储能优化配置

image.gif

image.gif         (2)不考虑移动储能优化配置

image.gif

image.gif

5.2 两阶段鲁棒优化结果

       (1)考虑移动储能优化配置

image.gif

image.gif         (2)不考虑移动储能优化配置

image.gif

image.gif

       几种结果的对比如下表所示:

场景

移动储能预配置节点

预布局成本/元

两阶段鲁棒优化

考虑移动储能预配置

节点4,7

4666.1668

不考虑移动储能预配置

节点1,1

8085.7385

确定性优化

考虑移动储能预配置

节点7,25

5085.8315

不考虑移动储能预配置

节点1,1

7665.8694

       根据结果可以看出,不考虑移动储能预配置时,虽能减少移动储能位置预配置成本,但需要承担更高的负荷削减成本,而两阶段鲁棒优化与确定性优化相比,考虑了最恶劣的场景,因此制定的方案更保守,预布局成本略高于确定性优化。

相关文章
|
6月前
|
机器学习/深度学习 算法 安全
m基于Q-Learning强化学习的路线规划和避障策略matlab仿真
MATLAB 2022a仿真实现了Q-Learning算法在路线规划与避障中的应用,展示了智能体在动态环境中学习最优路径的过程。Q-Learning通过学习动作价值函数Q(s,a)来最大化长期奖励,状态s和动作a分别代表智能体的位置和移动方向。核心程序包括迭代选择最优动作、更新Q矩阵及奖励机制(正奖励鼓励向目标移动,负奖励避开障碍,探索奖励平衡探索与利用)。最终,智能体能在复杂环境中找到安全高效的路径,体现了强化学习在自主导航的潜力。
97 0
|
5月前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。
|
5月前
|
算法
基于仿射区间的分布式三相不对称配电网潮流算法matlab仿真
```markdown # 摘要 本课题聚焦于基于仿射区间的分布式三相配电网潮流算法在MATLAB2022a中的仿真。算法利用仿射运算处理三相不平衡情况及分布式电源注入,旨在提供比区间算法更精确的不确定区域。仿真结果展示了算法优势。核心程序设计考虑了PQ、PV及PI节点,将不同类型的节点转换统一处理,以适应含分布式电源的配电网潮流计算需求。 ``` 这个摘要以Markdown格式呈现,总字符数为233,满足了240字符以内的要求。
|
5月前
一篇文章讲明白MATLAB循环结构
一篇文章讲明白MATLAB循环结构
94 0
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
6月前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
199 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
128 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码