【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)

news2024/12/22 16:46:06

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 IEEE14节点

 ​

2.2 IEEE30节点

 ​

2.3 IEEE118节点

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

文献来源:

  

摘要:本文开发了一种基于广义最大似然法(称为GM-IEKF)的鲁棒迭代扩展卡尔曼滤波(EKF),用于估计电力系统在受到干扰时的状态动态。所提出的GM-IEKF动态状态估计器能够比传统的EKF和无迹卡尔曼滤波器(UKF)更快、更可靠地跟踪系统瞬变,这要归功于其批处理模式回归形式以及对创新和观测异常值的鲁棒性,即使在杠杆位置也是如此。创新异常值可能是由动态状态模型中的脉冲噪声引起的,而观测异常值可能是由于较大的偏差、网络攻击或PMU的通信链路暂时丢失引起的。通过最小化标准化残差的Huber凸成本函数,实现了高斯噪声下的良好鲁棒性和较高的统计效率。后者通过预测状态和创新向量的两个时间序列的鲁棒距离的函数进行加权,并通过投影统计量进行计算。使用总影响函数推导状态估计误差协方差矩阵,从而在下一个时间步长中产生鲁棒状态预测。在IEEE 39节点测试系统上进行的仿真结果表明,GM-IEKF在高斯和非高斯过程和观测噪声下具有良好的性能。

原文摘要:

Abstract:

This paper develops a robust iterated extended Kalman filter (EKF) based on the generalized maximum likelihood approach (termed GM-IEKF) for estimating power system state dynamics when subjected to disturbances. The proposed GM-IEKF dynamic state estimator is able to track system transients in a faster and more reliable way than the conventional EKF and the unscented Kalman filter (UKF) thanks to its batch-mode regression form and its robustness to innovation and observation outliers, even in position of leverage. Innovation outliers may be caused by impulsive noise in the dynamic state model while observation outliers may be due to large biases, cyber attacks, or temporary loss of communication links of PMUs. Good robustness and high statistical efficiency under Gaussian noise are achieved via the minimization of the Huber convex cost function of the standardized residuals. The latter is weighted via a function of robust distances of the two-time sequence of the predicted state and innovation vectors and calculated by means of the projection statistics. The state estimation error covariance matrix is derived using the total influence function, resulting in a robust state prediction in the next time step. Simulation results carried out on the IEEE 39-bus test system demonstrate the good performance of the GM-IEKF under Gaussian and non-Gaussian process and observation noise.

随着广域同步相量测量的广泛部署,人们提出了新技术 通过动态状态估计器 (DSE) 有效跟踪电力系统动态 [1]–[3]。通过使用估计的系统动态 状态,可以实现改进的实时控制方案,例如通过对 FACTS 设备和 广域电力系统稳定器,仅举几例,从而增强电力系统的稳定性。

为了跟踪受到较大干扰的电力系统动态,扩展卡尔曼滤波器(EKF)和无味滤波器 卡尔曼滤波器(UKF)最近被提出。例如,黄等人。 [3] 和方和韦贝 [4] 进行了调查 使用卡尔曼滤波技术采用PMU数据进行实时状态和参数估计的好处。 在他们的工作之后,Ghahremani和Kamwa[5]提出了一个基于EKF的修改。 DSE用于应对由于无刷励磁系统而无法计量现场电压的情况。这 后来随着去中心化DSE的开发,工作得到了扩展,同时放宽了对已知DSE的假设 机械扭矩 [6]。

为了规避 EKF 的一阶逼近误差,在 模型,迭代的 EKF (IEKF) [4] 和 UKF 被提议为 替代方法。具体来说,IEKF对系统非线性方程进行线性化迭代,以补偿 高阶项,而 UKF 通过确定性地提供 sigma 来利用无迹变换 点近似随机状态向量的均值和协方差矩阵,从而获得比 EKF [7], [8]。基于 UKF 的 DSE,使用 在 [9] 中提出了四阶生成器模型来估计 单机无限总线电源系统。同样,在[10]中为多机系统开发了集中式UKF,而分散式策略则没有 [11]中提倡要求传输本地信号,显着 提高计算效率。然而,[12] 已经证明,在存在观测异常值的情况下,EKF 或 UKF 的性能会大大降低,原因是 他们缺乏稳健性。为了缓解这个问题,[11] 中提倡基于规范化创新向量的测试来检测观测异常值,尽管该测试在 创新异常值。在[13]中,鲁哈尼和阿布尔开发了一个分布式 基于UKF的两阶段鲁棒DSE,使用最小绝对值(LAV)估计器,可以处理观测异常值 PMU 测量。然而,作者没有解决动态状态估计器对创新的脆弱性。 由状态预测模型中的近似值或脉冲系统过程噪声引起的异常值。

