潮流计算是电力系统分析的基础,其计算方式可粗略分为直流潮流和交流潮流。在前期推文 基于Distflow的最优潮流模型(OPF)–模型推导篇 发出后,有小伙伴在后台留言问我要潮流计算的代码,本期推文将给出直流潮流(DC-OPF)计算的相关代码。

直流潮流忽略了线路电阻和并联支路,同时不考虑无功与电压之间的关系,数学模型是一组线性方程[1],使得计算求解大为简化。因此,在文章 考虑风电经济调度的储能运行优化 的基础上,增加直流潮流和切负荷约束,实现风-火-储的经济调度。

Part 1、直流潮流与切负荷约束

  1. 直流潮流约束

    在满足如下假设条件时[2]:

    1)正常运行的电力系统各节点电压通常在额定电压附近,可以近似地认为Vi=Vi=1V_{i}=V_{i}=1Vi​=Vi​=1;

    2)线路两端电压相角差很小,有 δij=0\delta_{i j}=0δij​=0,因此有 sin⁡δij=0\sin \delta_{i j}=0sinδij​=0,cos⁡δij=1\cos \delta_{i j}=1cosδij​=1;

    3)超高压网络中,线路电阻比电抗小得多,电阻可以忽略,rij=1r_{i j}=1rij​=1。

    潮流方程就可以简化为:

Pij,t=δi,t−δj,tXij\begin{aligned} P_{i j, t}=\frac{\delta_{i, t}-\delta_{j, t}}{X_{i j}} \end{aligned} Pij,t​=Xij​δi,t​−δj,t​​​

其中, Pij,tP_{i j, t}Pij,t​ 为 ttt 时刻节点 iii 与节点 jjj 之间线路传输功率(MW), δi,t\delta_{i, t}δi,t​ 为 ttt 时刻节点 iii 的相角(rad),XijX_{i j}Xij​ 为节点 iii 与节点 jjj 之间线路的电抗(Ω)。

  1. 切负荷约束

0≤LSi,t≤Li,t\begin{aligned} 0 \leq \mathrm{LS}_{i, t} \leq L_{i, t} \end{aligned} 0≤LSi,t​≤Li,t​​

其中, LSi,t\mathrm{LS}_{i, t}LSi,t​ 为 ttt 时刻节点 iii 的切负荷功率(MW),Li,tL_{i, t}Li,t​ 为 ttt 时刻节点 iii 的负荷功率(MW)。储能、弃风及火电机组约束可参考历史推送: 考虑风电经济调度的储能运行优化 。因此,考虑直流潮流约束的风-火-储经济调度模型可以表示为:

