From 17f274f818d97694cecdb07848ead757ab5c1baa Mon Sep 17 00:00:00 2001 From: dmy Date: Wed, 14 May 2014 11:55:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8A=A0=E5=85=A5.gitignore=202.=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E4=BA=86PD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dmy --- .gitignore | 1 + FormG.m | 7 ++++--- FormLw.m | 2 +- FormLz.m | 2 +- Modification.m | 5 +++-- OPF.m | 14 ++++++++------ OPF_Init.m | 2 +- func_ddh.m | 4 ++-- func_deltF.m | 2 +- func_deltG.m | 28 ++++++++++++++++++++++++---- func_deltH.m | 3 ++- 11 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21229f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.asv \ No newline at end of file diff --git a/FormG.m b/FormG.m index 24b84a8..d8648ba 100644 --- a/FormG.m +++ b/FormG.m @@ -1,11 +1,12 @@ -function Mat_G=FormG(Volt,PD,QD,Loadi,Vbi,mVolt,RealVolt,bigM,sigma) +function Mat_G=FormG(Volt,PD,QD,Loadi,Vbi,mVolt,RealVolt,bigM,sigma,PDbi,RealPD,RealQD) Mat_G=[ - sparse(PD(Loadi)); - sparse(PD(Loadi)); + sparse(PD(Loadi))-bigM*PDbi-PD(Loadi)*sigma; + sparse(PD(Loadi))+bigM*PDbi+PD(Loadi)*sigma; sparse(QD(Loadi)); Volt'-bigM*Vbi-mVolt'-sigma*RealVolt'; Volt'+bigM*Vbi+mVolt'+sigma*RealVolt'; Vbi; + PDbi; ]; end \ No newline at end of file diff --git a/FormLw.m b/FormLw.m index 8a311a7..06b8737 100644 --- a/FormLw.m +++ b/FormLw.m @@ -17,7 +17,7 @@ realQD=QD0(Loadi); indQD=find(realQD>0); QDU(indQD(3:12:end))=1.55*realQD(indQD(3:12:end)); QDU(indQD(9:12:end))=1.05*realQD(indQD(9:12:end)); -t1=([PDU',PDU',QDU',0*VoltU,50*ones(1,Busnum),1*ones(1,Busnum)])'; +t1=([0*PDU',1*ones(1,length(Loadi)),QDU',0*VoltU,5*ones(1,Busnum),1*ones(1,Busnum),1*ones(1,length(Loadi))])'; t2=Mat_G+Init_U'-t1; Lw=t2; diff --git a/FormLz.m b/FormLz.m index 996e03f..24f22ec 100644 --- a/FormLz.m +++ b/FormLz.m @@ -16,7 +16,7 @@ realQD=QD0(Loadi); indQD=find(realQD>0); QDL(indQD(3:12:end))=0.95*realQD(indQD(3:12:end)); QDL(indQD(9:12:end))=0.95*realQD(indQD(9:12:end)); -t1=([PDL',PDL',QDL',-5000*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum)])'; +t1=([-1*ones(1,length(Loadi)),0*PDL',QDL',-5*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum),0*ones(1,length(Loadi))])'; t2=Mat_G-Init_L'-t1; Lz=t2; end \ No newline at end of file diff --git a/Modification.m b/Modification.m index b1d91e5..9b9fecc 100644 --- a/Modification.m +++ b/Modification.m @@ -1,4 +1,4 @@ -function [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel,PVi,ContrlCount,Balance,Busnum,PGi,PD,QD,Loadi,Vbi) +function [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi,PDbi]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel,PVi,ContrlCount,Balance,Busnum,PGi,PD,QD,Loadi,Vbi,PDbi) AlphaP=FormAlphaP(Init_L,deltL,Init_U,deltU); %fprintf('AlphaP %f\n',full(AlphaP)); AlphaD=FormAlphaD(Init_Z,deltZ,Init_W,deltW); @@ -24,5 +24,6 @@ balVolt=Volt(Balance); Volt=Volt+AlphaP*t(1:Busnum); Volt(Balance)=balVolt; UAngel=UAngel+AlphaP*t(Busnum+1:2*Busnum); -Vbi=Vbi+AlphaP*t(2*Busnum+1:end)'; +Vbi=Vbi+AlphaP*t(2*Busnum+1:2*Busnum+Busnum)'; +PDbi=PDbi+AlphaP*t(2*Busnum+Busnum+1:end)'; end \ No newline at end of file diff --git a/OPF.m b/OPF.m index 1e1310c..a5aba6b 100644 --- a/OPF.m +++ b/OPF.m @@ -44,8 +44,8 @@ RealQD=QD0; Gap=(Init_L*Init_Z'-Init_U*Init_W'); KK=0; plotGap=zeros(1,60); -ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum; -kmax=60; +ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum+length(Loadi); +kmax=600; Precision=Precision/1; sigma=0.03; %% 加误差 @@ -55,8 +55,9 @@ mPD=PD0; mQD=QD0; RealVolt=Volt0; mVolt=Volt0.*(1+normrnd(0,sigma,1,length(Volt0))); -Vbi=sparse(0.1*ones(Busnum,1)); -bigM=10; +Vbi=sparse(1*ones(Busnum,1)); +PDbi=sparse(1*ones(length(Loadi),1)); +bigM=1; while(abs(Gap)>Precision) if KK>kmax break; @@ -83,7 +84,7 @@ while(abs(Gap)>Precision) %% 形成方程矩阵 Luu=Init_U'.*Init_W'+Init_u*ones(RestraintCount,1); Lul=Init_L'.*Init_Z'-Init_u*ones(RestraintCount,1); - Mat_G=FormG(Volt,PD,QD,Loadi,Vbi,mVolt,RealVolt,bigM,sigma); + Mat_G=FormG(Volt,PD,QD,Loadi,Vbi,mVolt,RealVolt,bigM,sigma,PDbi,RealPD,RealQD); Mat_H=FormH(Busnum,Volt,PG,PD,QG,QD,Y,UAngel,r,c,Angle,Loadi); Ly=Mat_H; Lz=FormLz(Mat_G,Init_L,Busnum,PD0,QD0,Loadi); @@ -95,10 +96,11 @@ while(abs(Gap)>Precision) XX=SolveIt(deltF,deltG,Init_L,Init_Z,Init_U,Init_W,deltdeltF,ddh,ddg,deltH,Init_Y,Ly,Lz,ContrlCount,Lw,Lul,Luu,RestraintCount,Lx,Balance,PVi,PGi,Busnum,Loadi); %%取各分量 [deltZ,deltL,deltW,deltU,deltX,deltY]=AssignXX(XX,ContrlCount,RestraintCount,Busnum); - [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel,PVi,ContrlCount,Balance,Busnum,PGi,PD,QD,Loadi,Vbi); + [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi,PDbi]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel,PVi,ContrlCount,Balance,Busnum,PGi,PD,QD,Loadi,Vbi,PDbi); Gap=(Init_L*Init_Z'-Init_U*Init_W'); KK=KK+1; end fprintf('目标函数: %f\n',sum(full(Vbi))); +fprintf('目标函数: %f\n',sum(full(PDbi))); toc diff --git a/OPF_Init.m b/OPF_Init.m index 824bfdf..f46528f 100644 --- a/OPF_Init.m +++ b/OPF_Init.m @@ -1,7 +1,7 @@ function [Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,PD,PD0,QD,randPDind,Loadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD) Loadi=find(QD~=0 | PD~=0); %Loadi=[1:Busnum]'; -RestraintCount=size(Loadi,1)*2+size(Loadi,1)+Busnum*2+Busnum; %约束条件数,放开所有QD +RestraintCount=size(Loadi,1)*2+size(Loadi,1)+Busnum*2+Busnum+length(Loadi); %约束条件数,放开所有QD t_Bal_volt=Volt(Balance); Volt=sparse(1*ones(1,Busnum)); Volt(Balance)=t_Bal_volt; diff --git a/func_ddh.m b/func_ddh.m index 8850a0c..a4390b5 100644 --- a/func_ddh.m +++ b/func_ddh.m @@ -51,7 +51,7 @@ t=[ddPdVdV+ddQdVdV,ddPdVdT+ddQdVdT; sizeLoadi=size(Loadi,1)*2; ddh=[ sparse(sizeLoadi,ContrlCount); - sparse(2*Busnum,sizeLoadi),-t,sparse(2*Busnum,Busnum); - sparse(Busnum,ContrlCount); + sparse(2*Busnum,sizeLoadi),-t,sparse(2*Busnum,Busnum+length(Loadi)); + sparse(Busnum+length(Loadi),ContrlCount); ]; end \ No newline at end of file diff --git a/func_deltF.m b/func_deltF.m index 06785cf..8933558 100644 --- a/func_deltF.m +++ b/func_deltF.m @@ -5,6 +5,6 @@ deltF=[sparse(length(Loadi),1); sparse(length(Loadi),1); sparse(2*Busnum,1); sparse(ones(Busnum,1)); + sparse(ones(length(Loadi),1)); ]; - end \ No newline at end of file diff --git a/func_deltG.m b/func_deltG.m index ab97d12..2e7319c 100644 --- a/func_deltG.m +++ b/func_deltG.m @@ -7,7 +7,9 @@ dg32_dPD=dg3_dPD; dg4_dPD=sparse(size(Loadi,1),length(Loadi)); dg5_dPD=sparse(size(Loadi,1),Busnum); dg6_dPD=dg5_dPD; +%dg7 是 Vbi的约束 dg7_dPD=sparse(sizeLoadi,Busnum); +dpdbi_dPD=sparse(sizeLoadi,sizeLoadi); %% dg3_dQD=sparse(length(Loadi),length(Loadi)); dg32_dQD=sparse(sizeLoadi,sizeLoadi); @@ -15,6 +17,7 @@ dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi, dg5_dQD=sparse(size(Loadi,1),Busnum); dg6_dQD=dg5_dQD; dg7_dQD=sparse(sizeLoadi,Busnum); +dpdbi_dQD=sparse(sizeLoadi,sizeLoadi); %% dg3_dx=sparse(2*Busnum,sizeLoadi); dg32_dx=sparse(2*Busnum,sizeLoadi); @@ -24,6 +27,7 @@ dg5_dx=[sparse(1:Busnum,1:Busnum,ones(Busnum,1),Busnum,Busnum); ]; dg6_dx=dg5_dx; dg7_dx=sparse(2*Busnum,Busnum); +dpdbi_dx=sparse(2*Busnum,sizeLoadi); %% dg3_dvbi=sparse(Busnum,sizeLoadi); dg32_dvbi=sparse(Busnum,sizeLoadi); @@ -31,10 +35,26 @@ dg4_dvbi=sparse(Busnum,length(Loadi)); dg5_dvbi=sparse(-eye(Busnum,Busnum)); dg6_dvbi=sparse(eye(Busnum,Busnum)); dg7_dvbi=sparse(eye(Busnum,Busnum)); +dpdbi_dvbi=sparse(Busnum,sizeLoadi); %% -deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD; - dg3_dQD,dg32_dQD,dg4_dQD,dg5_dQD,dg6_dQD,dg7_dQD; - dg3_dx,dg32_dx,dg4_dx,dg5_dx,dg6_dx,dg7_dx; - dg3_dvbi,dg32_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi; +dg3_dpdbi=sparse(-eye(sizeLoadi,sizeLoadi)); +dg32_dpdbi=sparse(eye(sizeLoadi,sizeLoadi)); +dg4_dpdbi=sparse(sizeLoadi,sizeLoadi); +dg5_dpdbi=sparse(sizeLoadi,Busnum); +dg6_dpdbi=sparse(sizeLoadi,Busnum); +dg7_dpdbi=sparse(sizeLoadi,Busnum); +dpdbi_dpdbi=sparse(eye(sizeLoadi,sizeLoadi)); +%% +deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dpdbi_dPD; + dg3_dQD,dg32_dQD,dg4_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dpdbi_dQD; + dg3_dx,dg32_dx,dg4_dx,dg5_dx,dg6_dx,dg7_dx,dpdbi_dx; + dg3_dvbi,dg32_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi,dpdbi_dvbi; + dg3_dpdbi,dg32_dpdbi,dg4_dpdbi,dg5_dpdbi,dg6_dpdbi,dg7_dpdbi,dpdbi_dpdbi; ]; +% deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD; +% dg3_dQD,dg32_dQD,dg4_dQD,dg5_dQD,dg6_dQD,dg7_dQD; +% dg3_dx,dg32_dx,dg4_dx,dg5_dx,dg6_dx,dg7_dx; +% dg3_dvbi,dg32_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi; +% dg3_dpdbi,dg32_dpdbi,dg4_dpdbi,dg5_dpdbi,dg6_dpdbi,dg7_dpdbi; +% ]; end \ No newline at end of file diff --git a/func_deltH.m b/func_deltH.m index 5e411a7..cddcb8e 100644 --- a/func_deltH.m +++ b/func_deltH.m @@ -3,6 +3,7 @@ dH_dPD=[sparse(1:size(Loadi,1),Loadi,-ones(size(Loadi,1),1),size(Loadi,1),Busnum dH_dQD=[sparse(size(Loadi,1),Busnum) sparse(1:size(Loadi,1),Loadi,-ones(size(Loadi,1),1),size(Loadi,1),Busnum)]; dH_dx = jacobian_M(Busnum,Volt,Y,Angle,UAngel,r,c); %形成雅克比矩阵 dH_dvbi=sparse(Busnum,2*Busnum); -deltH=[dH_dPD;dH_dQD;dH_dx';dH_dvbi]; +dH_dpdbi=sparse(length(Loadi),2*Busnum); +deltH=[dH_dPD;dH_dQD;dH_dx';dH_dvbi;dH_dpdbi]; end \ No newline at end of file