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

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

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

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

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

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

目录

💥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代码、数据、文章讲解

相关文章:

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

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

整理6个超好用的在线编辑器!

随着 Web 开发对图像可扩展性、响应性、交互性和可编程性的需求增加,SVG 图形成为最适合 Web 开发的图像格式之一。它因文件小、可压缩性强并且无论如何放大或缩小,图像都不会失真而受到欢迎。然而,为了编辑 SVG 图像,需要使用 SV…...

ArcGIS10.8下载及安装教程(附安装步骤)

谷歌云: https://drive.google.com/drive/folders/10igu7ZSMaR0v0WD7-2W-7ADJGMUFc2ze?uspsharing ArcGIS10.8 百度网盘: https://pan.baidu.com/s/1s5bL3QsCP5sgcftCPxc88w 提取码:kw4j 阿里云: https://www.aliyundriv…...

AI智能照片编辑:AI Photo for Mac

AI Photo是一款Mac平台上的智能照片编辑软件,它基于人工智能技术,可以帮助用户快速、轻松地对照片进行编辑和美化。AI Photo提供了多种智能修复和美化功能,包括自动调整色彩、对比度、亮度、清晰度等,使得照片的质量得到有效提升。…...

Tuxera for Mac2023中文版读写硬盘U盘工具

在日常生活中,我们使用Mac时经常会遇到外部设备不能正常使用的情况,如:U盘、硬盘、软盘等等一系列存储设备,而这些设备的格式大多为NTFS,Mac系统对NTFS格式分区存在一定的兼容性问题,不能正常读写。 那么什…...

项目遇到的实际需求: java从信任所有证书到对server证书进行校验

最近项目上开发了一个rest api,放在了一台linux服务器上,并且启用了https连接;在另一台服务器上写了一个功能需要去调用linux机器上的api。 项目里面自己封装了一个HttpsClient的类,用来发送https请求,并且在里面重写了…...

使用JS来实现轮播图的效果

最好今天分享一个使用JS制作的轮播图效果 个人名片: 😊作者简介:一名大一在校生,web前端开发专业 🤡 个人主页:几何小超 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,…...

Springboot +spring security,自定义认证和授权异常处理器

一.简介 在Spring Security中异常分为两种: AuthenticationException 认证异常AccessDeniedException 权限异常 我们先给大家演示下如何自定义异常处理器,然后再结合源码帮助大家进行分析 二.创建项目 如何创建一个SpringSecurity项目,前…...

Dockerfile(1) - FROM 指令详解

FROM 指明当前的镜像基于哪个镜像构建dockerfile 必须以 FROM 开头&#xff0c;除了 ARG 命令可以在 FROM 前面 FROM [--platform<platform>] <image> [AS <name>]FROM [--platform<platform>] <image>[:<tag>] [AS <name>]FROM […...

【嵌入式Linux】源码菜单配置 | 编译 | 菜单配置的实现 | 源码编译的实现

源码配置编译 源码配置编译,要把中间各个环节都理清楚 厂商把自己增加的东西专门放了个文件独立&#xff0c;方便开发者发现变化 1.菜单配置 移植的第一步&#xff0c;就是选配&#xff0c;通过make menuconfig图形化界面选配 //载入配置 $ make ARCHarm64 tegra_defconfi…...

python自动化爬虫实战

python自动化爬虫实战 偶然的一次机会再次用到爬虫&#xff0c;借此机会记录一下爬虫的学习经历&#xff0c;方便后续复用。 需求&#xff1a;爬取网站数据并存入的csv文件中&#xff0c;总体分为两步 爬取网站数据存到到csv文件中 1、配置爬虫环境 1.1、下载自动化测试驱动 …...

LVGL-最新版本及其版本定义标准

lvgl的最新版本是9.0.0&#xff0c;处于开发分支中。 稳定版本是8.3.0. 建议一般开发使用稳定版8.3.0. .\lvgl.h定义了当前版本 /*************************** CURRENT VERSION OF LVGL ***************************/ #define LVGL_VERSION_MAJOR 8 #define LVGL_VERSION_MINO…...

ORB_SLAM2算法中如何计算右目和左目两个特征点的是否匹配?

文章目录 if(kpR.octave<levelL-1 || kpR.octave>levelL+1)const int &levelL = kpL.octave;if(uR>=minU && uR<=maxU)const cv::Mat &dR = mDescriptorsRight.row(iR);const int dist = ORBmatcher::DescriptorDistance(dL,dR);筛选最佳匹配特征点…...

Android 12.0系统Settings主页去掉搜索框

1.概述 在12.0定制化开发中,在系统原生设置中主页的搜索框是要求去掉的,不需要搜索功能,所以首选看下布局文件 看下搜索框是哪个布局,然后隐藏到布局,达到实现功能的目的 2.系统Settings主页去掉搜索框的主要代码 packages/apps/Settings/src/com/android/settings/home…...

电脑数据丢失如何恢复

随着电脑使用的日益普及&#xff0c;数据丢失成为了很多用户不得不面对的问题。数据丢失的原因有很多&#xff0c;例如误删除文件、磁盘格式化、电脑病毒等等。一旦发生数据丢失的情况&#xff0c;我们就需要利用专业的数据恢复工具来尽快找回被丢失的数据。下面我们就来详细介…...

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

Python 图形界面框架 PyQt5 使用指南

Python 图形界面框架 PyQt5 使用指南 使用Python开发图形界面的软件其实并不多&#xff0c;相对于GUI界面&#xff0c;可能Web方式的应用更受人欢迎。但对于像我一样对其他编程语言比如C#或WPF并不熟悉的人来说&#xff0c;未必不是一个好的工具。 常见GUI框架 PyQt5[1]&#…...

代码随想录算法训练营第四十二天 | 二维dp数组01背包, 力扣 416. 分割等和子集

背包 解析 1.确定dp数组以及下标的含义 对于背包问题&#xff0c;有一种写法&#xff0c; 是使用二维数组&#xff0c;即dp[i][j] 表示从下标为[0-i]的物品里任意取&#xff0c;放进容量为j的背包&#xff0c;价值总和最大是多少。 2.确定递推公式 有两个方向推出来dp[i][…...

【1110. 删点成林】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给出二叉树的根节点 root&#xff0c;树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现&#xff0c;我们就把该节点从树上删去&#xff0c;最后得到一个森林&#xff08;一些不相交的…...

第三章 JVM内存概述

附录&#xff1a;精选面试题 Q&#xff1a;为什么虚拟机必须保证一个类的Clinit( )方法在多线程的情况下被同步加锁 &#xff1f; A: 因为虚拟机在加载完一个类之后直接把这个类放到本地内存的方法区&#xff08;也叫原空间&#xff09;中了&#xff0c;当其他程序再来调这个类…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...