news 2026/6/25 17:25:57

复现《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
复现《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计

【复现】:《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计》 该程序对应文章《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》,电力系统状态的准确估计对于提高电力系统的可靠性、弹性、安全性和稳定性具有重要意义,虽然近年来测量设备和传输技术的发展大大降低了测量和传输误差,但这些测量仍然不能完全没有测量噪声。 因此,需要对噪声测量值进行过滤,从而获得准确的电力系统运行动态。 本程序采用两种方法,分别是扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF),对电力系统进行动态状态估计,以39节点系统为算例验证了方法的有效性。 注:该程序需要安装matpower插件,否则运行会报错。

在电力系统领域,准确估计系统状态对提升系统的可靠性、弹性、安全性与稳定性至关重要。尽管测量设备和传输技术不断进步,测量噪声依旧难以完全消除,所以对噪声测量值进行过滤以获取准确的电力系统运行动态就成了关键任务。今天就来聊聊如何复现基于扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计。

这个程序对应的是《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》一文。它采用EKF和UKF两种方法对电力系统进行动态状态估计,并以39节点系统为算例验证了方法的有效性。不过要注意,该程序需要安装matpower插件,不然运行会报错哦。

扩展卡尔曼滤波(EKF)

EKF是一种常用的非线性滤波方法,它通过对非线性系统进行线性化近似来实现滤波。下面我们来看一段简化的EKF代码示例(这里以Python为例,实际在电力系统应用中可能会结合更多专业库):

import numpy as np def ekf_predict(x, P, A, Q): # 预测步骤 x = np.dot(A, x) P = np.dot(np.dot(A, P), A.T) + Q return x, P def ekf_update(x, P, z, H, R): # 更新步骤 y = z - np.dot(H, x) S = np.dot(np.dot(H, P), H.T) + R K = np.dot(np.dot(P, H.T), np.linalg.inv(S)) x = x + np.dot(K, y) P = np.dot((np.eye(len(x)) - np.dot(K, H)), P) return x, P

EKF代码分析

  1. 预测步骤(ekf_predict函数)
    -x是状态向量,P是协方差矩阵,A是状态转移矩阵,Q是过程噪声协方差。
    -x = np.dot(A, x)这一步是根据状态转移矩阵A来预测新的状态向量x
    -P = np.dot(np.dot(A, P), A.T) + Q则是更新协方差矩阵P,考虑了状态转移和过程噪声的影响。
  1. 更新步骤(ekf_update函数)
    -z是测量值,H是观测矩阵,R是测量噪声协方差。
    -y = z - np.dot(H, x)计算测量残差y,即测量值与预测值的差值。
    -S = np.dot(np.dot(H, P), H.T) + R计算测量预测协方差S
    -K = np.dot(np.dot(P, H.T), np.linalg.inv(S))计算卡尔曼增益K
    -x = x + np.dot(K, y)P = np.dot((np.eye(len(x)) - np.dot(K, H)), P)分别更新状态向量x和协方差矩阵P,使估计值更接近真实值。

无迹卡尔曼滤波(UKF)

UKF则是通过采样策略来处理非线性问题,相较于EKF,它对非线性系统的处理更为直接和准确。以下是UKF的简化代码示例:

def ukf_predict(x, P, Q, A, Wm, Wc, alpha, beta, kappa): n = len(x) L = n + kappa X = np.zeros((n, 2 * L)) X[:, 0] = x sqrt_P = np.linalg.cholesky(P * (alpha ** 2) * (n + kappa)) for i in range(n): X[:, i + 1] = x + sqrt_P[:, i] X[:, i + 1 + n] = x - sqrt_P[:, i] x_hat = np.zeros(n) P_hat = np.zeros((n, n)) for i in range(2 * L): x_hat = x_hat + Wm[i] * np.dot(A, X[:, i]) for i in range(2 * L): x_diff = np.dot(A, X[:, i]) - x_hat P_hat = P_hat + Wc[i] * np.outer(x_diff, x_diff) P_hat = P_hat + Q return x_hat, P_hat def ukf_update(x, P, z, H, R, Wm, Wc, X): n = len(x) L = len(X[0]) z_hat = np.zeros(len(z)) for i in range(L): z_hat = z_hat + Wm[i] * np.dot(H, X[:, i]) Pzz = np.zeros((len(z), len(z))) Pxz = np.zeros((n, len(z))) for i in range(L): z_diff = np.dot(H, X[:, i]) - z_hat x_diff = X[:, i] - x Pzz = Pzz + Wc[i] * np.outer(z_diff, z_diff) Pxz = Pxz + Wc[i] * np.outer(x_diff, z_diff) Pzz = Pzz + R K = np.dot(Pxz, np.linalg.inv(Pzz)) x = x + np.dot(K, (z - z_hat)) P = P - np.dot(np.dot(K, Pzz), K.T) return x, P

UKF代码分析

  1. 预测步骤(ukfpredict函数)
    - 首先根据状态向量x和协方差矩阵P生成Sigma点集X
    - 通过加权求和计算预测状态x
    hat和预测协方差P_hat,同时考虑了过程噪声Q
    -WmWc分别是均值和协方差的权重,alphabetakappa是UKF的参数,用于调整Sigma点的分布。
  1. 更新步骤(ukfupdate函数)
    - 计算预测测量值z
    hat以及测量预测协方差Pzz和状态与测量的互协方差Pxz
    - 根据这些计算卡尔曼增益K,进而更新状态向量x和协方差矩阵P

在实际的电力系统动态状态估计中,将这些滤波方法应用到39节点系统模型,并结合matpower插件提供的电力系统数据和分析工具,就能验证方法的有效性。希望通过以上的介绍和代码分析,能帮助大家更好地理解和复现基于EKF和UKF的电力系统动态状态估计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 19:21:29

vue基于Spring Boot的教职工教师教学科研档案管理系统_79v06k5e

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/6/24 20:59:42

交互噪声(Interaction Noise):推荐系统中被忽视却关键的问题

在推荐系统中,模型学习的核心依据是用户–物品交互数据。然而,这些交互并不总能真实反映用户的内在偏好,其中夹杂的大量干扰信号被称为 交互噪声(Interaction Noise)。如果不加处理,交互噪声会显著降低推荐…

作者头像 李华
网站建设 2026/6/25 19:13:35

无刷直流电机双闭环仿真:稳定运行与制动工况下的调制探索

无刷直流电机稳定运行和制动工况双闭环仿真,PWM-ON-PWM,PWM-OFF-PWM调制方式。 图一为拓扑图,图二为调制方式,图三为转速和电磁转矩波形,图四和图五为三相电流和电磁转矩放大和整体图,换相区间电磁转矩幅值较小&#x…

作者头像 李华
网站建设 2026/6/25 14:54:49

聊聊三相、五相电机的容错控制

三相、五相电机容错控制 三相电机断开一相容错控制; 五相电机断开一相、相邻两相容错控制在电机控制领域,容错控制可是个相当重要的课题。想象一下,电机在运行过程中突然某一相出了问题,如果没有有效的容错机制,那整个…

作者头像 李华
网站建设 2026/6/25 14:57:16

Superset,基于web的开源BI工具,github三万star

BI工具是数据分析的得力武器,目前市场上有很多BI软件,众所周知的有Tableau、PowerBI、Qlikview、帆软等,其中大部分是收费软件或者部分功能收费。这些工具一通百通,用好一个就够了,重要的是分析思维。 我一直用的Tabl…

作者头像 李华