OF=∑g,tag(Pg,t)2+bgPg,t+cg+∑i,tVOLL2×LSi,t+VWC×Pi,twcs.t.∑g∈ΩGiPg,t+LSi,t+Pi,tw−Li,t−Pi,tc+Pi,td=∑j∈ΩℓiPij,tPij,t=δi,t−δj,tXij−Pijmax⁡≤Pij,t≤Pijmax⁡Pgmin⁡≤Pg,t≤Pgmax⁡Pg,t−Pg,t−1≤RUgPg,t−1−Pg,t≤RDg0≤LSi,t≤Li,tPi,twc=wi,tΛiw−Pi,tw0≤Pi,tw≤wtΛiwSOCi,t=SOCi,t−1+(Pi,tcηc−Pi,td/ηd)ΔtPi,min⁡c≤Pi,tc≤Pi,max⁡cPi,min⁡d≤Pi,td≤Pi,max⁡dSOCi,min⁡≤SOCi,t≤SOCi,max⁡\begin{aligned} \mathrm{OF}=&\sum_{g, t} a_{g}\left(P_{g, t}\right)^{2}+b_{g} P_{g, t}+c_{g}+\sum_{i, t} \mathrm{VOLL}^{2} \times \mathrm{LS}_{i, t}+\mathrm{VWC} \times P_{i, t}^{\mathrm{wc}} \\ s.t.&\sum_{g \in \Omega_{G}^{i}} P_{g, t}+\mathrm{LS}_{i, t}+P_{i, t}^{w}-L_{i, t}-P_{i, t}^{c}+P_{i, t}^{d}=\sum_{j \in \Omega_{\ell}^{i}} P_{i j, t} \\ &P_{i j, t}=\frac{\delta_{i, t}-\delta_{j, t}}{X_{i j}} \\ &-P_{i j}^{\max } \leq P_{i j, t} \leq P_{i j}^{\max } \\&P_{g}^{\min } \leq P_{g, t} \leq P_{g}^{\max } \\ &P_{g, t}-P_{g, t-1} \leq \mathrm{RU}_{g} \\&P_{g, t-1}-P_{g, t} \leq \mathrm{RD}_{g} \\ &0 \leq \mathrm{LS}_{i, t} \leq L_{i, t} \\ &P_{i, t}^{w c}=w_{i, t} \Lambda_{i}^{w}-P_{i, t}^{w} \\&0 \leq P_{i, t}^{w} \leq w_{t} \Lambda_{i}^{w} \\ &\mathrm{SOC}_{i, t}=\mathrm{SOC}_{i, t-1}+\left(P_{i, t}^{c} \eta_{c}-P_{i, t}^{d} / \eta_{d}\right) \Delta_{t} \\ &P_{i, \min }^{c} \leq P_{i, t}^{c} \leq P_{i, \max }^{c} \\ &P_{i, \min }^{d} \leq P_{i, t}^{d} \leq P_{i, \max }^{d} \\ &\mathrm{SOC}_{i, \min } \leq \mathrm{SOC}_{i, t} \leq \mathrm{SOC}_{i, \max }\end{aligned} OF=s.t.​g,t∑​ag​(Pg,t​)2+bg​Pg,t​+cg​+i,t∑​VOLL2×LSi,t​+VWC×Pi,twc​g∈ΩGi​∑​Pg,t​+LSi,t​+Pi,tw​−Li,t​−Pi,tc​+Pi,td​=j∈Ωℓi​∑​Pij,t​Pij,t​=Xij​δi,t​−δj,t​​−Pijmax​≤Pij,t​≤Pijmax​Pgmin​≤Pg,t​≤Pgmax​Pg,t​−Pg,t−1​≤RUg​Pg,t−1​−Pg,t​≤RDg​0≤LSi,t​≤Li,t​Pi,twc​=wi,t​Λiw​−Pi,tw​0≤Pi,tw​≤wt​Λiw​SOCi,t​=SOCi,t−1​+(Pi,tc​ηc​−Pi,td​/ηd​)Δt​Pi,minc​≤Pi,tc​≤Pi,maxc​Pi,mind​≤Pi,td​≤Pi,maxd​SOCi,min​≤SOCi,t​≤SOCi,max​​

其中,aga_{g}ag​、bgb_{g}bg​、cgc_{g}cg​ 表示发电机组的成本系数,Pg,tP_{g, t}Pg,t​ 表示每个发电机组的输出功率,且Pg,tP_{g, t}Pg,t​ 满足发电上、下限约束和爬坡约束;Pi,tcP_{i, t}^{c}Pi,tc​ 表示储能系统的充电功率;Pi,tdP_{i, t}^{d}Pi,td​ 表示储能系统的放电功率;SOCi,t\mathrm{SOC}_{i, t}SOCi,t​为储能系统的荷电状态;VOLL\mathrm{VOLL}VOLL 为切负荷惩罚价格;VWC\mathrm{VWC}VWC 为风电场弃风惩罚价格;Λiw\Lambda_{i}^{w}Λiw​为风电场实际发电功率(MW),Pi,twcP_{i, t}^{w c}Pi,twc​ 为弃风功率(MW),Pi,twP_{i, t}^{w}Pi,tw​ 为风力发电并网功率(MW)。本次推文的24节点系统图为:

Part 2、编程代码补充说明

  1. np.where(condition)函数的用法:用于寻找满足条件(condition)的索引值。
import numpy as np
a = np.array([1,3,5,7,9])
b = a[np.where(a>5)] #等价于 a[a>5]
c = np.where(a>5)
d = a[np.where(a==5)] #等价于 a[a=5]
print('a is',a)
print('b is',b)
print('c is',c)
print('d is',d)

示例:
RTS[“gen”][np.where(RTS[“gen”][:, 1] == 1)]表示利用np.where(RTS[“gen”][:, 1] == 1)在RTS[“gen”]的第2列([:, 1])中寻找1节点下(== 1)发电机的索引值;

  1. np.intersect1d函数的用法:查找两个数组中相同的值
