加均匀分布

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-03-29 11:15:21 +08:00
parent 537b5e4699
commit d3146da2b9
1 changed files with 396 additions and 369 deletions

271
run.m
View File

@ -2,121 +2,139 @@ clear
clc clc
% yalmip('clear') % yalmip('clear')
addpath('.\Powerflow') addpath('.\Powerflow')
[~, ~, ~, ~,Volt,Vangle,Y,Yangle,r,c,newwordParameter,PG,QG,PD,QD,Balance]=pf('ieee4-DN.dat', '0'); [~, ~, ~, ~,Volt,Vangle,Y,Yangle,r,c,newwordParameter,PG,QG,PD,QD,Balance]=pf('E:\\feeder33\feeder33ieee.txt', '0');
% 'E:\\feeder33\feeder33ieee.txt' % 'E:\\feeder33\feeder33ieee.txt'
%% %%
sigma=0.03;% sigma=0.01;%
%% loop=1;
% VoltAAE=0;
rVolt=Volt; % VAngleAAE=0;
BalanceVolt=Volt(Balance); while 1
mVolt=rVolt.*(normrnd(0,sigma,length(Volt),1)+1);% %%
rVAngel=Vangle; %
%% rVolt=Volt; %
% BalanceVolt=Volt(Balance);
cmpY=Y.*exp(1j*sparse(r,c,Yangle,length(Y),length(Y)));% % mVolt=rVolt.*(normrnd(0,sigma,length(Volt),1)+1);%
cmpV=Volt.*exp(1j*Vangle); % %
cmpI=cmpY*cmpV;% mVolt=rVolt.*(unifrnd(-3*sigma,3*sigma,length(rVolt),1)+1);
rI=abs(cmpI); % rVAngel=Vangle;
mI=rI.*(normrnd(0,sigma,length(rI),1)+1);% %%
%% %
% cmpY=Y.*exp(1j*sparse(r,c,Yangle,length(Y),length(Y)));%
lineI=newwordParameter.line.lineI; cmpV=Volt.*exp(1j*Vangle); %
lineJ=newwordParameter.line.lineJ; cmpI=cmpY*cmpV;%
lineR=newwordParameter.line.lineR; rI=abs(cmpI); %
lineX=newwordParameter.line.lineX; mI=rI.*(normrnd(0,sigma,length(rI),1)+1);%
lineB2=newwordParameter.line.lineB2; %%
lineG=real(1./(lineR+1j*lineX)); %
lineB=imag(1./(lineR+1j*lineX)); lineI=newwordParameter.line.lineI;
cmpBranchI=BranchI( cmpV,lineI,lineJ,lineR,lineX );% lineJ=newwordParameter.line.lineJ;
rBranchI=abs(cmpBranchI);% lineR=newwordParameter.line.lineR;
mBranchI=rBranchI.*(normrnd(0,sigma,length(rBranchI),1)+1);% lineX=newwordParameter.line.lineX;
%% lineB2=newwordParameter.line.lineB2;
rBranchP= BranchP( cmpV,cmpBranchI,lineI,lineB2 ); lineG=real(1./(lineR+1j*lineX));
mBranchP=rBranchP.*(normrnd(0,sigma,length(rBranchP),1)+1);% lineB=imag(1./(lineR+1j*lineX));
rBranchQ=BranchQ( cmpV,cmpBranchI,lineI,lineB2 ); cmpBranchI=BranchI( cmpV,lineI,lineJ,lineR,lineX );%
mBranchQ=rBranchQ.*(normrnd(0,sigma,length(rBranchQ),1)+1);% rBranchI=abs(cmpBranchI);%
%% mBranchI=rBranchI.*(normrnd(0,sigma,length(rBranchI),1)+1);%
transI=newwordParameter.trans.transI; %%
transJ=newwordParameter.trans.transJ; rBranchP= BranchP( cmpV,cmpBranchI,lineI,lineB2 );
transK=newwordParameter.trans.transK; mBranchP=rBranchP.*(normrnd(0,sigma,length(rBranchP),1)+1);%
transR=newwordParameter.trans.transR; rBranchQ=BranchQ( cmpV,cmpBranchI,lineI,lineB2 );
transX=newwordParameter.trans.transX; mBranchQ=rBranchQ.*(normrnd(0,sigma,length(rBranchQ),1)+1);%
transG=real(1./(transR+1j*transX)); %%
transB=imag(1./(transR+1j*transX)); transI=newwordParameter.trans.transI;
rTransP=TransPower( newwordParameter,rVolt,rVAngel ); transJ=newwordParameter.trans.transJ;
rTransQ=TransReactivePower( newwordParameter,rVolt,rVAngel ); transK=newwordParameter.trans.transK;
mTransP=rTransP.*(normrnd(0,sigma,length(rTransP),1)+1); transR=newwordParameter.trans.transR;
mTransQ=rTransQ.*(normrnd(0,sigma,length(rTransQ),1)+1); transX=newwordParameter.trans.transX;
%% transG=real(1./(transR+1j*transX));
rPD=PD; transB=imag(1./(transR+1j*transX));
PDi=find(PD~=0); rTransP=TransPower( newwordParameter,rVolt,rVAngel );
rQD=QD; rTransQ=TransReactivePower( newwordParameter,rVolt,rVAngel );
QDi=find(QD~=0); mTransP=rTransP.*(normrnd(0,sigma,length(rTransP),1)+1);
rPG=PG; mTransQ=rTransQ.*(normrnd(0,sigma,length(rTransQ),1)+1);
PGi=find(PG~=0); %%
rQG=QG; rPD=PD;
QGi=find(QG~=0); PDi=find(PD~=0);
mPD=rPD.*(normrnd(0,sigma,length(rPD),1)+1); rQD=QD;
mQD=rQD.*(normrnd(0,sigma,length(rQD),1)+1); QDi=find(QD~=0);
mPG=rPG.*(normrnd(0,sigma,length(rPG),1)+1); rPG=PG;
mQG=rQG.*(normrnd(0,sigma,length(rQG),1)+1); PGi=find(PG~=0);
%% 0 rQG=QG;
zerosInjectionIndex=1:length(Volt); QGi=find(QG~=0);
zerosInjectionIndex=zerosInjectionIndex( ~(PD~=0|QD~=0|PG~=0|QG~=0) );
% zerosInjectionIndex=zeros(0,0);
%% %
% % mPD=rPD.*(normrnd(0,sigma,length(rPD),1)+1);
PDQDi=union(PDi,QDi); % mQD=rQD.*(normrnd(0,sigma,length(rQD),1)+1);
onlyPG=setdiff(PGi,PDQDi); % mPG=rPG.*(normrnd(0,sigma,length(rPG),1)+1);
onlyQG=setdiff(QGi,PDQDi); % mQG=rQG.*(normrnd(0,sigma,length(rQG),1)+1);
%% %
% measureSigma=abs(([rVolt;rBranchP;rBranchQ;rTransP;rTransQ].*sigma));
measureSigma=abs(([rVolt;rPD(PDi);rQD(QDi);].*sigma)); mPD=rPD.*(unifrnd(-3*sigma,3*sigma,length(rPD),1)+1);
measureSigma(measureSigma<1e-6)=mean(measureSigma(measureSigma>1e-6)); mQD=rQD.*(unifrnd(-3*sigma,3*sigma,length(rQD),1)+1);
W=sparse(diag(1./measureSigma.^2)) ; mPG=rPG.*(unifrnd(-3*sigma,3*sigma,length(rPG),1)+1);
% W=eye(length(W)); mQG=rQG.*(unifrnd(-3*sigma,3*sigma,length(rQD),1)+1);
% W=sparse(1:length(W),1:length(W),400,length(W),length(W)); % PD0(Loadi)=RealPD(Loadi).*(1+unifrnd(-3*sigma,3*sigma,length(Loadi),1));
%% % QD0(Loadi)=RealQD(Loadi).*(1+unifrnd(-3*sigma,3*sigma,length(Loadi),1));
stateVarCount=2*length(Volt); % mVolt=rVolt.*(1+unifrnd(-3*sigma,3*sigma,1,length(rVolt)));
measurements=length(mVolt)+length(mBranchI)+length(mBranchP)+length(mBranchQ)+length(mPG)+length(mQG)+length(mTransP)+length(mTransQ); %% 0
fprintf(' %f\n',measurements/stateVarCount); zerosInjectionIndex=1:length(Volt);
%% save zerosInjectionIndex=zerosInjectionIndex( ~(PD~=0|QD~=0|PG~=0|QG~=0) );
% save('mVolt','mVolt'); % zerosInjectionIndex=zeros(0,0);
% save('mPG','mPG'); %%
% save('mQG','mQG'); %
% save('mBranchI','mBranchI'); PDQDi=union(PDi,QDi);
% save('mBranchP','mBranchP'); onlyPG=setdiff(PGi,PDQDi);
% save('mBranchQ','mBranchQ'); onlyQG=setdiff(QGi,PDQDi);
% save('mTransP','mTransP'); %%
% save('mTransQ','mTransQ'); % measureSigma=abs(([rVolt;rBranchP;rBranchQ;rTransP;rTransQ].*sigma));
%% load measureSigma=abs(([rVolt;rPD(PDi);rQD(QDi);].*sigma));
% load('mVolt'); % measureSigma(measureSigma<1e-6)=mean(measureSigma(measureSigma>1e-6));
% load('mPG'); W=sparse(diag(1./measureSigma.^2)) ;
% load('mQG'); % W=eye(length(W));
% load('mBranchI'); % W=sparse(1:length(W),1:length(W),400,length(W),length(W));
% load('mBranchP'); %%
% load('mBranchQ'); stateVarCount=2*length(Volt);
% load('mTransP'); measurements=length(mVolt)+length(mBranchI)+length(mBranchP)+length(mBranchQ)+length(mPG)+length(mQG)+length(mTransP)+length(mTransQ);
% load('mTransQ'); fprintf(' %f\n',measurements/stateVarCount);
%% %% save
% % save('mVolt','mVolt');
SEVolt=sparse(ones(length(mVolt),1)); % save('mPG','mPG');
SEVolt(Balance)=rVolt(Balance); % save('mQG','mQG');
SEVAngle=sparse(-0.00*ones(length(mVolt),1)); % save('mBranchI','mBranchI');
% SEVolt=rVolt; % save('mBranchP','mBranchP');
% SEVAngle=rVAngel; % save('mBranchQ','mBranchQ');
maxD=1000; % save('mTransP','mTransP');
Iteration=0; % save('mTransQ','mTransQ');
optimalCondition=100; %% load
eps=1e-5; % load('mVolt');
mu=0; % load('mPG');
v=2; % load('mQG');
ojbFunDecrease=1000;% % load('mBranchI');
% Jacobi % load('mBranchP');
% while max(abs(g))>1e-5; % load('mBranchQ');
% while maxD>1e-5 % load('mTransP');
while max(abs(optimalCondition))>eps % load('mTransQ');
%%
%
SEVolt=sparse(ones(length(mVolt),1));
SEVolt(Balance)=rVolt(Balance);
SEVAngle=sparse(-0.00*ones(length(mVolt),1));
% SEVolt=rVolt;
% SEVAngle=rVAngel;
maxD=1000;
Iteration=0;
optimalCondition=100;
eps=1e-5;
mu=0;
v=2;
ojbFunDecrease=1000;%
% Jacobi
% while max(abs(g))>1e-5;
% while maxD>1e-5
while max(abs(maxD))>eps
% %
dV_dV=sparse(1:length(mVolt),1:length(mVolt),1,length(mVolt),length(mVolt));% dV_dV=sparse(1:length(mVolt),1:length(mVolt),1,length(mVolt),length(mVolt));%
dV_dTyta=sparse(length(mVolt),length(mVolt)); dV_dTyta=sparse(length(mVolt),length(mVolt));
@ -284,11 +302,11 @@ while max(abs(optimalCondition))>eps
% nodePQ=[nodeP;nodeQ]; % nodePQ=[nodeP;nodeQ];
% c=nodePQ(zerosInjectionIndex); % c=nodePQ(zerosInjectionIndex);
%% %%
% H=[dV_dV,dV_dTyta; % H=[dV_dV,dV_dTyta;
% dLPij_dVi+dLPij_dVj,dLPij_dThetai+dLPij_dThetaj ; % dLPij_dVi+dLPij_dVj,dLPij_dThetai+dLPij_dThetaj ;
% dLQij_dVi+dLQij_dVj,dLQij_dThetai+dLQij_dThetaj ; % dLQij_dVi+dLQij_dVj,dLQij_dThetai+dLQij_dThetaj ;
% dTPij_dVi+dTPij_dVj,dTPij_dThetai+dTPij_dThetaj; % dTPij_dVi+dTPij_dVj,dTPij_dThetai+dTPij_dThetaj;
% dTQij_dVi+dTQij_dVj,dTQij_dThetai+dTQij_dThetaj];%jacobi % dTQij_dVi+dTQij_dVj,dTQij_dThetai+dTQij_dThetaj];%jacobi
H=[dV_dV,dV_dTyta; H=[dV_dV,dV_dTyta;
dPdV(PDi,:),dPdTyta(PDi,:); dPdV(PDi,:),dPdTyta(PDi,:);
dQdV(QDi,:),dQdTyta(QDi,:)];%jacobi dQdV(QDi,:),dQdTyta(QDi,:)];%jacobi
@ -298,15 +316,15 @@ while max(abs(optimalCondition))>eps
SEBranchQ=BranchQ( SEVolt.*exp(1j*SEVAngle),SEBranchI,lineI,lineB2 ); SEBranchQ=BranchQ( SEVolt.*exp(1j*SEVAngle),SEBranchI,lineI,lineB2 );
SETransP=TransPower( newwordParameter,SEVolt,SEVAngle ); SETransP=TransPower( newwordParameter,SEVolt,SEVAngle );
SETransQ=TransReactivePower( newwordParameter,SEVolt,SEVAngle ); SETransQ=TransReactivePower( newwordParameter,SEVolt,SEVAngle );
% rAngleIJ=sparse(r,c,rVAngel(r)-rVAngel(c) -Yangle,length(mVolt),length(mVolt)) ; % rAngleIJ=sparse(r,c,rVAngel(r)-rVAngel(c) -Yangle,length(mVolt),length(mVolt)) ;
% diag(rVolt)*Y.* ( spfun (@cos, rAngleIJ ) )*rVolt; % diag(rVolt)*Y.* ( spfun (@cos, rAngleIJ ) )*rVolt;
SEPD=diag(SEVolt)*Y.* ( spfun (@cos, VAngleIJ ) )*SEVolt; SEPD=diag(SEVolt)*Y.* ( spfun (@cos, VAngleIJ ) )*SEVolt;
SEQD=diag(SEVolt)*Y.* ( spfun(@sin,VAngleIJ) )*SEVolt; SEQD=diag(SEVolt)*Y.* ( spfun(@sin,VAngleIJ) )*SEVolt;
h=[SEVolt;SEPD(PDi);SEQD(QDi);]; h=[SEVolt;SEPD(PDi);SEQD(QDi);];
% h=[SEVolt;SEBranchP;SEBranchQ;SETransP;SETransQ]; % h=[SEVolt;SEBranchP;SEBranchQ;SETransP;SETransQ];
% z=[mVolt;mBranchP;mBranchQ;mTransP;mTransQ]; % z=[mVolt;mBranchP;mBranchQ;mTransP;mTransQ];
z=[mVolt;-mPD(PDi);-mQD(QDi)]; z=[mVolt;-mPD(PDi);-mQD(QDi)];
@ -376,7 +394,16 @@ while max(abs(optimalCondition))>eps
optimalCondition=-g; optimalCondition=-g;
optimalCondition(Balance)=0; optimalCondition(Balance)=0;
optimalCondition(Balance+length(mVolt))=0; optimalCondition(Balance+length(mVolt))=0;
end
VoltAAE=VoltAAE+sum(abs((SEVolt-rVolt)./rVolt));
VAngleAAE=VAngleAAE+sum(abs((SEVAngle(2:end)-rVAngel(2:end))./rVAngel(2:end)));
if loop>=500
break
end
loop=loop+1;
end end
VoltAAE=VoltAAE/(loop*length(SEVolt))*100;
VAngleAAE=VAngleAAE/(loop*length(SEVAngle(2:end)))*100;
%% %%
fprintf('%d\n',Iteration); fprintf('%d\n',Iteration);
fval=full((z-h)'*W*(z-h)); fval=full((z-h)'*W*(z-h));