From 058671a01bacbe03fff9dc7e4a59991a9164471a Mon Sep 17 00:00:00 2001 From: "dugg@lab-desk" Date: Sun, 19 Oct 2014 14:50:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E7=94=B5=E5=8E=8B=E6=94=BE=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E5=87=BD=E6=95=B0=E4=B8=AD=EF=BC=8C=E7=94=B5=E6=B5=81?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E7=9B=AE=E6=A0=87=E5=87=BD=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dugg@lab-desk --- FormLw.m | 2 +- IPMLoop.m | 6 +++--- feeder13/data1.txt | 4 +++- func_deltF.m | 8 +++++--- func_deltdeltF.m | 7 +++++-- run.m | 14 ++++++++++---- 6 files changed, 27 insertions(+), 14 deletions(-) diff --git a/FormLw.m b/FormLw.m index ecd112c..3da7c95 100644 --- a/FormLw.m +++ b/FormLw.m @@ -1,5 +1,5 @@ function Lw=FormLw(Loadi,Mat_G,Init_U) -upper=5*sparse(ones(length(Loadi)*1,1)); +upper=0.1*sparse(ones(length(Loadi)*1,1)); Lw=Mat_G+Init_U-upper; end \ No newline at end of file diff --git a/IPMLoop.m b/IPMLoop.m index c85ab45..aa296f8 100644 --- a/IPMLoop.m +++ b/IPMLoop.m @@ -1,4 +1,4 @@ -function [ V1r,V1i,I1r,I1i ] = IPMLoop(measurement,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref ) +function [ V1r,V1i,I1r,I1i ] = IPMLoop(Vmeasurement,Imeasurement,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref ) %把每个序的循环写在这个函数中。其实也就是内点法循环。 V1r=1*ones(busNum,1); V1i=0*ones(busNum,1); @@ -41,7 +41,7 @@ while(abs(Gap)>0.000001) %% 开始构建ddg ddg=func_ddg(busNum,Loadi,Init_Z,Init_W); %% 开始构建deltF - deltF=func_deltF(measurement,busNum,fsY1,Loadi,V1r,V1i,I1r,I1i); + deltF=func_deltF(Vmeasurement,Imeasurement,busNum,fsY1,Loadi,V1r,V1i,I1r,I1i); % deltF=0; %% Luu=Init_U.*Init_W+Init_u*ones(RestraintCount,1); @@ -62,7 +62,7 @@ while(abs(Gap)>0.000001) fprintf('Gap %f\n',full(Gap)); KK=KK+1; end -f=sum(([real(measurement);imag(measurement)]-[-I1r;-I1i]).^2); +f=sum(([real(Imeasurement);imag(Imeasurement)]-[-I1r;-I1i]).^2)+sum((real(Vmeasurement)-V1r(Loadi)).^2)+sum((real(Vmeasurement)-V1i(Loadi)).^2); end diff --git a/feeder13/data1.txt b/feeder13/data1.txt index c35b7a9..a4d2f06 100644 --- a/feeder13/data1.txt +++ b/feeder13/data1.txt @@ -1,10 +1,12 @@ 650 4.16 0 601 650 632 2000 -602 632 631 2000 +602 632 631 1800 +602 631 630 1700 0 632 30 0 0 0 +630 80 70 60 50 40 30 631 40 10 11 50 30 30 632 120 120 120 110 90 90 0 diff --git a/func_deltF.m b/func_deltF.m index 3594b25..539618c 100644 --- a/func_deltF.m +++ b/func_deltF.m @@ -1,4 +1,4 @@ -function deltF=func_deltF(measurement,busNum,fsY11,Loadi,V1r,V1i,I1r,I1i) +function deltF=func_deltF(Vmeasurement,Imeasurement,busNum,fsY11,Loadi,V1r,V1i,I1r,I1i) %t1=PG(setdiff(PVi,Balance)); % t2=Volt'*Volt; % t3=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat); @@ -8,8 +8,10 @@ function deltF=func_deltF(measurement,busNum,fsY11,Loadi,V1r,V1i,I1r,I1i) % PPG=([PQ(1),PBal])';%暂时用土办法处理一下 %% deltF=[ - zeros(busNum*2,1); - -2*( [real(measurement);imag(measurement)]-[I1r;I1i]); + %zeros(busNum*2,1); + sparse(Loadi,1,-2*(real(Vmeasurement)-V1r(Loadi)),busNum,1); + sparse(Loadi,1,-2*(imag(Vmeasurement)-V1i(Loadi)),busNum,1); + -0*( [real(Imeasurement);imag(Imeasurement)]-[I1r;I1i]); ]; end \ No newline at end of file diff --git a/func_deltdeltF.m b/func_deltdeltF.m index d07d26b..0472868 100644 --- a/func_deltdeltF.m +++ b/func_deltdeltF.m @@ -1,7 +1,10 @@ function deltdeltF=func_deltdeltF(busNum,fsY11,Loadi) deltdeltF=[ - zeros(busNum*2,busNum*2+length(Loadi)*2); - zeros(length(Loadi)*2,busNum*2),2*eye(length(Loadi)*2); + %zeros(busNum*2,busNum*2+length(Loadi)*2); + sparse(Loadi,Loadi,2,busNum,busNum*2+length(Loadi)*2); + sparse(Loadi,busNum+Loadi,2,busNum,busNum*2+length(Loadi)*2); + zeros(length(Loadi)*2,busNum*2),0*eye(length(Loadi)*2); + %sparse(Loadi,busNum*2+Loadi,2,busNum,busNum*2+length(Loadi)*2); ]; end \ No newline at end of file diff --git a/run.m b/run.m index 165ce92..cc9cf4e 100644 --- a/run.m +++ b/run.m @@ -235,10 +235,16 @@ mIf2=-If2; fprintf('正序\n'); BalI1r=real(-sum(mIf1)); BalI1i=imag(-sum(mIf1)); -% inv(fsY11)*(mIf1); -measurement=-mIf1(Loadi); -[ V1r,V1i,I1r,I1i ]=IPMLoop(measurement,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1 ); -f=sum(([real(measurement);imag(measurement)]-[-I1r;-I1i]).^2); +%电压 +mfsY11=fsY11; +mfsY11(:,Balance)=0; +mfsY11(Balance,:)=0; +mfsY11=mfsY11+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum); +mV1=inv(mfsY11)*(mIf1)+1; +Vmeasurement=mV1(Loadi); +Imeasurement=-mIf1(Loadi); +[ V1r,V1i,I1r,I1i ]=IPMLoop(Vmeasurement,Imeasurement,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); fprintf('目标值 %f\n',full(f)); %% 算负序的 fprintf('负序\n');