基于EKF和UKF的电力系统动态状态估计方法验证与实现【有参考文献】(39节点系统为例)
【有参考文献】基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计 该程序对应文章《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》电力系统状态的准确估计对于提高电力系统的可靠性、弹性、安全性和稳定性具有重要意义虽然近年来测量设备和传输技术的发展大大降低了测量和传输误差但这些测量仍然不能完全没有测量噪声。 因此需要对噪声测量值进行过滤从而获得准确的电力系统运行动态。 本程序采用两种方法分别是扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)对电力系统进行动态状态估计以39节点系统为算例验证了方法的有效性。 注该程序需要安装matpower否则运行会报错。电力系统这玩意儿就像个巨型乐高各个节点和线路的状态参数就是拼装说明书。但现实总喜欢捣乱——传感器传回来的数据永远带着点静电干扰这时候就得搬出信号处理的看家法宝卡尔曼滤波。今天咱们拿电力系统里的EKF和UKF两种算法开刀看看怎么在噪声里淘出真金。先上点硬菜整个系统的状态方程长这样function [x_k, F] state_function(x, param) % 39节点系统状态方程 bus_num param.Bus.Number; omega x(bus_num1:end); delta x(1:bus_num); % 经典二阶摇摆方程 H param.gen.H; D param.gen.D; Pm param.gen.Pm; Pe compute_electrical_power(delta, param); ddt_delta omega; ddt_omega (Pm - Pe - D.*omega)./(2*H); F [ddt_delta; ddt_omega]; x_k x param.dt * F; % 欧拉法离散化 end这个状态方程核心是发电机组的摇摆方程注意看第12行的欧拉离散化处理。很多新手容易在这里翻车直接拿连续方程往卡尔曼滤波里塞结果就是各种数值爆炸。咱们用步长dt把微分方程掰成差分形式相当于给算法上了个安全阀。观测方程就更接地气了function z measurement_function(x, param) % 量测函数电压幅值相角 [V, theta] solve_power_flow(x, param); z [theta; V]; end这里直接调用了matpower的潮流计算相当于借了把专业扳手。注意量测值选取的是电压幅值和相角这两个最容易被PMU捕捉的参数实操中要是加上线路功率量测代码结构也差不多就是得多处理几个非线性项。【有参考文献】基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计 该程序对应文章《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》电力系统状态的准确估计对于提高电力系统的可靠性、弹性、安全性和稳定性具有重要意义虽然近年来测量设备和传输技术的发展大大降低了测量和传输误差但这些测量仍然不能完全没有测量噪声。 因此需要对噪声测量值进行过滤从而获得准确的电力系统运行动态。 本程序采用两种方法分别是扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)对电力系统进行动态状态估计以39节点系统为算例验证了方法的有效性。 注该程序需要安装matpower否则运行会报错。EKF的实现有个小机关——雅可比矩阵计算。看这段H_jac jacobianest((x) measurement_function(x, param), x_est_prev);用到了Jacobianest这个自动微分工具比手动推导雅可比省事多了。不过要注意这个函数属于第三方库要是自己手写的话得准备好咖啡和草稿纸毕竟39节点系统的雅可比矩阵可不是闹着玩的。UKF的sigma点生成是重头戏[sigma_points, weights] scaled_sigma_points(x_est_prev, P_est_prev, alpha, beta, kappa);参数alpha控制着sigma点的扩散范围beta负责调节高阶项。在电力系统这种强非线性场景下alpha通常取0.001这种小值相当于让sigma点紧贴着均值转悠避免步子太大扯到电网的稳定性。最后看效果对比部分figure(Position, [100, 100, 800, 600]) subplot(2,1,1) plot(time_span, true_states(:,1), k--, LineWidth, 2) hold on plot(time_span, ekf_estimates(:,1), b:, ukf_estimates(:,1), r-)这个绘图代码暗藏玄机虚线表示真实状态点划线是EKF估计实线是UKF。注意Y轴刻度范围设置得比默认值小这样能突出算法间的细微差别。实际跑程序时会发现在负荷突变时UKF的曲线更贴近真实值就像老司机过弯更稳当。搞电力系统估计就像在暴风雨里放风筝EKF是把伞骨硬掰成直线UKF则是给伞面加了弹性结构。两种方法各有所长关键得看现场工况——要是系统运行点变化不大EKF这匹老马照样能跑但遇到新能源大规模接入这种剧烈波动还是UKF这种新式悬架更扛得住颠簸。代码里那些矩阵操作看着枯燥实则是给电网稳定运行上的双重保险。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417140.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!