import numpy as np
x = np.array([1, 1, 2, 3, 4])
y = np.array([2, 1, 4, 6])
Value_xy, Position_x, Position_y = np.intersect1d(x, y, return_indices=True)
print('The same value is',Value_xy)
print('The position of x is', Position_x+1)
print('The position of y is', Position_y+1)

示例:
x = np.where(RTS[“branch”][:, 0] == 1) # 第一列([:, 0])的1节点(== 1)
y = np.where(RTS[“branch”][:, 1] == 3) # 第二列([:, 1])的3节点(== 3)
RTS[“branch”][np.intersect1d(x, y)]利用np.intersect1d(x, y)判断RTS["branch "]中第1列的1节点索引和第2列3节点索引是否相同,若相同则返回索引表示1节点与3节点相连;若为空则表示1节点与3节点不相连。

  1. 代码中在每个节点设置了储能和风电场,增加了模型变量,在大规模问题中会增加求解时间,可根据具体案例情况进行修改减少变量个数,缩短求解时间;
  2. 在代码中,通过FS和RS枚举所有节点与支路的关联关系,避免了支路潮流重复计算,此处可以通过其他方法进一步改进。

Part 3、参考文献

[1] 赵晋泉,叶君玲,邓勇. 直流潮流与交流潮流的对比分析[J]. 电网技术,2012,36(10):147-152.

[2] 张伯明.陈寿孙.严正.高等电力网络分析[M].北京:清华大学出版社,2007.

[3] A. Soroudi, Power System Optimization Modeling in GAMS. 2017. DOI: 10.1007/978-3-319-62350-4.

Part 4、代码获取方式:

  1. 转发本推文至朋友圈集满88个赞即可免费获取代码;
  2. 转发本推文至朋友圈集满66个赞,同时赞赏5元,即可获取代码;
  3. 直接点击文末“喜欢作者”,赞赏10元,即可获取代码。

在满足上述任一条件后,请后台发送赞赏/点赞的截图获取代码链接,感谢大家的支持!

Part 5、创作人员名单

作者| 李同学1,李同学2
代码| 李同学1,李同学2
审核| 李同学2


欢迎大家关注公众号“菜鸟的能源优化之路”获取最新资讯

往期内容回顾

16. 考虑风电经济调度的储能运行优化
15. 列与约束生成(Column and Constraint Generation, C&CG/CCG)算法
14. 考虑负荷灵敏度分析的火电机组经济调度
13. 拉格朗日乘子法与KKT条件
12. 经济调度问题的建模及求解——考虑爬坡约束
11. 火电机组经济调度建模及求解——基础篇
10. 基于Distflow的最优潮流模型(OPF)–模型推导篇
9. 火电机组经济调度建模及求解——基础篇
8. Python|Gurobi——零基础学优化建模-终章
7. Python|Gurobi——零基础学优化建模-压轴篇:多目标优化
6. Python|Gurobi——零基础学优化建模-分段模型线性化(PWL)
5. Python|Gurobi——零基础学优化建模-QCP
4. Python|Gurobi——零基础学优化建模-NLP
3. Python|Gurobi——零基础学优化建模-MIP
2. Python|Gurobi——零基础学优化建模-LP
1. Python|Gurobi——零基础学优化建模

