计算时间比较多。

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-06-04 22:38:28 +08:00
parent fba2a4b03c
commit 23d116883b
3 changed files with 36 additions and 26 deletions

7
OPF.m
View File

@ -309,16 +309,16 @@ while(maxD>Precision)
end end
%% OPF %% OPF
%% %%
dH_dx = jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c); % % dH_dx = jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c); %
%% %%
%% 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,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,wVolt,wPD,wQD,Y,Yangle,UAngel,r,c);
%% %%
[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);
@ -328,6 +328,7 @@ while(maxD>Precision)
end end
totalTime=toc totalTime=toc
(rVoltABCV-Volt)./rVoltABCV*100; (rVoltABCV-Volt)./rVoltABCV*100;
Mat_H=FormH(Busnum,Volt,PG3P,PD3P,QG3P,QD3P,Y,UAngel,r,c,Yangle,Loadi);
PD3P=-Mat_H(Loadi); PD3P=-Mat_H(Loadi);
QD3P=-Mat_H(Loadi+Busnum*3); QD3P=-Mat_H(Loadi+Busnum*3);
%% %%

View File

@ -1,24 +1,33 @@
function XX=SolveIt(ContrlCount,Balance,Busnum,Loadi,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,wVolt,wPD,wQD,Y,Yangle,UAngel,r,c)
% dH_dx % dH_dx
dP_x=-dH_dx(Loadi,:); dP_x = jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c); %ĞγÉÑſ˱ȾØÕó
dQ_x=-dH_dx(Loadi+Busnum*3,:); dP_x=-dP_x(Loadi,:);
dV_x=[sparse(1:Busnum*3,1:Busnum*3,1,Busnum*3,Busnum*3),sparse(Busnum*3,Busnum*3)]; dQ_x = jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c);
dQ_x=-dQ_x(Loadi+Busnum*3,:);
dV_x=[eye(Busnum*3,Busnum*3),zeros(Busnum*3,Busnum*3)];
H=[dP_x;dQ_x;dV_x]; H=[dP_x;dQ_x;dV_x];
c=dH_dx(setdiff(1:Busnum*3,Loadi),:); cP=jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c);
c=[c;dH_dx(setdiff(1:Busnum*3,Loadi)+Busnum*3,:)]; cP=cP(setdiff(1:Busnum*3,Loadi),:);
aa=[H'*diag([wPD;wQD;wVolt])*H c' cQ=jacobian_M(Busnum,Volt,Y,Yangle,UAngel,r,c);
c zeros(size(c,1),size(c',2))]; cQ=cQ(setdiff(1:Busnum*3,Loadi)+Busnum*3,:);
% aa=H'*eye(length(H))*H; C=[cP;cQ];
PD=-Mat_H(Loadi,:); aa=[H'*diag([wPD;wQD;wVolt])*H C'
QD=-Mat_H(Loadi+Busnum*3,:); C zeros(size(C,1),size(C',2))];
AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Yangle,Busnum*3,Busnum*3);
PD=-diag(Volt)*Y.*cos(AngleIJ)*Volt;
PD=PD(Loadi);
QD=-diag(Volt)*Y.*sin(AngleIJ)*Volt;
QD=QD(Loadi);
dP=diag(Volt)*Y.*cos(AngleIJ)*Volt;
dQ=diag(Volt)*Y.*sin(AngleIJ)*Volt;
deltZ=[(PD0-PD); deltZ=[(PD0-PD);
(QD0-QD); (QD0-QD);
(mVolt-Volt); (mVolt-Volt);
]; ];
yy=[ yy=[
H'*diag([wPD;wQD;wVolt])*deltZ; H'*diag([wPD;wQD;wVolt])*deltZ;
-Mat_H(setdiff(1:Busnum*3,Loadi)); -dP(setdiff(1:Busnum*3,Loadi));
-Mat_H(setdiff(1:Busnum*3,Loadi)+Busnum*3); -dQ(setdiff(1:Busnum*3,Loadi));
]; ];
% yy=[ % yy=[
% H'*eye(length(H))*deltZ; % H'*eye(length(H))*deltZ;
@ -31,9 +40,9 @@ aa(t+(Balance-1)*3+3,:)=0;
aa(:,t+(Balance-1)*3+1)=0; aa(:,t+(Balance-1)*3+1)=0;
aa(:,t+(Balance-1)*3+2)=0; aa(:,t+(Balance-1)*3+2)=0;
aa(:,t+(Balance-1)*3+3)=0; aa(:,t+(Balance-1)*3+3)=0;
aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
% aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),2*Busnum*3,2*Busnum*3); % aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),2*Busnum*3,2*Busnum*3);
% aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),2*Busnum*3,2*Busnum*3); % aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),2*Busnum*3,2*Busnum*3);
@ -47,9 +56,9 @@ aa(t+(Balance-1)*3+3,:)=0;
aa(:,t+(Balance-1)*3+1)=0; aa(:,t+(Balance-1)*3+1)=0;
aa(:,t+(Balance-1)*3+2)=0; aa(:,t+(Balance-1)*3+2)=0;
aa(:,t+(Balance-1)*3+3)=0; aa(:,t+(Balance-1)*3+3)=0;
aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),size(c,1)+2*Busnum*3,size(c,1)+2*Busnum*3); aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),size(C,1)+2*Busnum*3,size(C,1)+2*Busnum*3);
% aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),2*Busnum*3,2*Busnum*3); % aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),2*Busnum*3,2*Busnum*3);
% aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),2*Busnum*3,2*Busnum*3); % aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),2*Busnum*3,2*Busnum*3);
% aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),2*Busnum*3,2*Busnum*3); % aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),2*Busnum*3,2*Busnum*3);

View File

@ -8,10 +8,10 @@ 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=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); H=diag(Volt)*Y.*sin(mat_AngleIJ)*diag(Volt)-diag(Y.*sin(mat_AngleIJ)*Volt)*diag(Volt);
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); N=-diag(Volt)*Y.*cos(mat_AngleIJ)*diag(Volt)+diag(Y.*cos(mat_AngleIJ)*Volt)*diag(Volt);
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=diag(Y.*cos(mat_AngleIJ)*Volt)+Y.*cos(mat_AngleIJ)*diag(Volt);
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=diag(Y.*sin(mat_AngleIJ)*Volt)+Y.*sin(mat_AngleIJ)*diag(Volt);
t1=[J,H; t1=[J,H;
L,N; L,N;
]; ];