From c1efa7e6a8997bebbd413e0becfc9255f0b0c3f8 Mon Sep 17 00:00:00 2001 From: "dugg@lab-desk" Date: Wed, 29 Oct 2014 17:45:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E4=B8=80=E6=AC=A1=E5=AF=BC=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E4=B8=AAbug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dugg@lab-desk --- FormLwstate1.m | 18 +++++++++++++++++- FormLzstate1.m | 15 ++++++++++++++- IPMLoop.m | 2 +- func_deltF.m | 4 ++-- run.m | 10 +++++----- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/FormLwstate1.m b/FormLwstate1.m index 04ef34d..491f6dc 100644 --- a/FormLwstate1.m +++ b/FormLwstate1.m @@ -1,5 +1,21 @@ 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; end \ No newline at end of file diff --git a/FormLzstate1.m b/FormLzstate1.m index 42baed0..4ef45c9 100644 --- a/FormLzstate1.m +++ b/FormLzstate1.m @@ -1,5 +1,18 @@ 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; end \ No newline at end of file diff --git a/IPMLoop.m b/IPMLoop.m index 1b05bf7..f079c3b 100644 --- a/IPMLoop.m +++ b/IPMLoop.m @@ -84,7 +84,7 @@ while(abs(Gap)>0.000001) fprintf('Gap %f\n',full(Gap)); KK=KK+1; 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 diff --git a/func_deltF.m b/func_deltF.m index b5ca5ad..8f3c15b 100644 --- a/func_deltF.m +++ b/func_deltF.m @@ -12,8 +12,8 @@ deltF=[ sparse(Loadi,1,-2*(real(V1measurement)-V1r(Loadi))./wV1r./wV1r,busNum,1); sparse(Loadi,1,-2*(imag(V1measurement)-V1i(Loadi))./wV1i./wV1i,busNum,1); %-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*(imag(I1measurement)-V1i(Loadi))./wI1i./wI1i,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)-I1i(Loadi))./wI1i./wI1i,length(Loadi),1); ]; end \ No newline at end of file diff --git a/run.m b/run.m index 2262c58..458a862 100644 --- a/run.m +++ b/run.m @@ -216,7 +216,7 @@ CurpC=conj((iterPhaseCSpotLoadP+1j*iterPhaseCSpotLoadQ)./VoltpC); f012=Tp2f*conj([CurpA';CurpB';CurpC']); %把三序电流分离出来 If0=conj(f012(1,:)'); -If1=conj(f012(2,:)'); +If1=conj(f012(2,:)');%负荷电流 If2=conj(f012(3,:)'); %试着算一下正序电流 % fsY11*V1; @@ -224,7 +224,7 @@ If2=conj(f012(3,:)'); %% 设定量测误差 sigma=0.03; mIf0=-If0; -mIf1=-If1; +mIf1=-If1;%mIf1是注入电流,相当于发电机电流 % mIf1(3)=-mIf1(2); mIf2=-If2; % fsY11(:,Balance)=0; @@ -249,9 +249,9 @@ V1measurement=rV1(Loadi).*(1+sigmaV1); wV1r=abs(real( rV1(Loadi).*sigmaV1 )); wV1i=abs(imag( rV1(Loadi).*sigmaV1 )); sigmaI1=normrnd(0,sigma,length(Loadi),1); -I1measurement=-mIf1(Loadi).*(1+sigmaI1); -wI1r=abs( real(-mIf1(Loadi).*sigmaI1) ); -wI1i=abs( imag(-mIf1(Loadi).*sigmaI1) ); +I1measurement=mIf1(Loadi).*(1+sigmaI1);%测量值是等效发电机电流 +wI1r=abs( real(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 ); % f=sum(([real(Imeasurement);imag(Imeasurement)]-[-I1r;-I1i]).^2)+sum((real(Vmeasurement)-V1r(Loadi)).^2)+sum((imag(Vmeasurement)-V1i(Loadi)).^2);