经济调度问题的建模及求解—考虑直流潮流(DC-OPF)与切负荷相关推荐

  1. 车桥耦合(公路梁桥,斜拉桥,悬索桥等),方法有基于MATLAB-ANSYS建模程序求解

    1.车桥耦合(公路梁桥,斜拉桥,悬索桥等),方法有基于MATLAB-ANSYS建模程序求解 基于ANSYS全过程车桥耦合命令流建模求解. 程序通用性很强,换个桥梁参数和车辆参数即可实现. 2.梁桥,斜 ...

  2. 小行星轨道 matlab,小行星轨道问题的建模与求解数学建模论文.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp学术论文&nbsp>&nbsp自然科学论文 小行星轨道问题的建模与求解数学建模论文.doc6 ...

  3. 模块化多电平换流器(MMC)matlab完整仿真模型,包括电压均衡和电流抑制控制;换流器小信号建模,风机光伏直流等电磁暂态建模、机电暂态建模均有相关模型

    详细的MMC电磁暂态仿真模型,完整的控制结构,包含多种附加控制策略.能够稳定运行,基于该模型可实现换流器进一步的研究.另:各种换流器小信号建模,风机光伏直流等电磁暂态建模.机电暂态建模均有相关模型,如 ...

  4. 飞机飞行与碰撞问题matlab,飞行管理问题(建模与求解).doc

    飞行管理问题(建模与求解).doc 飞行管理问题 建立了一个非线性规划模型,但由于模型求解过于复杂,设计了一个 算法,利用计算机求解,用模拟的方法建立了新的模型,并用它对给定的数据进行 计算,得出了合 ...

  5. 带容量约束的p-中值选址问题建模与求解

    带容量约束的p-中值选址问题建模与求解 1. 简介 选址理论的研究,最早始于1909 年,Weber 研究如何在平面上确定一个仓库位置,使仓库与顾客间的总距离最小(也称为 韦伯问题) :而后在1964 ...

  6. 带容量约束的p-中心选址问题建模与求解

    带容量约束的p-中心选址问题建模与求解 1. 简介 选址理论的研究,最早始于1909 年,Weber 研究如何在平面上确定一个仓库位置,使仓库与顾客间的总距离最小(也称为 韦伯问题) :而后在1964 ...

  7. JuMP: 用Julia进行优化建模及求解- 覃含章的文章 - 知乎 https://zhuanlan.zhihu.com/p/40807662

    JuMP: 用Julia进行优化建模及求解 - 覃含章的文章 - 知乎 https://zhuanlan.zhihu.com/p/40807662 0. 为什么要用Julia做优化? 本文是我在Jul ...

  8. 最大覆盖选址问题建模与求解

    最大覆盖选址问题建模与求解 1. 简介 选址理论的研究,最早始于1909 年,Weber 研究如何在平面上确定一个仓库位置,使仓库与顾客间的总距离最小(也称为 韦伯问题) :而后在1964 年,Hak ...

  9. 【直流潮流】基于直流潮流的电力系统停电分布及自组织临界性分析

    1.软件版本 matlab2013b 2.系统概述 整个算法的流程图,OPA模型的流程图如下: 详细的讲,我们的这个算法的安如下的步骤进行: 步骤1:k=k+1,通过慢动态过程中的几个公式,对Pmax ...

最新文章

  1. UML for Java Programmers之dx实战
  2. 强强联合!Papers with Code 携手 arXiv,上传论文、提交代码一步到位
  3. 设计建造者模式java代码,Java设计模式-建造者模式
  4. VBA:指定なフォルダしたのすべてのファイル名
  5. ArrayBlockingQueue原理分析-take方法
  6. oracle 10g 更换ocr,Oracle10g RAC在线更换OCR votedisk
  7. 阿里为什么禁用Executors创建线程池?
  8. python吃香吗_python编程为何这么吃香
  9. MPC(模型预测控制)控制小车沿轨迹移动——C++实现
  10. 下属执行不给力?真相是90%的领导不会布置任务!
  11. 计算机无法读取tf卡,为什么电脑不识别TF卡?
  12. 项目实战之电子商城数据库源码
  13. android ¥符号,android统一显示¥符号
  14. 用来打发时间的EUserv
  15. if [ $# -ne 1 ];then 是什么意思?
  16. Unity3D 对于在VR中普通摄像头和VR摄像头同时存在——分屏
  17. 如何获得凤凰网或腾讯视频链接并下载到本地
  18. 安装Memcached及Memcached配置
  19. Java非静态变量给静态变量赋值
  20. NATAPP内网穿透工具使用说明

热门文章

  1. win10iot 镜像写入方法
  2. 当下主流浏览器IE6、IE7 、IE8、Firefox、Chrome、Safari、Opera
  3. 实验5-2:编求x的y次方的递归函数
  4. nodemon入门介绍
  5. 使gdb支持string、vector、map等STL类型数据的查看(linux)
  6. [转] iOS 常用数学函数
  7. php的POST效率,如何解决phppost太慢的问题-PHP问题
  8. GitHub邀请合作者加入项目
  9. android的国际化和本地化
  10. NPOI导出word文档中插入公式总结