Gandhi和Mili[14]提出了一个用于线性动力学的鲁棒卡尔曼滤波器 型。在本文中,我们将这项工作扩展到了一般非线性动态状态估计问题,其中有几个 新功能。后者包括派生新的批处理模式回归形式,以增强数据冗余,即 基于投影统计的新型异常值检测方法,并应用于预测的两个时序和 创新向量,以及所提出的鲁棒广义最大似然的鲁棒状态协方差矩阵 迭代的 EKF (GM-IEKF) 方法。这些功能使我们的GM-IEKF能够更可靠、更可靠地跟踪电力系统动态 比传统的EKF更快,即使在存在观察和创新异常值或非高斯PMU噪声的情况下也是如此。 

📚2 运行结果

2.1 IEEE14节点

  

  

  

2.2 IEEE30节点

  

  

  

2.3 IEEE118节点

  

  

  

 部分代码:

%displayout(E,'a'); % Displaying output in tabular form
f = E(nbus+1:end);
e = E(1:nbus);
v=e+1i*f;
V=abs(v);
Del=round(angle(v)*180/pi*100)/100;
disp('-------- State Estimation ------------------');
disp('--------------------------');
disp('| Bus |    V   |  Angle  | ');
disp('| No  |   pu   |  Degree | ');
disp('--------------------------');
for m = 1:nbus
    fprintf('%4g', m); fprintf('  %8.4f', V(m)); fprintf('   %8.4f', Del(m)); fprintf('\n');
end
disp('---------------------------------------------');
%% calculate the estimated value
%Measurement Function, h
h1 = V(fbus (ei),1);  %voltage measurement
h2 = Del(fbus (fi),1);  %angle measurement
h3 = zeros(npi,1);  %real power injection
h4 = zeros(nqi,1);  %reactive power injection
h5 = zeros(npf,1);  %real power flow
h6 = zeros(nqf,1);  %reactive power flow
%Measurement function of power injection
for i = 1:npi
m = fbus(ppi(i));
for k = 1:nbus
% Real injection
h3(i)=h3(i)+(G(m,k)*(e(m)*e(k)+f(m)*f(k))+B(m,k)*(f(m)*e(k)-e(m)*f(k)));
% Reactive injection 
h4(i)=h4(i)+(G(m,k)*(f(m)*e(k)-e(m)*f(k))-B(m,k)*(e(m)*e(k)+f(m)*f(k)));
end
end
%Measurement function of power flow
for i = 1:npf
    m = fbus(pf(i));
    n = tbus(pf(i));
% Real injection
h5(i) =(e(m)^2 + f(m)^2)*g(m,n)-(g(m,n)*(e(m)*e(n)+f(m)*f(n))+b(m,n)*(f(m)*e(n)-e(m)*f(n)));
% Reactive injection 
h6(i) =-g(m,n)*(f(m)*e(n)-e(m)*f(n))+b(m,n)*(e(m)*e(n)+f(m)*f(n))-(e(m)^2 + f(m)^2)*(b(m,n)+bsh(m,n));
end
%% note that the angle measurement should be converted to radians for measurement comparison
h = [h1; h2; h3; h4; h5; h6];
%% % the estimated voltage and the true voltage magnitude in p.u.
figure(1) 
K=1:1:nbus;
[Vtrue Angletrue]=IEEE_true_value(nbus); % true voltage magnitude
plot(K,V,'r:*',K,Vtrue,'b--o','linewidth',1.5)
title('Volatge Magnitude Comparision Result ')
xlabel('Bus number')
xlim([1 nbus])
ylabel('Voltage in p.u')
legend('Estimated Value','True Value')
grid on
% % the estimated voltage angle and the true voltage angle in degree
figure(2)
j=1:1:nbus;
plot(j,Del,'r:*',j,Angletrue,'b--o','linewidth',1.5)
title('Voltage Angle Comparision Result')
xlabel('Bus number')
xlim([1 nbus])
ylabel('Voltage angle in degree')
legend('Estimated Value','True Value')
grid on
%% % the estimated and true measurement in degree
figure(3)
i=1:1:length(z);
estimated_measurement=plot(i,Z,'b*',i,h,'r--o');
set(estimated_measurement(1),'linewidth',1.5);
set(estimated_measurement(2),'linewidth',1.5);
title('Measurement Estimation Comparision Result')
xlabel('Measurement number')
xlim([1 length(z)])
ylabel('Measurement value')
legend('True Value','Estimated Value')
%% % the estimated and true measurement in degree
figure(3)
i=1:1:length(z);
estimated_measurement=plot(i,Z,'b*',i,h,'r--o');
set(estimated_measurement(1),'linewidth',1.5);
set(estimated_measurement(2),'linewidth',1.5);
title('Measurement Estimation Comparision Result')
xlabel('Measurement number')
xlim([1 length(z)])
ylabel('Measurement value')
legend('True Value','Estimated Value')
for i=1:nbus
voltage_error(i)=norm((Vtrue(i)-V(i)),inf)./abs(Vtrue(i));
angle_error(i)=norm((Angletrue(i)-Del(i)),inf)./abs(Angletrue(i));
end
Max_voltage_estimation_error=max(voltage_error)
Max_angle_estimation_error=max(angle_error)
Mean_voltage_estimation_error=mean(abs(Vtrue-V))
Mean_angle_estimation_error=mean(abs(Angletrue-Del))

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]J. Zhao, M. Netto and L. Mili, "A Robust Iterated Extended Kalman Filter for Power System Dynamic State Estimation," in IEEE Transactions on Power Systems, vol. 32, no. 4, pp. 3205-3216, July 2017, doi: 10.1109/TPWRS.2016.2628344.

🌈4 Matlab代码、数据、文章讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/570802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试技术相结合的测试方法

自动化测试技术相结合的测试方法 随着软件开发的不断进步和变革,测试也越来越重要。为了提高测试效率和质量,自动化测试技术相结合的测试方法得到了广泛应用。 自动化测试是一种利用工具和脚本自动执行测试任务的测试方法。通过自动化测试,可…

【产品设计】工具类产品,带一些社交元素

工具类产品要加入社交元素,关键在于找到工具与社交的结合点。 一、工具类的产品,可以这样加入社交元素 1、分开来看:工具类产品和社交类产品 工具类产品,顾名思义,以工具属性为主,核心突出的是一个“用”…

UE5.1.1C++从0开始(11.AI与行为树)

怕有些朋友不知道教程指的是哪一个,我在这里把教程的网址贴出来:https://www.bilibili.com/video/BV1nU4y1X7iQ?p1 这一章开始进入电脑玩家逻辑的编写,因为是第一次接触,所以老师也没有讲什么很难的问题,这里还是老样…

React学习笔记七-事件处理

此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享。此为第七篇,主要介绍react中的事件处理。 事件处理 (1)通过onXxx属性指定事件处理函数(注意大小写) 1.react使用的是自定义(合…

01_JVM快速入门

从面试开始: 请谈谈你对JVM 的理解?java8 的虚拟机有什么更新? 什么是OOM ?什么是StackOverflowError?有哪些方法分析? JVM 的常用参数调优你知道哪些? 内存快照抓取和MAT分析DUMP文件知道吗…

2023年第十五届电工杯选题浅析

本次电工杯作为2023年上半年度数学建模赛事的收官之战,报名队伍最后截止统计已经达到12000支队伍,同时免费的报名费也让这个收官之战,被很多建模小白当作第一次练手赛。为了帮助大家选题,下面为大家带来AB两题的思路浅析&#xff…

凌恩生物文献分享 | 癌症领域新曙光——肿瘤内微生物

上一期我们给大家介绍了肿瘤胞内菌在癌症转移中发挥的作用。2022年12月,蔡尚老师团队在Cell子刊-Trends in Cell Biology上又发表了一篇总结肿瘤内菌群在癌症转移中最新发现的综述,其中讨论了癌症治疗遇到的新挑战。 研究亮点 1)癌症转移是…

