基于连续潮流法的电力系统电压稳定裕度计算程序 README
项目简介
本项目是一个基于MATLAB开发的电力系统静态电压稳定性评估工具。它实现了连续潮流法(Continuation Power Flow, CPF),旨在解决常规潮流算法在电压崩溃点(P-V曲线鼻尖点)附近因雅可比矩阵奇异而无法收敛的难题。
通过引入负载增长因子(Lambda)和预测-校正同伦算法,本程序能够自动追踪系统从基态运行点到电压崩溃点的完整轨迹,识别最大负荷点(Maximum Loading Point),并计算系统的电压稳定裕度。
功能特性
基于 main.m 的实际代码实现,本项目包含以下核心功能:
- 内建标准测试系统:代码内部直接集成了IEEE 14节点的标准总线(Bus)和支路(Branch)数据,无需外部文件读取即可直接运行仿真。
- 自动化参数初始化:自动提取系统拓扑参数,识别平衡节点(Slack)、PV节点和PQ节点,并建立节点导纳矩阵。
- 负荷增长建模:实现了基于比例增长的参数化模型。程序能自动构建增长方向向量(K向量),设定仅PQ节点的有功和无功负荷随 Lambda 增长,而PV节点和平衡节点保持基准。
- 状态变量管理:实现了复杂的变量映射逻辑,将物理量(电压幅值 V、相角 Theta)转化为牛顿-拉夫逊迭代所需的数学状态向量,精确区分PV节点(仅解相角)和PQ节点(解相角和幅值)。
- 连续潮流核心引擎:
*
基态潮流计算:在 Lambda=0 处进行初始潮流计算,确保从合法的物理工作点开始追踪。
*
CPF迭代循环:内置了预测-校正的主循环结构,支持设定最大迭代次数、步长(Sigma)和收敛精度。
*
雅可比矩阵构建:在每一步迭代中动态更新雅可比矩阵,并扩展计算负荷对增长因子的灵敏度向量。
- 关键节点监测:程序默认选定第14号节点(IEEE 14系统中的典型弱节点)作为观察对象,记录其电压随负荷增长的变化轨迹。
系统要求
- MATLAB R2016a 或更高版本
- 无需额外的工具箱(Toolbox),基于原生MATLAB矩阵运算实现
代码逻辑与实现细节分析
main.m 文件是程序的主入口,其内部逻辑流程如下:
1. 环境初始化与数据定义
程序首先清除工作区环境,然后通过硬编码矩阵
bus_data 和
branch_data 定义了电力系统的网络拓扑。
- Bus数据:包含节点类型、基准电压、初始负荷(Pd, Qd)等信息。
- Branch数据:包含线路电阻、电抗、电纳及变压器变比等参数。
2. 系统参数提取与增长向量构建
程序分析节点类型列,生成各类节点的索引(
idx_slack,
idx_pv,
idx_pq)。
- K向量(增长方向):初始化
K_P 和 K_Q 向量。代码逻辑指定仅 PQ 节点的负荷参与增长,且增长方向与初始负荷成正比(即恒定功率因数增长)。
3. 网络矩阵构建
调用
makeYbus 函数(子程序),利用节点和支路数据构建系统复数节点导纳矩阵
Ybus,这是后续所有潮流计算的数学基础。
4. 状态变量初始化
- 变量初值:从 Bus 数据中提取电压幅值 $V$ 和相角 $Theta$ 的初值,并将负荷增长因子 $Lambda$ 初始化为 0。
- 未知量索引映射:为了构建雅可比矩阵,代码精确定义了未知量索引。
*
unknown_theta_idx:包含所有PV和PQ节点(排除平衡节点)。
*
unknown_v_idx:仅包含PQ节点(排除平衡节点和PV节点)。
- 状态向量组装:将所有未知相角和电压幅值拼装成单一列向量 $x$,用于后续的非线性方程组求解。
5. 基态潮流计算
在进入CPF循环前,程序调用
run_power_flow 求解 $Lambda=0$ 时的常规潮流。包含收敛性检查,如果基态不收敛则直接终止程序。同时初始化用于记录 P-V 曲线的数据结构
lambda_history 和
v_history。
6. 连续潮流(CPF)主循环
程序进入
while 或
for 循环(代码中设定最大步数
max_iter),执行连续潮流的核心步骤:
- 雅可比矩阵计算:在当前状态点调用
makeJacobian 计算常规潮流雅可比矩阵 $J$。 - 灵敏度向量计算:计算功率方程失配量对 $Lambda$ 的偏导数 $dF/dlambda$(即 $-K_P$ 和 $-K_Q$)。
- 切线预测准备:代码构建了切线预测所需的数学结构,准备求解扩展的线性方程组(Augmented Jacobian),目的是获取下一步的切线方向向量(Tangent Vector)。
使用方法
- 将
main.m 及相关的子函数文件(如 makeYbus.m, makeJacobian.m, run_power_flow.m 等)放置在同一 MATLAB 工作目录下。 - 直接运行
main 函数。 - 程序将在命令行窗口输出每一步的计算状态(Step, Lambda, 电压值, 收敛状态)。
- 程序运行结束后,可通过工作区中的
lambda_history 和 v_history 变量绘制 P-V 曲线,或查看最终的电压稳定裕度。
注意事项
- 本程序不仅是一个计算工具,也是学习连续潮流法算法流程的代码示例。
main.m 中硬编码了 IEEE 14 节点数据,如需测试 IEEE 30 或其他系统,用户需替换 bus_data 和 branch_data 矩阵的内容,或修改代码以适配外部数据文件读取。- 程序中的切线预测器和校正器依赖于雅可比矩阵的正确构建,请确保并没有修改索引映射逻辑。