资源简介

电力系统状态估计(电力网系统辨识)-最小二乘+不良数据辨识-matlab 最小二乘是对电力系统进行状态估计的最基本方法,而考虑到电力网数据可能存在不良数据,需要使用相关方法进行不良数据辨识;检测到不良数据点位置后,系统还会剔除不良数据再次进行辨识 两份导入数据中,iSE30Bus1为有误差数据,iSE30Bus2为无误差数据 输出结果会导入至oStateEstimation中

资源截图

代码片段和文件信息

%% Power Grid State Estimation (Test 1)
clc;    % Clear windows
format

%% 使用变量说明
% GATE      对不良数据检测与辨识的调用开关
% JM        min (J) 残差平方和
% uij,k  用于循环的变量
% RE        residual error(残差矢量)
% VA        variance(方差)
% FN        标准化残差
% BDT       Bad Data‘s Type (坏数据类型)
% BDP       Bad Data‘s Position (坏数据位置)
% F         状态估计方程计算出的值

%% Read power flow data from document “iSE30Bus.txt“
fp=fopen(‘iSE30Bus1.txt‘‘r‘);   % 1号为有量测误差数据,2号为无误差数据
fscanf(fp‘%s‘1);               % read one sting
node=fscanf(fp‘%d‘1);          % read number of nodes
nzl=fscanf(fp‘%d‘1);           % read number of branches
kPQ=fscanf(fp‘%d‘1);           % read number of known PQ
kBus=fscanf(fp‘%d‘1);          % read number of known Bus
kV=fscanf(fp‘%d‘1);            % read number of known Vamp

fscanf(fp‘%s‘1);               % read a string
ReV=fscanf(fp‘%f‘1);           % read number of Real Vamp
ImV=fscanf(fp‘%f‘1);           % read number of Imag Vamp

fscanf(fp‘%s‘1);               % read a string
zl=zeros(nzl4);                 % 确定节点导纳矩阵的规格,并保存i  j  R  X的数据
for i=1:nzl
    for j=1:4
      zl(ij)=fscanf(fp‘%f‘1);
    end                          % read branch parameters
end

fscanf(fp‘%s‘1);               % read one string
N=zeros(kPQ3);                  % save:确定所有节点的功率值,保存i P Q
for i=1:kPQ   
    for j=1:3
        N(ij)=fscanf(fp‘%f‘1);   % read generator parameters
    end
end

PQ=zeros(2*kPQ1);               % 将节点功率转换为列向量的形式
for i=1:kPQ
    PQ(2*i-1)=N(i2);
    PQ(2*i)=N(i3);
end

fscanf(fp‘%s‘1);               % read one string
Bus=zeros(kBus4);               % save known Bus: i  j  Pij  Qij
for i=1:kBus
    for j=1:4
      Bus(ij)=fscanf(fp‘%f‘1);
    end                         
end

fscanf(fp‘%s‘1);               % read one string
Vam=zeros(kV2);                 % save known Vamp: i Vamp
for i=1:kV
    for j=1:2
      Vam(ij)=fscanf(fp‘%f‘1);
    end                         
end
fclose(fp);

%% 形成节点导纳矩阵 G+jB
G=zeros(nodenode);
B=zeros(nodenode);
for k=1:nzl
    i=zl(k1);
    j=zl(k2);
    h=zl(k3)*zl(k3)+zl(k4)*zl(k4);
    f=zl(k3)/h;               % branch conductance
    g=-zl(k4)/h;              % branch susceptance
    G(ii)=G(ii)+f;
    G(jj)=G(jj)+f;
    B(ii)=B(ii)+g;
    B(jj)=B(jj)+g;
    G(ij)=G(ij)-f;
    G(ji)=G(ji)-f;
    B(ij)=B(ij)-g;
    B(ji)=B(ji)-g;
end
% G                               % show
% B                               % show


%% State Estimation
GATE=0;
zcs=0;
 for u=1:2*kPQ+2*kBus+kV-2*node+2
   
     if GATE==1
         break;
         JM=RE‘*RE;                         % 不良数据检测与辨识
         JM
         if JM<0.00003                      % 不良数据检测
             break;
         else
             VA=JM/(2*kPQ+2*kBus+kV-1);     % VA:残差的方差
             VA1=1/sqrt(VA);
             FN=RE*VA1;                     % FN:经过标准化处理的残差向量
             FN1=zeros(2*kPQ+2*kBus+kV2)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15428  2019-02-02 18:39  SEF.m

     文件       3121  2018-05-05 23:19  iSE30Bus1.txt

     文件       3101  2018-05-01 17:54  iSE30Bus2.txt

----------- ---------  ---------- -----  ----

                21650                    3


评论

共有 条评论