From 28c5270e87e9ba1db8df3d4dfb3d229ab042bb08 Mon Sep 17 00:00:00 2001 From: "dmy@lab" Date: Wed, 1 Apr 2015 16:12:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E7=A1=AE=E5=AE=9A?= =?UTF-8?q?=E4=B8=8D=E7=AD=89=E5=BC=8F=E4=B8=8A=E4=B8=8B=E7=95=8C=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dmy@lab --- FormLwstate1.m | 30 ++++++++++++++--------------- FormLzstate1.m | 29 ++++++++++++++-------------- IPMLoop.m | 6 +++--- run.m | 51 +++++++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 81 insertions(+), 35 deletions(-) diff --git a/FormLwstate1.m b/FormLwstate1.m index 2a3b788..4b67b67 100644 --- a/FormLwstate1.m +++ b/FormLwstate1.m @@ -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); pIr=find(Ir>0); @@ -7,23 +7,23 @@ 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.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(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(pIr)=abs(real(dI_F(pIr,flag)))+Ir(pIr); +upper(nIr)=abs(real(dI_F(nIr,flag)))+Ir(nIr); +upper(pIi+length(Ir))=abs(imag(dI_F(pIi,flag)))+Ii(pIi); +upper(nIi+length(Ir))=abs(imag(dI_F(nIi,flag)))+Ii(nIi); + %太小的数都要放宽一些 -tooSmall=find(abs(Ir)<0.0005); -% upper(tooSmall)=0.99*abs(Ir(tooSmall)); -upper(tooSmall)=0.2; -tooSmall=find(abs(Ii)<0.0005); -% upper(tooSmall+length(Ir))=0.99*abs(Ii(tooSmall)); -upper(tooSmall+length(Ir))=0.2; +% tooSmall=find(abs(Ir)<0.0005); +% upper(tooSmall)=0.2; +% tooSmall=find(abs(Ii)<0.0005); +% 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; end \ No newline at end of file diff --git a/FormLzstate1.m b/FormLzstate1.m index d8907b1..7e73df3 100644 --- a/FormLzstate1.m +++ b/FormLzstate1.m @@ -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); 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.6*Ir(pIr); -lower(nIr)=1.4*Ir(nIr); -lower(pIi+length(Ir))=0.6*Ii(pIi); -lower(nIi+length(Ir))=1.4*Ii(nIi); +% lower(pIr)=0.6*Ir(pIr); +% lower(nIr)=1.4*Ir(nIr); +% lower(pIi+length(Ir))=0.6*Ii(pIi); +% 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); -% lower(tooSmall)=-0.99*abs(Ir(tooSmall)); -lower(tooSmall)=-0.2; -tooSmall=find(abs(Ii)<0.0005); -% lower(tooSmall+length(Ir))=-.99*abs(Ii(tooSmall)); -lower(tooSmall+length(Ir))=-0.2; +% tooSmall=find(abs(Ir)<0.0005); +% lower(tooSmall)=-0.2; +% tooSmall=find(abs(Ii)<0.0005); +% 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; end \ No newline at end of file diff --git a/IPMLoop.m b/IPMLoop.m index 3f6da55..6733d00 100644 --- a/IPMLoop.m +++ b/IPMLoop.m @@ -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); V1i=0*ones(busNum,1); @@ -50,8 +50,8 @@ while(abs(Gap)>0.00001) Mat_G=FormGstate1(I1r,I1i); Mat_H=FormH(fsY1,Loadi,V1r,V1i,I1r,I1i,BalI1r,BalI1i,Balance); Ly=Mat_H; - Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement); - Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement); + Lz=FormLzstate1(Loadi,Mat_G,Init_L,I1measurement,dI_F,flag); + Lw=FormLwstate1(Loadi,Mat_G,Init_U,I1measurement,dI_F,flag); Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W); YY=FormYY(Lul,Lz,Ly,Luu,Lw,Lx); %% 开始解方程 diff --git a/run.m b/run.m index a0f5f16..8c4f9fa 100644 --- a/run.m +++ b/run.m @@ -271,25 +271,70 @@ wV0i=sqrt(2*( (abs(mVoltpA).*sigma).^2+(abs(mVoltpB).*sigma).^2+(abs(mVoltpC).*s wV0r=wV0r(Loadi); wV0i=wV0i(Loadi); % 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 for II=1:3 if II==1 fprintf('正序\n'); 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 end if II==2 fprintf('负序\n'); 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 end if II==3 fprintf('零序\n'); 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 end