修复了目标函数一次导数的一个bug。
Signed-off-by: dugg@lab-desk <dugg@lab-desk>
This commit is contained in:
parent
d81d1fd26e
commit
c1efa7e6a8
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
10
run.m
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue