加入了确定不等式上下界的代码。

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-04-01 16:12:37 +08:00
parent 69ba28f2a9
commit 28c5270e87
4 changed files with 81 additions and 35 deletions

View File

@ -1,4 +1,4 @@
function Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement) function Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement,dI_F,flag)
Ir=real(I1measurement); Ir=real(I1measurement);
pIr=find(Ir>0); pIr=find(Ir>0);
@ -7,23 +7,23 @@ Ii=imag(I1measurement);
pIi=find(Ii>0); pIi=find(Ii>0);
nIi=find(Ii<0); nIi=find(Ii<0);
% lower=-0.2*sparse(ones(length(Loadi)*2,1)); % lower=-0.2*sparse(ones(length(Loadi)*2,1));
% upper=ones(length(Loadi)*2,1);
% upper(pIr)=1.4*Ir(pIr);
% upper(nIr)=0.6*Ir(nIr);
% upper(pIi+length(Ir))=1.4*Ii(pIi);
% upper(nIi+length(Ir))=0.6*Ii(nIi);
upper=ones(length(Loadi)*2,1); upper=ones(length(Loadi)*2,1);
upper(pIr)=1.4*Ir(pIr); upper(pIr)=abs(real(dI_F(pIr,flag)))+Ir(pIr);
upper(nIr)=0.6*Ir(nIr); upper(nIr)=abs(real(dI_F(nIr,flag)))+Ir(nIr);
upper(pIi+length(Ir))=1.4*Ii(pIi); upper(pIi+length(Ir))=abs(imag(dI_F(pIi,flag)))+Ii(pIi);
upper(nIi+length(Ir))=0.6*Ii(nIi); upper(nIi+length(Ir))=abs(imag(dI_F(nIi,flag)))+Ii(nIi);
% %
tooSmall=find(abs(Ir)<0.0005); % tooSmall=find(abs(Ir)<0.0005);
% upper(tooSmall)=0.99*abs(Ir(tooSmall)); % upper(tooSmall)=0.2;
upper(tooSmall)=0.2; % tooSmall=find(abs(Ii)<0.0005);
tooSmall=find(abs(Ii)<0.0005); % upper(tooSmall+length(Ir))=0.2;
% upper(tooSmall+length(Ir))=0.99*abs(Ii(tooSmall));
upper(tooSmall+length(Ir))=0.2;
% upper([4,5,6])=[1;1;1];
% upper([4,5,6])=0.2*Ii(nIi);
% upper=ones(length(Ir)*2,1);
Lw=Mat_G+Init_U-upper; Lw=Mat_G+Init_U-upper;
end end

View File

@ -1,26 +1,27 @@
function Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement) function Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement,dI_F,flag)
Ir=real(I1measurement); Ir=real(I1measurement);
pIr=find(Ir>0); pIr=find(Ir>0);
nIr=find(Ir<0); nIr=find(Ir<0);
Ii=imag(I1measurement); Ii=imag(I1measurement);
pIi=find(Ii>0); pIi=find(Ii>0);
nIi=find(Ii<0); nIi=find(Ii<0);
% lower=-0.2*sparse(ones(length(Loadi)*2,1));
lower=ones(length(Loadi)*2,1); lower=ones(length(Loadi)*2,1);
lower(pIr)=0.6*Ir(pIr); % lower(pIr)=0.6*Ir(pIr);
lower(nIr)=1.4*Ir(nIr); % lower(nIr)=1.4*Ir(nIr);
lower(pIi+length(Ir))=0.6*Ii(pIi); % lower(pIi+length(Ir))=0.6*Ii(pIi);
lower(nIi+length(Ir))=1.4*Ii(nIi); % lower(nIi+length(Ir))=1.4*Ii(nIi);
lower(pIr)=-abs(real(dI_F(pIr,flag)))+Ir(pIr);
lower(nIr)=-abs(real(dI_F(nIr,flag)))+Ir(nIr);
lower(pIi+length(Ir))=-abs(imag(dI_F(pIi,flag)))+Ii(pIi);
lower(nIi+length(Ir))=-abs(imag(dI_F(nIi,flag)))+Ii(nIi);
% %
tooSmall=find(abs(Ir)<0.0005); % tooSmall=find(abs(Ir)<0.0005);
% lower(tooSmall)=-0.99*abs(Ir(tooSmall)); % lower(tooSmall)=-0.2;
lower(tooSmall)=-0.2; % tooSmall=find(abs(Ii)<0.0005);
tooSmall=find(abs(Ii)<0.0005); % lower(tooSmall+length(Ir))=-0.2;
% lower(tooSmall+length(Ir))=-.99*abs(Ii(tooSmall));
lower(tooSmall+length(Ir))=-0.2;
% lower=-ones(length(Ir)*2,1);
% lower([4,5,6])=[-1;-1;-1];
Lz=Mat_G-Init_L-lower; Lz=Mat_G-Init_L-lower;
end end

View File

