如果用量测值确定不等式上下界容易出现不收敛的问题。

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-04-01 10:06:11 +08:00
parent 37bbf6fc86
commit 361909bcde
5 changed files with 35 additions and 44 deletions

View File

@ -8,18 +8,18 @@ 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=ones(length(Loadi)*2,1);
upper(pIr)=1.2*Ir(pIr); upper(pIr)=1.4*Ir(pIr);
upper(nIr)=0.8*Ir(nIr); upper(nIr)=0.6*Ir(nIr);
upper(pIi+length(Ir))=1.2*Ii(pIi); upper(pIi+length(Ir))=1.4*Ii(pIi);
upper(nIi+length(Ir))=0.8*Ii(nIi); upper(nIi+length(Ir))=0.6*Ii(nIi);
% %
tooSmall=find(abs(Ir)<0.0005); tooSmall=find(abs(Ir)<0.0005);
% upper(tooSmall)=0.99*abs(Ir(tooSmall)); % upper(tooSmall)=0.99*abs(Ir(tooSmall));
upper(tooSmall)=0.002; upper(tooSmall)=0.2;
tooSmall=find(abs(Ii)<0.0005); tooSmall=find(abs(Ii)<0.0005);
% upper(tooSmall+length(Ir))=0.99*abs(Ii(tooSmall)); % upper(tooSmall+length(Ir))=0.99*abs(Ii(tooSmall));
upper(tooSmall+length(Ir))=0.002; upper(tooSmall+length(Ir))=0.2;
% upper([4,5,6])=[1;1;1]; % upper([4,5,6])=[1;1;1];
% upper([4,5,6])=0.2*Ii(nIi); % upper([4,5,6])=0.2*Ii(nIi);

View File

@ -7,18 +7,18 @@ 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));
lower=ones(length(Loadi)*2,1); lower=ones(length(Loadi)*2,1);
lower(pIr)=0.8*Ir(pIr); lower(pIr)=0.6*Ir(pIr);
lower(nIr)=1.2*Ir(nIr); lower(nIr)=1.4*Ir(nIr);
lower(pIi+length(Ir))=0.8*Ii(pIi); lower(pIi+length(Ir))=0.6*Ii(pIi);
lower(nIi+length(Ir))=1.2*Ii(nIi); lower(nIi+length(Ir))=1.4*Ii(nIi);
% %
tooSmall=find(abs(Ir)<0.0005); tooSmall=find(abs(Ir)<0.0005);
% lower(tooSmall)=-0.99*abs(Ir(tooSmall)); % lower(tooSmall)=-0.99*abs(Ir(tooSmall));
lower(tooSmall)=-0.002; lower(tooSmall)=-0.2;
tooSmall=find(abs(Ii)<0.0005); tooSmall=find(abs(Ii)<0.0005);
% lower(tooSmall+length(Ir))=-.99*abs(Ii(tooSmall)); % lower(tooSmall+length(Ir))=-.99*abs(Ii(tooSmall));
lower(tooSmall+length(Ir))=-0.002; lower(tooSmall+length(Ir))=-0.2;
% lower=-ones(length(Ir)*2,1); % lower=-ones(length(Ir)*2,1);
% lower([4,5,6])=[-1;-1;-1]; % lower([4,5,6])=[-1;-1;-1];

View File

@ -1,6 +1,6 @@
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 )
% %
V1r=1*ones(busNum,1); V1r=Vref*ones(busNum,1);
V1i=0*ones(busNum,1); V1i=0*ones(busNum,1);
I1r=0.1*ones(length(Loadi),1);% I1r=0.1*ones(length(Loadi),1);%
I1i=0.1*ones(length(Loadi),1);% I1i=0.1*ones(length(Loadi),1);%
@ -9,11 +9,7 @@ plotGap=zeros(1,60);
% %
% SEPD SEQD SEVmf1 SEVaf1 % SEPD SEQD SEVmf1 SEVaf1
state=1;%state1l<=I1r<=u state=1;%state1l<=I1r<=u
if state==1 RestraintCount=length(Loadi)*2;
RestraintCount=length(Loadi)*2;
else
RestraintCount=length(Loadi)*1;
end
ContrlCount=busNum*2+length(Loadi)*2; ContrlCount=busNum*2+length(Loadi)*2;
CenterA=0.1; CenterA=0.1;
Init_Z=sparse(ones(RestraintCount,1)); Init_Z=sparse(ones(RestraintCount,1));
@ -33,11 +29,7 @@ while(abs(Gap)>0.00001)
%% %%
deltH=func_deltH(busNum,fsY1,Loadi,Balance); deltH=func_deltH(busNum,fsY1,Loadi,Balance);
%% %%
if state==1
deltG=func_deltGstate1(busNum,Loadi,I1r,I1i); deltG=func_deltGstate1(busNum,Loadi,I1r,I1i);
else
deltG=func_deltG(busNum,Loadi,I1r,I1i);
end
%% %%
% L_1Z=diag(Init_Z./Init_L); % L_1Z=diag(Init_Z./Init_L);
% U_1W=diag(Init_W./Init_U); % U_1W=diag(Init_W./Init_U);
@ -48,31 +40,18 @@ while(abs(Gap)>0.00001)
% ddh=func_ddh(busNum,Loadi,Init_Z,Init_W); % ddh=func_ddh(busNum,Loadi,Init_Z,Init_W);
ddh=0; ddh=0;
%% ddg %% ddg
if state==1
ddg=0; ddg=0;
else
ddg=func_ddg(busNum,Loadi,Init_Z,Init_W);
end
%% deltF %% deltF
deltF=func_deltF(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,busNum,fsY1,Loadi,V1r,V1i,I1r,I1i); deltF=func_deltF(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,busNum,fsY1,Loadi,V1r,V1i,I1r,I1i);
% deltF=0; % deltF=0;
%% %%
Luu=Init_U.*Init_W+Init_u*ones(RestraintCount,1); Luu=Init_U.*Init_W+Init_u*ones(RestraintCount,1);
Lul=Init_L.*Init_Z-Init_u*ones(RestraintCount,1); Lul=Init_L.*Init_Z-Init_u*ones(RestraintCount,1);
if state==1
Mat_G=FormGstate1(I1r,I1i); Mat_G=FormGstate1(I1r,I1i);
else
Mat_G=FormG(I1r,I1i);
end
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;
if state==1
Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement); Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement);
Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement); Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement);
else
Lz=FormLz(Loadi,Mat_G,Init_L,I1measurement);
Lw=FormLw(Loadi,Mat_G,Init_U,I1measurement);
end
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);
%% %%

