修复了目标函数一次导数的一个bug。

Signed-off-by: dugg@lab-desk <dugg@lab-desk>
This commit is contained in:
dugg@lab-desk 2014-10-29 17:45:58 +08:00
parent d81d1fd26e
commit c1efa7e6a8
5 changed files with 39 additions and 10 deletions

View File

@ -1,5 +1,21 @@
function Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement) function Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement)
upper=0.2.*sparse(ones(length(Loadi)*2,1)); Ir=real(I1measurement);
pIr=find(Ir>0);
nIr=find(Ir<0);
Ii=imag(I1measurement);
pIi=find(Ii>0);
nIi=find(Ii<0);
% lower=-0.2*sparse(ones(length(Loadi)*2,1));
upper=ones(length(Loadi)*2,1);
upper(pIr)=1.8*Ir(pIr);
upper(nIr)=0.2*Ir(nIr);
upper(pIi+length(Ir))=1.8*Ii(pIi);
upper(nIi+length(Ir))=0.2*Ii(nIi);
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,5 +1,18 @@
function Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement) function Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement)
Ir=real(I1measurement);
pIr=find(Ir>0);
nIr=find(Ir<0);
Ii=imag(I1measurement);
pIi=find(Ii>0);
nIi=find(Ii<0);
% lower=-0.2*sparse(ones(length(Loadi)*2,1));
lower=ones(length(Loadi)*2,1);
lower(pIr)=0.2*Ir(pIr);
lower(nIr)=1.8*Ir(nIr);
lower(pIi+length(Ir))=0.2*Ii(pIi);
lower(nIi+length(Ir))=1.8*Ii(nIi);
lower=-0.2*sparse(ones(length(Loadi)*2,1)); 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

@ -84,7 +84,7 @@ while(abs(Gap)>0.000001)
fprintf('Gap %f\n',full(Gap)); fprintf('Gap %f\n',full(Gap));
KK=KK+1; KK=KK+1;
end end
f=sum(([real(I1measurement);imag(I1measurement)]-[-I1r;-I1i]).^2)+sum((real(V1measurement)-V1r(Loadi)).^2)+sum((imag(V1measurement)-V1i(Loadi)).^2); f=sum(([real(I1measurement);imag(I1measurement)]-[I1r;I1i]).^2)+sum((real(V1measurement)-V1r(Loadi)).^2)+sum((imag(V1measurement)-V1i(Loadi)).^2);
end end

View File

@ -12,8 +12,8 @@ deltF=[
sparse(Loadi,1,-2*(real(V1measurement)-V1r(Loadi))./wV1r./wV1r,busNum,1); sparse(Loadi,1,-2*(real(V1measurement)-V1r(Loadi))./wV1r./wV1r,busNum,1);
sparse(Loadi,1,-2*(imag(V1measurement)-V1i(Loadi))./wV1i./wV1i,busNum,1); sparse(Loadi,1,-2*(imag(V1measurement)-V1i(Loadi))./wV1i./wV1i,busNum,1);
%-2*( [real(Imeasurement);imag(Imeasurement)]-[I1r;I1i]); %-2*( [real(Imeasurement);imag(Imeasurement)]-[I1r;I1i]);
sparse(1:length(Loadi),1,-2*(real(I1measurement)-V1r(Loadi))./wI1r./wI1r,length(Loadi),1); sparse(1:length(Loadi),1,-2*(real(I1measurement)-I1r(Loadi))./wI1r./wI1r,length(Loadi),1);
sparse(1:length(Loadi),1,-2*(imag(I1measurement)-V1i(Loadi))./wI1i./wI1i,length(Loadi),1); sparse(1:length(Loadi),1,-2*(imag(I1measurement)-I1i(Loadi))./wI1i./wI1i,length(Loadi),1);
]; ];
end end

10
run.m
View File

@ -216,7 +216,7 @@ CurpC=conj((iterPhaseCSpotLoadP+1j*iterPhaseCSpotLoadQ)./VoltpC);
f012=Tp2f*conj([CurpA';CurpB';CurpC']); f012=Tp2f*conj([CurpA';CurpB';CurpC']);
% %
If0=conj(f012(1,:)'); If0=conj(f012(1,:)');
If1=conj(f012(2,:)'); If1=conj(f012(2,:)');%
If2=conj(f012(3,:)'); If2=conj(f012(3,:)');
% %
% fsY11*V1; % fsY11*V1;
@ -224,7 +224,7 @@ If2=conj(f012(3,:)');
%% %%
sigma=0.03; sigma=0.03;
mIf0=-If0; mIf0=-If0;
mIf1=-If1; mIf1=-If1;%mIf1,
% mIf1(3)=-mIf1(2); % mIf1(3)=-mIf1(2);
mIf2=-If2; mIf2=-If2;
% fsY11(:,Balance)=0; % fsY11(:,Balance)=0;
@ -249,9 +249,9 @@ V1measurement=rV1(Loadi).*(1+sigmaV1);
wV1r=abs(real( rV1(Loadi).*sigmaV1 )); wV1r=abs(real( rV1(Loadi).*sigmaV1 ));
wV1i=abs(imag( rV1(Loadi).*sigmaV1 )); wV1i=abs(imag( rV1(Loadi).*sigmaV1 ));
sigmaI1=normrnd(0,sigma,length(Loadi),1); sigmaI1=normrnd(0,sigma,length(Loadi),1);
I1measurement=-mIf1(Loadi).*(1+sigmaI1); I1measurement=mIf1(Loadi).*(1+sigmaI1);%
wI1r=abs( real(-mIf1(Loadi).*sigmaI1) ); wI1r=abs( real(mIf1(Loadi).*sigmaI1) );
wI1i=abs( imag(-mIf1(Loadi).*sigmaI1) ); wI1i=abs( imag(mIf1(Loadi).*sigmaI1) );
[ 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(Imeasurement);imag(Imeasurement)]-[-I1r;-I1i]).^2)+sum((real(Vmeasurement)-V1r(Loadi)).^2)+sum((imag(Vmeasurement)-V1i(Loadi)).^2); % f=sum(([real(Imeasurement);imag(Imeasurement)]-[-I1r;-I1i]).^2)+sum((real(Vmeasurement)-V1r(Loadi)).^2)+sum((imag(Vmeasurement)-V1i(Loadi)).^2);