给投节点很大的权重,就是想作为真实值用。头节点没有误差。

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-06-03 16:39:49 +08:00
parent 1714aed115
commit fba2a4b03c
4 changed files with 22 additions and 9 deletions

20
OPF.m
View File

@ -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

View File

@ -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,:);

View File

@ -8,8 +8,8 @@ function [Jacob]=jacobian_M3(Busnum,Volt,Y,Angle,UAngel,r,c)
%% H,L,N,JP,Q %% H,L,N,JP,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
View File

@ -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;