Leetcode 1679. K 和数对的最大数目 双指针法

https://leetcode.cn/problems/max-number-of-k-sum-pairs/ 给你一个整数数组 nums 和一个整数 k 。 每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。 返回你可以对数组执行的最大操作数。 示例 1: 输入&#xff1…

【JS】1693- 重学 JavaScript API - Web Storage API

❝ 前期回顾: 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API ❞ 在 Web 开发中经常需要在客户端保存和获取数据,Web Storage API 提供了一种在浏览器中存储…

【sop】含储能及sop的多时段配网优化模型

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了含sop的配电网优化模型,链接含sop的配电网优化,很多同学在咨询如何增加储能约束,并进行多时段的优化,本次拓展该部分功能,在原代码的基础上增加储能模…

Paragon NTFS2023最新mac免费实用工具磁盘工具

mac虽然系统稳定,但在使用过程中也有一些瑕疵,如当mac连接到ntfs格式移动磁盘时,可能会出现移动磁盘无法在mac被正常读写的状况。遇到移动磁盘无法正常读写的状况,我们可以在mac中使用磁盘工具,以使mac获得对ntfs格式移…

Docker实战1-运行前端Vue项目

本次运行了两个项目,一个是开源的镜像,一个是自己的前端项目镜像 1 在docker中运行 keycloak docker run -p 8080:8080 -e KEYCLOAK_ADMINadmin -e KEYCLOAK_ADMIN_PASSWORDadmin quay.io/keycloak/keycloak:21.1.1 start-dev 这个最简单了&#xff0c…

版图设计IC617 virtuoso启动以及smic18mmrf加载库

一. 启动virtuoso 1.1 创建一个目录用于库管理 mkdir pro3 1.2 拷贝.bashrc到工程目录下,.bashrc存在~目录下,是一个隐藏文件,需要用ls -la查看 1.3 执行.bashrc文件 1.4 启动 virtuoso & 1.5 检查库中是否包含系统基本库,如…

【JavaSE】Java基础语法(十三):Java 中的集合(十分全面)

文章目录 List, Set, Queue, Map 四者的区别?集合框架底层数据结构总结ArrayList 和 Vector 的区别ArrayList 与 LinkedList 区别补充内容:RandomAccess 接⼝ArrayList 的扩容机制comparable 和 Comparator 的区别比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同…

Java jdbcTemplate 获取数据表结构

表结构如图 代码 AutowiredJdbcTemplate jdbcTemplate;Testpublic void getColumnNames() throws Exception {String sql "select * from tb_test where 12 ";SqlRowSet sqlRowSet jdbcTemplate.queryForRowSet(sql);SqlRowSetMetaData sqlRsmd sqlRowSet.getMeta…

高手速成 | 过滤器、监听器的创建与配置

本节讲解过滤器、监听器的创建以及监听事件配置示例。 01、过滤器的创建与配置 【例1】创建过滤器及配置过滤规则。 (1) 在Eclipse中新建一个Web项目,取名为Chapt_09。在src目录下,新建一个名为com.test.filter的包。选中该包并按CtrlN组合键&#xf…

Linux之软件包管理

软件包管理 RPM RPM 概述 RPM(RedHat Package Manager), RedHat软件包管理工具, 类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具, 它虽然是RedHat的标志, 但理念是通用…

Python自动化对每个文件夹及其子文件夹的Excel表加个表头(Excel不同名且有xls文件)...

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 惟将旧物表深情,钿合金钗寄将去。 大家好,我是皮皮。 一、前言 上一篇文章,我们抛出了一个问题,这篇文章…

【iOS锁_@synchronized源码浅析】

文章目录 前言synchronized介绍加锁实例synchronized实现objc_sync_enter 和 objc_sync_exit objc_sync_enterobj存在SyncList的结构SyncList和SyncData的关系id2data函数的实现1. 使用快速缓存2. 获取该线程下的SyncCache3. 全局哈希表查找4. 生成新数据并写入缓存 总结 前言 …

35从零开始学Java之析构方法又是咋回事?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中,壹哥给大家详细地介绍了构造方法的使用、特点等内容。我们知道&#xff0…