View File

@ -6,9 +6,9 @@
0 0
632 0 0 0 632 0 0 0
0 0
630 90 70 80 70 90 70 630 80 70 60 50 40 30
631 60 30 60 30 70 30 631 40 10 11 50 30 10
632 60 30 70 30 60 30 632 120 90 120 80 90 70
0 0

14
run.m
View File

@ -131,7 +131,7 @@ fprintf('
rIf0=If0; rIf0=If0;
rIf1=If1; rIf1=If1;
rIf2=If2; rIf2=If2;
sigma=0.03; sigma=0.01;
iterPhaseASpotLoadP=phaseASpotLoadP; iterPhaseASpotLoadP=phaseASpotLoadP;
iterPhaseBSpotLoadP=phaseBSpotLoadP; iterPhaseBSpotLoadP=phaseBSpotLoadP;
iterPhaseCSpotLoadP=phaseCSpotLoadP; iterPhaseCSpotLoadP=phaseCSpotLoadP;
@ -206,6 +206,10 @@ wV1i=abs(imag(V1measurement)).*sigma;
wV1i(abs(wV1i)<1e-5)=1e10; wV1i(abs(wV1i)<1e-5)=1e10;
wI1r=abs(real(I1measurement)).*sigma; wI1r=abs(real(I1measurement)).*sigma;
wI1i=abs(imag(I1measurement)).*sigma; wI1i=abs(imag(I1measurement)).*sigma;
wV1i=ones(length(wV1i),1);
wV1r=ones(length(wV1i),1);
% [ V1r,V1i,I1r,I1i ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); % [ V1r,V1i,I1r,I1i ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 );
% f=sum(([real(I1measurement);imag(I1measurement)]-[I1r;I1i]).^2)+sum((real(rV1)-V1r).^2)+sum((imag(rV1)-V1i).^2); % f=sum(([real(I1measurement);imag(I1measurement)]-[I1r;I1i]).^2)+sum((real(rV1)-V1r).^2)+sum((imag(rV1)-V1i).^2);
% fprintf('Ä¿±êÖµ %f\n',full(f)); % fprintf('Ä¿±êÖµ %f\n',full(f));
@ -234,6 +238,10 @@ wV2r=abs(real(V2measurement)).*sigma;
wV2i=abs(imag(V2measurement)).*sigma; wV2i=abs(imag(V2measurement)).*sigma;
wI2r=abs(real(I2measurement)).*sigma; wI2r=abs(real(I2measurement)).*sigma;
wI2i=abs(imag(I2measurement)).*sigma; wI2i=abs(imag(I2measurement)).*sigma;
wV2i=ones(length(wV1i),1);
wV2r=ones(length(wV1i),1);
% [ V2r,V2i,I2r,I2i ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 ); % [ V2r,V2i,I2r,I2i ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0 );
% f=sum(([real(I2measurement);imag(I2measurement)]-[I2r;I2i]).^2)+sum((real(rV2)-V2r).^2)+sum((imag(rV2)-V2i).^2); % f=sum(([real(I2measurement);imag(I2measurement)]-[I2r;I2i]).^2)+sum((real(rV2)-V2r).^2)+sum((imag(rV2)-V2i).^2);
% fprintf('Ä¿±êÖµ %f\n',full(f)); % fprintf('Ä¿±êÖµ %f\n',full(f));
@ -263,6 +271,10 @@ wV0i=abs(imag(V0measurement)).*sigma;
wI0r=abs(real(I0measurement)).*sigma; wI0r=abs(real(I0measurement)).*sigma;
wI0r(abs(wI0r)<1e-5)=1e10; wI0r(abs(wI0r)<1e-5)=1e10;
wI0i=abs(imag(I0measurement)).*sigma; wI0i=abs(imag(I0measurement)).*sigma;
wV0i=ones(length(wV1i),1);
wV0r=ones(length(wV1i),1);
% matlabpool local 3 % matlabpool local 3
tic tic
for II=1:3 for II=1:3