diff --git a/FormG.m b/FormG.m index 49dba17..9add28b 100644 --- a/FormG.m +++ b/FormG.m @@ -11,5 +11,7 @@ Mat_G=[ PDbi; QDbi; (1-Vbi).*Vbi; + (1-PDbi).*PDbi; + (1-QDbi).*QDbi; ]; end \ No newline at end of file diff --git a/FormLw.m b/FormLw.m index 69afbe1..4484aa1 100644 --- a/FormLw.m +++ b/FormLw.m @@ -1,11 +1,7 @@ function Lw=FormLw(Mat_G,Init_U,GenU,Busnum,PVQU,PD,PD0,QD0,Loadi,KK,PF,noDataTransCapacity) KK=999; -%PU=GenU(:,2);%发电机有功上界 - VoltU=(1.1)*ones(1,Busnum); -%VoltU=10*ones(1,Busnum); PDU=PD0(Loadi); -% PDU=noDataTransCapacity; PDU(PDU>0)=1.200*PDU(PDU>0); PDU(PDU<0)=0.800*PDU(PDU<0); PDU(PDU==0)=0.400; @@ -13,7 +9,6 @@ realPD=PD0(Loadi); indPD=find(realPD>0); PDU(indPD(3:12:end))=1.55*realPD(indPD(3:12:end)); PDU(indPD(9:12:end))=1.05*realPD(indPD(9:12:end)); -%PDU=10*ones(length(Loadi),1); QDU=QD0(Loadi); QDU(QDU>0)=1.200*QDU(QDU>0); QDU(QDU<0)=0.800*QDU(QDU<0); @@ -22,11 +17,11 @@ 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)); -% PF=0.85; -% QDU=1.0*PD(Loadi).*sqrt(1 -PF.^2)./PF; t1=([0*PDU',100*ones(1,length(PDU)),0*QDU',100*ones(1,length(QDU)),0*VoltU,100*ones(1,length(VoltU)),1*ones(1,Busnum+length(Loadi)*2)])'; t1=[t1; sparse(ones(Busnum,1)); + sparse(ones(length(Loadi),1)); + sparse(ones(length(Loadi),1)); ]; t2=Mat_G+Init_U'-t1; Lw=t2; diff --git a/FormLz.m b/FormLz.m index 1559ad5..4df63fb 100644 --- a/FormLz.m +++ b/FormLz.m @@ -24,6 +24,8 @@ QDL(indQD(9:12:end))=0.95*realQD(indQD(9:12:end)); t1=([-100*ones(1,length(PDL)),0*PDL',-100*ones(1,length(QDL)),0*QDL',-100*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum+length(Loadi)*2)])'; t1=[t1; sparse(0*ones(Busnum,1)); + sparse(0*ones(length(Loadi),1)); + sparse(0*ones(length(Loadi),1)); ]; t2=Mat_G-Init_L'-t1; Lz=t2; diff --git a/OPF.m b/OPF.m index 43044a4..cc068d5 100644 --- a/OPF.m +++ b/OPF.m @@ -70,7 +70,7 @@ while(abs(Gap)>Precision) %% 形成等式约束的雅克比 deltH=func_deltH(Busnum,Volt,PVi,Y,PGi,UAngel,r,c,Angle,Loadi); %% 形成不等式约束的雅克比 - deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD,Vbi); + deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD,Vbi,PDbi,QDbi); %% L_1Z=diag(Init_Z./Init_L); U_1W=diag(Init_W./Init_U); @@ -79,7 +79,7 @@ while(abs(Gap)>Precision) %% 形成ddHy ddh=func_ddh(Volt,Init_Y,Busnum,PVi,PGi,Y,UAngel,r,c,Angle,Loadi,ContrlCount); %% 开始构建ddg - ddgzw=func_ddg(PGi,PVi,Busnum,ContrlCount,RestraintCount,Loadi,PD,QD,Init_Z,Init_W); + ddgzw=func_ddg(Busnum,ContrlCount,Loadi,Init_Z,Init_W); %% 开始构建deltF deltF=func_deltF(PG,QG,PVi,PGi,wPG,wQG,wPD,wQD,PG0,QG0,PD0,PD,QD,QD0,Busnum,Loadi); %% 形成方程矩阵 diff --git a/OPF_Init.m b/OPF_Init.m index c5ee40f..7f9ddba 100644 --- a/OPF_Init.m +++ b/OPF_Init.m @@ -3,7 +3,7 @@ Loadi=find(QD~=0 | PD~=0); %Loadi=[1:Busnum]'; RestraintCount=size(Loadi,1)*4+Busnum*2+Busnum+length(Loadi)*2; %约束条件数,放开所有QD %互补约束数量 -RestraintCount=RestraintCount+Busnum; +RestraintCount=RestraintCount+Busnum+length(Loadi)*2; t_Bal_volt=Volt(Balance); Volt=sparse(1*ones(1,Busnum)); Volt(Balance)=t_Bal_volt; diff --git a/func_ddg.m b/func_ddg.m index 5bbcba2..a75d304 100644 --- a/func_ddg.m +++ b/func_ddg.m @@ -1,8 +1,11 @@ -function ddgzw=func_ddg(PGi,PVi,Busnum,ContrlCount,RestraintCount,Loadi,PD,QD,Init_Z,Init_W) -CCVbiZW=Init_Z(length(Loadi)*4+Busnum*2+1:length(Loadi)*4+Busnum*2+Busnum)+Init_W(length(Loadi)*4+Busnum*2+1:length(Loadi)*4+Busnum*2+Busnum); +function ddgzw=func_ddg(Busnum,ContrlCount,Loadi,Init_Z,Init_W) +CCVbiZW=Init_Z(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+1:length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum)+Init_W(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+1:length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum); +CCPDbiZW=Init_Z(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+1:length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+length(Loadi))+Init_W(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+1:length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+length(Loadi)); +CCQDbiZW=Init_Z(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+length(Loadi)+1:end)+Init_W(length(Loadi)*4+Busnum*2+Busnum+length(Loadi)*2+Busnum+length(Loadi)+1:end); ddgzw=[ sparse(length(Loadi)*2+Busnum*2,ContrlCount); sparse(Busnum,length(Loadi)*2+Busnum*2),sparse(-2*eye(Busnum))*diag(CCVbiZW),sparse(Busnum,length(Loadi)*2); -sparse(length(Loadi)*2,ContrlCount); +sparse(length(Loadi),length(Loadi)*2+Busnum*2+Busnum),sparse(-2*eye(length(Loadi)))*diag(CCPDbiZW),sparse(length(Loadi),length(Loadi)); +sparse(length(Loadi),length(Loadi)*2+Busnum*2+Busnum+length(Loadi)),sparse(-2*eye(length(Loadi)))*diag(CCQDbiZW); ]; end \ No newline at end of file diff --git a/func_deltG.m b/func_deltG.m index c0d6f4c..d1dcb3e 100644 --- a/func_deltG.m +++ b/func_deltG.m @@ -1,4 +1,4 @@ -function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD,Vbi) +function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD,Vbi,PDbi,QDbi) sizeLoadi=size(Loadi,1); %dg3 PD-M*b-t-PD0 dg3_dPD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1)); @@ -13,6 +13,8 @@ dgPDbi_dPD=sparse(sizeLoadi,sizeLoadi); dgQDbi_dPD=sparse(sizeLoadi,sizeLoadi); %互补约束 dgCCVbi_dPD=sparse(length(Loadi),Busnum); +dgCCPDbi_dPD=sparse(length(Loadi),length(Loadi)); +dgCCQDbi_dPD=sparse(length(Loadi),length(Loadi)); %% dg3_dQD=sparse(length(Loadi),length(Loadi)); dg32_dQD=dg3_dQD; @@ -25,6 +27,8 @@ dgPDbi_dQD=sparse(sizeLoadi,sizeLoadi); dgQDbi_dQD=sparse(sizeLoadi,sizeLoadi); %互补约束 dgCCVbi_dQD=sparse(length(Loadi),Busnum); +dgCCPDbi_dQD=sparse(length(Loadi),length(Loadi)); +dgCCQDbi_dQD=sparse(length(Loadi),length(Loadi)); %% dg3_dx=sparse(2*Busnum,sizeLoadi); dg32_dx=dg3_dx; @@ -39,6 +43,8 @@ dgPDbi_dx=sparse(2*Busnum,sizeLoadi); dgQDbi_dx=sparse(2*Busnum,sizeLoadi); %互补约束 dgCCVbi_dx=sparse(Busnum*2,Busnum); +dgCCPDbi_dx=sparse(Busnum*2,length(Loadi)); +dgCCQDbi_dx=sparse(Busnum*2,length(Loadi)); %% dg3_dvbi=sparse(Busnum,sizeLoadi); dg32_dvbi=dg3_dvbi; @@ -51,6 +57,8 @@ dgPDbi_dvbi=sparse(Busnum,sizeLoadi); dgQDbi_dvbi=sparse(Busnum,sizeLoadi); %互补约束 dgCCVbi_dvbi=sparse(diag(1-2*Vbi));%互补约束为(1-Vbi).*Vbi +dgCCPDbi_dvbi=sparse(Busnum,length(Loadi)); +dgCCQDbi_dvbi=sparse(Busnum,length(Loadi)); %% dg3_dPDbi=sparse(-eye(sizeLoadi)); dg32_dPDbi=sparse(eye(sizeLoadi)); @@ -63,11 +71,13 @@ dgPDbi_dPDbi=sparse(eye(length(Loadi))); dgQDbi_dPDbi=sparse(zeros(length(Loadi))); %互补约束 dgCCVbi_dPDbi=sparse(length(Loadi),Busnum); +dgCCPDbi_dPDbi=sparse(diag(1-2*PDbi)); +dgCCQDbi_dPDbi=sparse(length(Loadi),length(Loadi)); %% -dg3_dQDbi=sparse(-eye(sizeLoadi)); -dg32_dQDbi=sparse(eye(sizeLoadi)); -dg4_dQDbi=sparse(length(Loadi),length(Loadi)); -dg42_dQDbi=dg4_dPDbi; +dg3_dQDbi=sparse(length(Loadi),length(Loadi)); +dg32_dQDbi=dg3_dQDbi; +dg4_dQDbi=sparse(-eye(sizeLoadi)); +dg42_dQDbi=sparse(eye(sizeLoadi)); dg5_dQDbi=sparse(length(Loadi),Busnum); dg6_dQDbi=sparse(length(Loadi),Busnum); dg7_dQDbi=sparse(length(Loadi),Busnum); @@ -75,13 +85,15 @@ dgPDbi_dQDbi=sparse(zeros(length(Loadi))); dgQDbi_dQDbi=sparse(eye(length(Loadi))); %互补约束 dgCCVbi_dQDbi=sparse(length(Loadi),Busnum); +dgCCPDbi_dQDbi=sparse(length(Loadi),length(Loadi)); +dgCCQDbi_dQDbi=sparse(diag(1-2*QDbi)); %% -deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dgPDbi_dPD,dgQDbi_dPD,dgCCVbi_dPD; - dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dgPDbi_dQD,dgQDbi_dQD,dgCCVbi_dQD; - dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx,dgPDbi_dx,dgQDbi_dx,dgCCVbi_dx; - dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi,dgPDbi_dvbi,dgQDbi_dvbi,dgCCVbi_dvbi; - dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi,dgPDbi_dPDbi,dgQDbi_dPDbi,dgCCVbi_dPDbi; - dg3_dQDbi,dg32_dQDbi,dg4_dQDbi,dg42_dQDbi,dg5_dQDbi,dg6_dQDbi,dg7_dQDbi,dgPDbi_dQDbi,dgQDbi_dQDbi,dgCCVbi_dQDbi; +deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dgPDbi_dPD,dgQDbi_dPD,dgCCVbi_dPD,dgCCPDbi_dPD,dgCCQDbi_dPD; + dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dgPDbi_dQD,dgQDbi_dQD,dgCCVbi_dQD,dgCCPDbi_dQD,dgCCQDbi_dQD; + dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx,dgPDbi_dx,dgQDbi_dx,dgCCVbi_dx,dgCCPDbi_dx,dgCCQDbi_dx; + dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi,dgPDbi_dvbi,dgQDbi_dvbi,dgCCVbi_dvbi,dgCCPDbi_dvbi,dgCCQDbi_dvbi; + dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi,dgPDbi_dPDbi,dgQDbi_dPDbi,dgCCVbi_dPDbi,dgCCPDbi_dPDbi,dgCCQDbi_dPDbi; + dg3_dQDbi,dg32_dQDbi,dg4_dQDbi,dg42_dQDbi,dg5_dQDbi,dg6_dQDbi,dg7_dQDbi,dgPDbi_dQDbi,dgQDbi_dQDbi,dgCCVbi_dQDbi,dgCCPDbi_dQDbi,dgCCQDbi_dQDbi; ]; end \ No newline at end of file