distributionnetwork-power2c.../IPMLoop.m

62 lines
2.4 KiB
Mathematica
Raw Normal View History

function [ V1r,V1i,I1r,I1i ] = IPMLoop(measurement,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref )
%<EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>ʵҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
V1r=1*ones(busNum,1);
V1i=0*ones(busNum,1);
I1r=0.01*ones(length(Loadi),1);%ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
I1i=0.01*ones(length(Loadi),1);%ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KK=0;
plotGap=zeros(1,60);
%<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
%״̬<EFBFBD><EFBFBD>Ϊ SEPD SEQD SEVmf1 SEVaf1
RestraintCount=length(Loadi)*1;
ContrlCount=busNum*2+length(Loadi)*2;
CenterA=0.1;
Init_Z=sparse(ones(RestraintCount,1));
Init_W=sparse(-1*ones(RestraintCount,1));
Init_L=1*sparse(ones(RestraintCount,1));
Init_U=1*sparse(ones(RestraintCount,1));
Init_Y=sparse(2*busNum,1);%<EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Gap=(Init_L'*Init_Z-Init_U'*Init_W);
% PG=sparse(busNum,1);
% PG(Balance)=0.1105;
% QG=sparse(busNum,1);
% QG(Balance)=0.0984;
% SEPD(2)=0.1105;
% SEQD(2)=0.0984;
while Gap>1e-5 && KK<20
KK=KK+1;
Init_u=Gap/2/RestraintCount*CenterA;
deltH=func_deltH(busNum,fsY1,Loadi,Balance);
deltG=func_deltG(busNum,Loadi,I1r,I1i);
% deltG=0;
% L_1Z=diag(Init_Z./Init_L);
% U_1W=diag(Init_W./Init_U);
deltdeltF=func_deltdeltF(busNum,fsY1,Loadi);
% deltdeltF=0;
% ddh=func_ddh(SEVmf1,Init_Y,busNum,fsY1amp,SEVaf1,r,c,fsY1ang,Loadi,ContrlCount);
ddh=0;
ddg=func_ddg(busNum,Loadi,Init_Z,Init_W);
deltF=func_deltF(measurement,busNum,fsY1,Loadi,V1r,V1i,I1r,I1i);
% deltF=0;
Luu=Init_U.*Init_W+Init_u*ones(RestraintCount,1);
Lul=Init_L.*Init_Z-Init_u*ones(RestraintCount,1);
Mat_G=FormG(I1r,I1i);
Mat_H=FormH(fsY1,Loadi,V1r,V1i,I1r,I1i,BalI1r,BalI1i,Balance);
Ly=Mat_H;
Lz=FormLz(Loadi,Mat_G,Init_L);
Lw=FormLw(Loadi,Mat_G,Init_U);
Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W);
% YY=FormYY(Lul,Lz,Ly,Luu,Lw,Lx);
%% <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>
plotGap(KK)=Gap;
fprintf('<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d Gap %f\n',KK,plotGap(KK));
XX=SolveIt(deltF,deltG,Init_L,Init_Z,Init_U,Init_W,deltdeltF,ddh,ddg,deltH,Init_Y,Ly,Lz,ContrlCount,Lw,Lul,Luu,Lx,Balance,busNum,Loadi);
[deltZ,deltL,deltW,deltU,deltX,deltY]=AssignXX(XX,ContrlCount,RestraintCount,busNum);
[Init_Z,Init_L,Init_W,Init_U,Init_Y,V1r,V1i,I1r,I1i]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,V1r,V1i,I1r,I1i,ContrlCount,Balance,busNum,Loadi,Vref);
Gap=(Init_L'*Init_Z-Init_U'*Init_W);
end
f=sum(([real(measurement);imag(measurement)]-[-I1r;-I1i]).^2);
end