@ -1,4 +1,4 @@
function [ V1r,V1i,I1r,I1i,isConverged ] = IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref ) function [ V1r,V1i,I1r,I1i,isConverged ] = IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref,dI_F,flag )
% %
V1r=Vref*ones(busNum,1); V1r=Vref*ones(busNum,1);
V1i=0*ones(busNum,1); V1i=0*ones(busNum,1);
@ -50,8 +50,8 @@ while(abs(Gap)>0.00001)
Mat_G=FormGstate1(I1r,I1i); Mat_G=FormGstate1(I1r,I1i);
Mat_H=FormH(fsY1,Loadi,V1r,V1i,I1r,I1i,BalI1r,BalI1i,Balance); Mat_H=FormH(fsY1,Loadi,V1r,V1i,I1r,I1i,BalI1r,BalI1i,Balance);
Ly=Mat_H; Ly=Mat_H;
Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement); Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement,dI_F,flag);
Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement); Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement,dI_F,flag);
Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W); Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W);
YY=FormYY(Lul,Lz,Ly,Luu,Lw,Lx); YY=FormYY(Lul,Lz,Ly,Luu,Lw,Lx);
%% %%

51
run.m
View File

@ -271,25 +271,70 @@ wV0i=sqrt(2*( (abs(mVoltpA).*sigma).^2+(abs(mVoltpB).*sigma).^2+(abs(mVoltpC).*s
wV0r=wV0r(Loadi); wV0r=wV0r(Loadi);
wV0i=wV0i(Loadi); wV0i=wV0i(Loadi);
% matlabpool local 3 % matlabpool local 3
%%
%A
dIrdP_Ar=real(mVoltpA)./(real(mVoltpA).^2+imag(mVoltpA).^2);
dIrdQ_Ar=imag(mVoltpA)./(real(mVoltpA).^2+imag(mVoltpA).^2);
% dIrdP_Ar=dIrdP_Ar(Loadi);
% dIrdQ_Ar=dIrdQ_Ar(Loadi);
dI_pAr=dIrdP_Ar.*mphaseASpotLoadP*0.2+mphaseASpotLoadQ.*dIrdQ_Ar*0.2;
dIidP_Ai=-imag(mVoltpA)./(real(mVoltpA).^2+imag(mVoltpA).^2);
dIidQ_Ai=-real(mVoltpA)./(real(mVoltpA).^2+imag(mVoltpA).^2);
% dIidP_Ai=dIidP_Ai(Loadi);
% dIidQ_Ai=dIidQ_Ai(Loadi);
dI_pAi=dIidP_Ai.*mphaseASpotLoadP*0.2+dIidQ_Ai.*mphaseASpotLoadQ*0.2;
%B
dIrdP_Br=real(mVoltpB)./(real(mVoltpB).^2+imag(mVoltpB).^2);
dIrdQ_Br=imag(mVoltpB)./(real(mVoltpB).^2+imag(mVoltpB).^2);
% dIrdP_Br=dIrdP_Br(Loadi);
% dIrdQ_Br=dIrdQ_Br(Loadi);
dI_pBr=dIrdP_Br.*mphaseBSpotLoadP*0.2+dIrdQ_Br.*mphaseBSpotLoadQ*0.2;
dIidP_Bi=-imag(mVoltpB)./(real(mVoltpB).^2+imag(mVoltpB).^2);
dIidQ_Bi=-real(mVoltpB)./(real(mVoltpB).^2+imag(mVoltpB).^2);
% dIidP_Bi=dIidP_Bi(Loadi);
% dIidQ_Bi=dIidQ_Bi(Loadi);
dI_pBi=dIidP_Bi.*mphaseBSpotLoadP*0.2+dIidQ_Bi.*mphaseBSpotLoadQ*0.2;
%C
dIrdP_Cr=real(mVoltpC)./(real(mVoltpC).^2+imag(mVoltpC).^2);
dIrdQ_Cr=imag(mVoltpC)./(real(mVoltpC).^2+imag(mVoltpC).^2);
% dIrdP_Cr=dIrdP_Cr(Loadi);
% dIrdQ_Cr=dIrdQ_Cr(Loadi);
dI_pCr=dIrdP_Cr.*mphaseCSpotLoadP*0.2+dIrdQ_Cr.*mphaseBSpotLoadQ*0.2;
dIidP_Ci=-imag(mVoltpC)./(real(mVoltpC).^2+imag(mVoltpC).^2);
dIidQ_Ci=-real(mVoltpC)./(real(mVoltpC).^2+imag(mVoltpC).^2);
% dIidP_Ci=dIidP_Ci(Loadi);
% dIidQ_Ci=dIidQ_Ci(Loadi);
dI_pCi=dIidP_Ci.*mphaseCSpotLoadP*0.2+dIidQ_Ci.*mphaseCSpotLoadQ*0.2;
%
%
dI_F=Tp2f*[dI_pAr'+1j*dI_pAi';
dI_pBr'+1j*dI_pBi';
dI_pCr'+1j*dI_pCi';
];
dI_F=conj(dI_F)';
dI_F=dI_F(Loadi,:);
tic tic
for II=1:3 for II=1:3
if II==1 if II==1
fprintf('ÕýÐò\n'); fprintf('ÕýÐò\n');
tic tic
[ V1r,V1i,I1r,I1i,isConverged1 ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); [ V1r,V1i,I1r,I1i,isConverged1 ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1,dI_F,II );
toc toc
end end
if II==2 if II==2
fprintf('¸ºÐò\n'); fprintf('¸ºÐò\n');
tic tic
[ V2r,V2i,I2r,I2i,isConverged2 ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 ); [ V2r,V2i,I2r,I2i,isConverged2 ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0,dI_F,II );
toc toc
end end
if II==3 if II==3
fprintf('ÁãÐò\n'); fprintf('ÁãÐò\n');
tic tic
[ V0r,V0i,I0r,I0i,isConverged0 ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0 ); [ V0r,V0i,I0r,I0i,isConverged0 ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0,dI_F,II );
toc toc
end end