电力系统分析|电力系统分析工具包pypower简易使用教程


文章目录

  • 一、pypower简介
  • 二、算例分析
  • 三、总结
  • 四、延申阅读

一、pypower简介 电力系统分析工具包pypower,可以理解为matpower的python版,数据格式与函数与matpower类似,因此使用时也可参考matpower手册。
下载链接:https://github.com/rwl/PYPOWER,或pip install pypower
官方介绍:pypower是电力系统潮流(PF)和最优潮流(OPF)求解器, 目前功能包括交/直流潮流和最优潮流求解(内置牛顿法,快速分解法等)。
官方文档:https://rwl.github.io/PYPOWER/api/
二、算例分析 以求解case30系统OPF为例,首先导包:
from pypower.api import case30, ppoption, runopf

若要保存OPF结果,需定义输出文件名:
filename = 'D:/eeecode/testbypypower/case30result.txt'

导入case30系统数据,包含节点数据bus,发电机数据gen,线路数据branch,opf数据gencost等:
data = https://www.it610.com/article/case30()

若要看发电机数据,可打印:
print(data['gen'].shape) print(data['gen'])

结果大小为(6,21),6表示有6台发电机,每一列数据的含义可参考官方文档,如下:
电力系统分析|电力系统分析工具包pypower简易使用教程
文章图片

或者也可以参考matpower的格式说明。
在导入数据后,需要进行控制向量的设置,控制向量主要指控制采用什么方法求解(牛顿法,快速分解法,高斯赛德尔法…),迭代收敛条件,输出内容等,不填写则采用缺省值:
ppopt = ppoption() print(ppopt)

打印结果如下:
{'PF_ALG': 1, 'PF_TOL': 1e-08, 'PF_MAX_IT': 10, 'PF_MAX_IT_FD': 30, 'PF_MAX_IT_GS': 1000, 'ENFORCE_Q_LIMS': False, 'PF_DC': False, 'CPF_PARAMETERIZATION': 3, 'CPF_STOP_AT': 'NOSE', 'CPF_STEP': 0.05, 'CPF_ADAPT_STEP': False, 'CPF_ERROR_TOL': 0.001, 'CPF_STEP_MIN': 0.0001, 'CPF_STEP_MAX': 0.2, 'CPF_PLOT_LEVEL': 0, 'CPF_PLOT_BUS': '', 'CPF_USER_CALLBACK': '', 'CPF_USER_CALLBACK_ARGS': '', 'OPF_ALG': 0, 'OPF_VIOLATION': 5e-06, 'OPF_FLOW_LIM': 0, 'OPF_IGNORE_ANG_LIM': False, 'OPF_ALG_DC': 0, 'VERBOSE': 1, 'OUT_ALL': -1, 'OUT_SYS_SUM': True, 'OUT_AREA_SUM': False, 'OUT_BUS': True, 'OUT_BRANCH': True, 'OUT_GEN': False, 'OUT_ALL_LIM': -1, 'OUT_V_LIM': 1, 'OUT_LINE_LIM': 1, 'OUT_PG_LIM': 1, 'OUT_QG_LIM': 1, 'RETURN_RAW_DER': 0, 'PDIPM_FEASTOL': 0, 'PDIPM_GRADTOL': 1e-06, 'PDIPM_COMPTOL': 1e-06, 'PDIPM_COSTTOL': 1e-06, 'PDIPM_MAX_IT': 150, 'SCPDIPM_RED_IT': 20}

可见OUT_GEN默认值为False,即默认不输出发电机相关结果(实际上发电机出力也包含在Bus里),若想打印发电机结果,则应修改控制向量为:
ppopt = ppoption(OUT_GEN=1)

也可以在原本控制向量基础上覆盖:
ppopt = ppoption(ppopt, OUT_GEN=1)

在导入数据,并设置好控制向量后,即可进行OPF求解,方法如下:
result = runopf(data, ppopt)

此时输出将包含发电机的相关结果,如下图:
电力系统分析|电力系统分析工具包pypower简易使用教程
文章图片

若想将输出保存至指定文件filename中,则只需:
result = runopf(data, ppopt, fname=filename)

若我们想在python中直接调用计算结果,例如想调用支路的潮流信息,则:
print(result['branch'].shape) print(result['branch'])

结果大小为(41,21),41表示有41条支路,每一列的含义也可以从官方文档获取:
电力系统分析|电力系统分析工具包pypower简易使用教程
文章图片

从文档可知,13-20列在潮流计算后才会生成。
三、总结 pypower使用简便,基本思路为:
  1. 导入系统数据(标准算例可直接导入,非标准算例需要自行修改为和标准算例相同的格式)
  2. 根据需求设定控制向量
  3. 运行OPF
  4. 保存需要的结果(P、Q、V、theta…),用于后续其他分析研究
四、延申阅读 【电力系统分析|电力系统分析工具包pypower简易使用教程】MATPOWER快速上手及应用实例,pypower思路和matpower基本相同,因此也可参考matpower的使用教程

    推荐阅读