当前位置: 首页 > news >正文

复现《基于扩展(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的电力系统动态状态估计。

http://www.jsqmd.com/news/89191/

相关文章:

  • 聊聊三相、五相电机的容错控制
  • 【超全】基于SSM的学生信息管理系统【包括源码+文档+调试】
  • 探索Python实现全覆盖路径规划之A*算法
  • 两次数字电路模拟程序迭代作业
  • Anchor Learning with Potential Cluster Constraints for Multi-view Clustering---基于潜在聚类约束的锚点学习用于多视图聚类
  • -希尔排序
  • 数字电路模拟程序的总结与分析
  • 【超全】基于SSM的校园快递一站式服务系统【包括源码+文档+调试】
  • 第二十七周周报
  • 嵌入式周记1
  • Superset,基于web的开源BI工具,github三万star
  • vue基于Spring Boot的军事论坛军迷交流平台_6c496w86
  • 40年匠心传承!维乐ANGEL GLIDE坐垫重塑骑行美学
  • Python安装库太慢?配置好这个速度飞起
  • vue基于Spring Boot的减肥健身养生人士饮食营养管理系统_5gn4225x
  • 基于LabVIEW的转子故障诊断系统:振动信号里的秘密探寻
  • 转子动力学:临界转速计算、Workbench建模、模态振型与坎贝尔图
  • 转差频率控制的矢量控制系统Matlab/simulink仿真探索
  • 交互噪声(Interaction Noise):推荐系统中被忽视却关键的问题
  • 高效的5个pandas函数,你都用过吗?
  • 信号去噪算法:VMD、优化VMD、WD及多模型混合的Matlab实践
  • 每天五分钟:leetcode动态规划-递归与递推_day2
  • 基于Java的安全生产考试座位签到智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 什么叫“结构表示”和“文本表示”不对齐?(Self)
  • 【大模型】-LangChain--RAG文档系统
  • jar(更新中)
  • 基于Java的安全生产视频监控智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 昇腾CANN从单算子到融合优化实战
  • 探索非线性电液伺服系统的模型自适应反步控制
  • 当AI遇上A股:一个让机器读懂财经新闻的量化框架