给投节点很大的权重,就是想作为真实值用。头节点没有误差。
Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
parent
1714aed115
commit
fba2a4b03c
20
OPF.m
20
OPF.m
|
|
@ -3,10 +3,10 @@ function [JMeasurement,AME_Volt,AME_VAngle,AME_PD,AME_QD,AME_mVolt,AME_mPD,AME_m
|
||||||
tic
|
tic
|
||||||
clc
|
clc
|
||||||
clear
|
clear
|
||||||
lineZ=readLineZ('feeder13\lineParameter.txt');
|
lineZ=readLineZ('./../DistributionNetwork-Power2Current/modified-feeder69\lineParameter.txt');
|
||||||
[ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
|
[ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
|
||||||
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY ...
|
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY ...
|
||||||
cap]=dataRead(lineZ,'feeder13\data1.txt');
|
cap]=dataRead(lineZ,'./../DistributionNetwork-Power2Current/modified-feeder69\data.txt');
|
||||||
% phaseASpotLoadP(phaseASpotLoadP==0)=0.002;
|
% phaseASpotLoadP(phaseASpotLoadP==0)=0.002;
|
||||||
% phaseBSpotLoadP(phaseBSpotLoadP==0)=0.002;
|
% phaseBSpotLoadP(phaseBSpotLoadP==0)=0.002;
|
||||||
% phaseCSpotLoadP(phaseCSpotLoadP==0)=0.002;
|
% phaseCSpotLoadP(phaseCSpotLoadP==0)=0.002;
|
||||||
|
|
@ -253,6 +253,7 @@ noLoadi=[1,8,10,12];
|
||||||
% noLoadi=Loadi;
|
% noLoadi=Loadi;
|
||||||
% noLoadi=[1,11];
|
% noLoadi=[1,11];
|
||||||
noLoadi=[5];
|
noLoadi=[5];
|
||||||
|
noLoadi=[];
|
||||||
% noLoadi=[5,11,19,27,37,43,54,61];
|
% noLoadi=[5,11,19,27,37,43,54,61];
|
||||||
noPQi3P=zeros(length(noLoadi)*3,1);
|
noPQi3P=zeros(length(noLoadi)*3,1);
|
||||||
noPQi3P(1:3:end)=(noLoadi-1)*3+1;
|
noPQi3P(1:3:end)=(noLoadi-1)*3+1;
|
||||||
|
|
@ -268,12 +269,19 @@ PD3PSigma=(1+normrnd(0,sigma,length(rPD3P),1));
|
||||||
mPD3P=rPD3P.*PD3PSigma;
|
mPD3P=rPD3P.*PD3PSigma;
|
||||||
QD3PSigma=(1+normrnd(0,sigma,length(rQD3P),1));
|
QD3PSigma=(1+normrnd(0,sigma,length(rQD3P),1));
|
||||||
mQD3P=rQD3P.*QD3PSigma;
|
mQD3P=rQD3P.*QD3PSigma;
|
||||||
|
|
||||||
|
%ÓÃÆ½ºâ½ÚµãÕæÊµÖµ
|
||||||
|
mPD3P(ismember(Loadi,Balance3P))=[-real(PGQG((Balance-1)*3+1));-real(PGQG((Balance-1)*3+2));-real(PGQG((Balance-1)*3+3))];
|
||||||
|
mQD3P(ismember(Loadi,Balance3P))=[-imag(PGQG((Balance-1)*3+1));-imag(PGQG((Balance-1)*3+2));-imag(PGQG((Balance-1)*3+3))];
|
||||||
|
|
||||||
mPD3P(ismember(Loadi,noPQi3P))=rPD3P(ismember(Loadi,noPQi3P)).*(1+unifrnd(-0.15,0.15,length(noPQi3P),1));
|
mPD3P(ismember(Loadi,noPQi3P))=rPD3P(ismember(Loadi,noPQi3P)).*(1+unifrnd(-0.15,0.15,length(noPQi3P),1));
|
||||||
mQD3P(ismember(Loadi,noPQi3P))=rQD3P(ismember(Loadi,noPQi3P)).*(1+unifrnd(-0.15,0.15,length(noPQi3P),1));
|
mQD3P(ismember(Loadi,noPQi3P))=rQD3P(ismember(Loadi,noPQi3P)).*(1+unifrnd(-0.15,0.15,length(noPQi3P),1));
|
||||||
%量测方差
|
%量测方差
|
||||||
wVolt=1./(abs(mVoltABCV*sigma/3).^2);
|
wVolt=1./(abs(mVoltABCV*sigma/3).^2);
|
||||||
wPD=1./(abs(mPD3P*sigma).^2);
|
wPD=1./(abs(mPD3P*sigma).^2);
|
||||||
|
wPD(ismember(Loadi,Balance3P))=1e20;
|
||||||
wQD=1./(abs(mQD3P*sigma).^2);
|
wQD=1./(abs(mQD3P*sigma).^2);
|
||||||
|
wQD(ismember(Loadi,Balance3P))=1e20;
|
||||||
wVolt(setdiff(1:length(wVolt),Loadi))=0;%只有负荷处才有电压量测。
|
wVolt(setdiff(1:length(wVolt),Loadi))=0;%只有负荷处才有电压量测。
|
||||||
wVolt( noPQi3P)=0;
|
wVolt( noPQi3P)=0;
|
||||||
wPD(ismember( Loadi,noPQi3P))=1./(abs(mPD3P(ismember( Loadi,noPQi3P))*0.15).^2);
|
wPD(ismember( Loadi,noPQi3P))=1./(abs(mPD3P(ismember( Loadi,noPQi3P))*0.15).^2);
|
||||||
|
|
@ -305,12 +313,12 @@ while(maxD>Precision)
|
||||||
%% 形成不等式约束的雅克比
|
%% 形成不等式约束的雅克比
|
||||||
%% 开始构建ddg
|
%% 开始构建ddg
|
||||||
%% 开始构建deltF
|
%% 开始构建deltF
|
||||||
deltF=func_deltF(wVolt,wPD,wQD,mPD3P,PD3P,QD3P,mQD3P,Volt,mVoltABCV,Busnum,Loadi);
|
% deltF=func_deltF(wVolt,wPD,wQD,mPD3P,PD3P,QD3P,mQD3P,Volt,mVoltABCV,Busnum,Loadi);
|
||||||
%% 形成方程矩阵
|
%% 形成方程矩阵
|
||||||
Mat_H=FormH(Busnum,Volt,PG3P,PD3P,QG3P,QD3P,Y,UAngel,r,c,Yangle,Loadi);
|
Mat_H=FormH(Busnum,Volt,PG3P,PD3P,QG3P,QD3P,Y,UAngel,r,c,Yangle,Loadi);
|
||||||
%% 开始解方程
|
%% 开始解方程
|
||||||
% fprintf('迭代次数 %d Gap %f\n',KK+1,plotGap(KK+1));
|
% fprintf('迭代次数 %d Gap %f\n',KK+1,plotGap(KK+1));
|
||||||
XX=SolveIt(ContrlCount,Balance,Busnum,Loadi,deltF,mPD3P,PD3P,mQD3P,QD3P,mVoltABCV,Volt,Mat_H,wVolt,wPD,wQD,dH_dx);
|
XX=SolveIt(ContrlCount,Balance,Busnum,Loadi,mPD3P,PD3P,mQD3P,QD3P,mVoltABCV,Volt,Mat_H,wVolt,wPD,wQD,dH_dx);
|
||||||
%%取各分量
|
%%取各分量
|
||||||
[deltX,deltY]=AssignXX(XX,ContrlCount,Loadi,Balance,Busnum);
|
[deltX,deltY]=AssignXX(XX,ContrlCount,Loadi,Balance,Busnum);
|
||||||
[Init_Y,PG,QG,Volt,UAngel,PD3P,QD3P]=Modification(Init_Y,deltX,deltY,PG,QG,Volt,UAngel,ContrlCount,Balance,Busnum,PD3P,QD3P,Loadi);
|
[Init_Y,PG,QG,Volt,UAngel,PD3P,QD3P]=Modification(Init_Y,deltX,deltY,PG,QG,Volt,UAngel,ContrlCount,Balance,Busnum,PD3P,QD3P,Loadi);
|
||||||
|
|
@ -338,6 +346,10 @@ AME_QD=sum(sum(abs(rQD3P-QD3P)))/length(Loadi);
|
||||||
AME_mVolt=sum(sum(abs( mVoltABCV-rVoltABCV)))/3/busNum;
|
AME_mVolt=sum(sum(abs( mVoltABCV-rVoltABCV)))/3/busNum;
|
||||||
AME_mPD=sum(sum(abs(rPD3P-mPD3P)))/length(Loadi);
|
AME_mPD=sum(sum(abs(rPD3P-mPD3P)))/length(Loadi);
|
||||||
AME_mQD=sum(sum(abs(rQD3P-mQD3P)))/length(Loadi);
|
AME_mQD=sum(sum(abs(rQD3P-mQD3P)))/length(Loadi);
|
||||||
|
|
||||||
|
% AME_mPD=sum(sum(abs(rPD3P(1:144)-mPD3P(1:144))))/144;
|
||||||
|
% AME_mQD=sum(sum(abs(rQD3P(1:144)-mQD3P(1:144))))/144;
|
||||||
|
|
||||||
%返回收敛信息
|
%返回收敛信息
|
||||||
isConverged=1;
|
isConverged=1;
|
||||||
if KK>=kmax
|
if KK>=kmax
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
function XX=SolveIt(ContrlCount,Balance,Busnum,Loadi,deltF,PD0,PD,QD0,QD,mVolt,Volt,Mat_H,wVolt,wPD,wQD,dH_dx)
|
function XX=SolveIt(ContrlCount,Balance,Busnum,Loadi,PD0,PD,QD0,QD,mVolt,Volt,Mat_H,wVolt,wPD,wQD,dH_dx)
|
||||||
% dH_dx
|
% dH_dx
|
||||||
dP_x=-dH_dx(Loadi,:);
|
dP_x=-dH_dx(Loadi,:);
|
||||||
dQ_x=-dH_dx(Loadi+Busnum*3,:);
|
dQ_x=-dH_dx(Loadi+Busnum*3,:);
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ function [Jacob]=jacobian_M3(Busnum,Volt,Y,Angle,UAngel,r,c)
|
||||||
%% 分别求雅克比矩阵的子阵H,L,N,J及有功无功分量P,Q
|
%% 分别求雅克比矩阵的子阵H,L,N,J及有功无功分量P,Q
|
||||||
AngleIJ=UAngel(r)-UAngel(c)-Angle;
|
AngleIJ=UAngel(r)-UAngel(c)-Angle;
|
||||||
mat_AngleIJ=sparse(r,c,AngleIJ,Busnum*3,Busnum*3);
|
mat_AngleIJ=sparse(r,c,AngleIJ,Busnum*3,Busnum*3);
|
||||||
H=sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)*Y.*sin(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)-sparse(1:Busnum*3,1:Busnum*3,Y.*sin(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
H=diag(Volt)*Y.*sin(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)-sparse(1:Busnum*3,1:Busnum*3,Y.*sin(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
||||||
N=-sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)*Y.*cos(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)+sparse(1:Busnum*3,1:Busnum*3,Y.*cos(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
N=-diag(Volt)*Y.*cos(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3)+sparse(1:Busnum*3,1:Busnum*3,Y.*cos(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
||||||
J=sparse(1:Busnum*3,1:Busnum*3,Y.*cos(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)+Y.*cos(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
J=sparse(1:Busnum*3,1:Busnum*3,Y.*cos(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)+Y.*cos(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
||||||
L=sparse(1:Busnum*3,1:Busnum*3,Y.*sin(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)+Y.*sin(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
L=sparse(1:Busnum*3,1:Busnum*3,Y.*sin(mat_AngleIJ)*Volt,Busnum*3,Busnum*3)+Y.*sin(mat_AngleIJ)*sparse(1:Busnum*3,1:Busnum*3,Volt,Busnum*3,Busnum*3);
|
||||||
t1=[J,H;
|
t1=[J,H;
|
||||||
|
|
|
||||||
5
test.m
5
test.m
|
|
@ -9,7 +9,7 @@ AME_QDSum=0;
|
||||||
AME_mVoltSum=0;
|
AME_mVoltSum=0;
|
||||||
AME_mPDSum=0;
|
AME_mPDSum=0;
|
||||||
AME_mQDSum=0;
|
AME_mQDSum=0;
|
||||||
totalTimeSum=1000;
|
totalTimeSum=0;
|
||||||
N=200;
|
N=200;
|
||||||
loopN=1;
|
loopN=1;
|
||||||
while 1
|
while 1
|
||||||
|
|
@ -30,7 +30,7 @@ while 1
|
||||||
AME_mVoltSum=AME_mVoltSum+AME_mVolt;
|
AME_mVoltSum=AME_mVoltSum+AME_mVolt;
|
||||||
AME_mPDSum=AME_mPDSum+AME_mPD;
|
AME_mPDSum=AME_mPDSum+AME_mPD;
|
||||||
AME_mQDSum=AME_mQDSum+AME_mQD;
|
AME_mQDSum=AME_mQDSum+AME_mQD;
|
||||||
totalTimeSum=min([totalTimeSum,totalTime]);
|
totalTimeSum=totalTimeSum+totalTime;
|
||||||
end
|
end
|
||||||
JMeasurementSum=JMeasurementSum/N;
|
JMeasurementSum=JMeasurementSum/N;
|
||||||
AME_VoltSum=AME_VoltSum/N;
|
AME_VoltSum=AME_VoltSum/N;
|
||||||
|
|
@ -40,3 +40,4 @@ AME_QDSum=AME_QDSum/N;
|
||||||
AME_mVoltSum=AME_mVoltSum/N;
|
AME_mVoltSum=AME_mVoltSum/N;
|
||||||
AME_mPDSum=AME_mPDSum/N;
|
AME_mPDSum=AME_mPDSum/N;
|
||||||
AME_mQDSum=AME_mQDSum/N;
|
AME_mQDSum=AME_mQDSum/N;
|
||||||
|
totalTimeSum=totalTimeSum/N;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue