电力系统分析工具包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 = case30()
若要看发电机数据,可打印:
print(data['gen'].shape)
print(data['gen'])
结果大小为(6,21),6表示有6台发电机,每一列数据的含义可参考官方文档,如下:
或者也可以参考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)
此时输出将包含发电机的相关结果,如下图:
若想将输出保存至指定文件filename中,则只需:
result = runopf(data, ppopt, fname=filename)
若我们想在python中直接调用计算结果,例如想调用支路的潮流信息,则:
print(result['branch'].shape)
print(result['branch'])
结果大小为(41,21),41表示有41条支路,每一列的含义也可以从官方文档获取:
从文档可知,13-20列在潮流计算后才会生成。
pypower使用简便,基本思路为:
MATPOWER快速上手及应用实例,pypower思路和matpower基本相同,因此也可参考matpower的使用教程