diff --git a/FormG.m b/FormG.m index 7cf7e72..f1857a1 100644 --- a/FormG.m +++ b/FormG.m @@ -1,10 +1,13 @@ -function Mat_G=FormG(Volt,PVi,PGi,PG,QG,PD,QD,Loadi,Vbi) +function Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi) Mat_G=[ sparse(PD(Loadi)); + sparse(PD(Loadi))-0.001; sparse(QD(Loadi)); - Volt'; - Volt'; + sparse(QD(Loadi))-0.001; + Volt'-mVolt'-bigM*Vbi-0.03; + Volt'-mVolt'+bigM*Vbi+0.03; Vbi; + % PDbi; ]; end \ No newline at end of file diff --git a/FormLw.m b/FormLw.m index 1a7b62e..836bf99 100644 --- a/FormLw.m +++ b/FormLw.m @@ -24,7 +24,7 @@ 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=([PDU',QDU',VoltU,VoltU,0*ones(1,Busnum)])'; +t1=([PDU',PDU',QDU',QDU',0*VoltU,100*ones(1,length(VoltU)),1*ones(1,Busnum)])'; t2=Mat_G+Init_U'-t1; Lw=t2; diff --git a/FormLz.m b/FormLz.m index b2b8984..e55519a 100644 --- a/FormLz.m +++ b/FormLz.m @@ -21,7 +21,7 @@ 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)); % QDL=0*PD(Loadi).*sqrt((1-PF.^2))./PF; -t1=([PDL',QDL',VoltL,VoltL,0*ones(1,Busnum)])'; +t1=([PDL',PDL',QDL',QDL',-100*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum)])'; t2=Mat_G-Init_L'-t1; Lz=t2; diff --git a/Modification.m b/Modification.m index b1d91e5..22a10ee 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(3*Busnum+1:end)'; end \ No newline at end of file diff --git a/OPF.m b/OPF.m index 162384d..9a6d5d6 100644 --- a/OPF.m +++ b/OPF.m @@ -6,7 +6,7 @@ clear %% thesis=ForThesis(1,62); [kmax,Precision,UAngel,Volt,Busnum,PVi,PVu,Balance,Y,Angle,P0,Q0,r,c,GB,Linei,Linej,Transfori,Transforj,GenU,GenL,GenC,PG,QG,PD,QD,CenterA,PGi,PVQU,PVQL,Liner,Linex,Lineb,Transforr,Transforx,Branchi,Branchg,Branchb,Transfork0]= ... - pf('C:\lz\结题后重新计算\重构结果\78\木材厂堤Ⅰ线_2229880_2013-10-29\木材厂堤Ⅰ线_2229880_2013-10-29_iPso_newFile.txt'); + pf('E:\算例\东际911_2751267_2012-09-05\newFIle9-2.txt'); % pf('E:\算例\柳金Ⅰ926_21671693_2012-09-06\newFIle16.txt'); %pf('D:\Project\青秀降损项目\最小化潮流\最小潮流算例\原始\津头站津视922(3-1)_0.5_120%.txt'); %pf('D:\Project\最小化潮流\最小潮流算例\仙海919.txt'); @@ -28,6 +28,7 @@ PD0=PD; QD0=QD; Volt0=Volt; UAngel0=UAngel; +rVolt=Volt0; %% PG0(Balance)=PGBal(Balance); PG(Balance)=PGBal(Balance); @@ -48,9 +49,13 @@ ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum; kmax=60; Precision=Precision/1; %% 加误差 -PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),1)); -QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),1)); +sigma=0.01; +PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))'; +bigM=10; Vbi=sparse(ones(Busnum,1)); +PDbi=sparse(ones(length(Loadi),1)); while(abs(Gap)>Precision) if KK>kmax break; @@ -77,7 +82,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,PVi,PGi,PG,QG,PD,QD,Loadi,Vbi); + Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi); Mat_H=FormH(Busnum,Volt,PG,PD,QG,QD,Y,UAngel,r,c,Angle,Loadi); Ly=Mat_H; Lz=FormLz(Mat_G,Init_L,GenL,Busnum,PVQL,PD,RealPD,RealQD,Loadi,KK,PF); @@ -89,7 +94,7 @@ 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 diff --git a/OPF_Init.m b/OPF_Init.m index b475997..b6a756b 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+Busnum*2+Busnum; %约束条件数,放开所有QD +RestraintCount=size(Loadi,1)*4+Busnum*2+Busnum+length(Loadi)*0; %约束条件数,放开所有QD t_Bal_volt=Volt(Balance); Volt=sparse(1*ones(1,Busnum)); Volt(Balance)=t_Bal_volt; diff --git a/func_deltF.m b/func_deltF.m index e98aaa6..df1523c 100644 --- a/func_deltF.m +++ b/func_deltF.m @@ -1,10 +1,9 @@ function deltF=func_deltF(PG,QG,PVi,PGi,wPG,wQG,wPD,wQD,PG0,QG0,PD0,PD,QD,QD0,Busnum,Loadi) -t3=2*wPD.*(PD(Loadi)-PD0(Loadi)); -t4=2*wQD.*(QD(Loadi)-QD0(Loadi)); -deltF=[sparse(t3); - sparse(t4); +deltF=[sparse(length(Loadi),1); + sparse(length(Loadi),1); sparse(2*Busnum,1); - sparse(Busnum,1); + sparse(ones(Busnum,1)); + %sparse(ones(length(Loadi),1)); ]; end \ No newline at end of file diff --git a/func_deltG.asv b/func_deltG.asv index 5355449..294cb69 100644 --- a/func_deltG.asv +++ b/func_deltG.asv @@ -1,19 +1,28 @@ function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD) 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)); +%dg32 PD+M*B+t+PD0 +dg32_dPD=dg3_dPD; dg4_dPD=sparse(size(Loadi,1),length(Loadi)); +dg42_dPD=dg4_dPD; dg5_dPD=sparse(size(Loadi,1),Busnum); dg6_dPD=dg5_dPD; dg7_dPD=sparse(sizeLoadi,Busnum); +dgPD_dPD %% dg3_dQD=sparse(length(Loadi),length(Loadi)); +dg32_dQD=dg3_dQD; dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1)); +dg42_dQD=dg4_dQD; dg5_dQD=sparse(size(Loadi,1),Busnum); dg6_dQD=dg5_dQD; dg7_dQD=sparse(sizeLoadi,Busnum); %% dg3_dx=sparse(2*Busnum,sizeLoadi); +dg32_dx=dg3_dx; dg4_dx=sparse(2*Busnum,length(Loadi)); +dg42_dx=dg4_dx; dg5_dx=[sparse(1:Busnum,1:Busnum,ones(Busnum,1),Busnum,Busnum); sparse(Busnum,Busnum); ]; @@ -21,14 +30,25 @@ dg6_dx=dg5_dx; dg7_dx=sparse(2*Busnum,Busnum); %% dg3_dvbi=sparse(Busnum,sizeLoadi); +dg32_dvbi=dg3_dvbi; dg4_dvbi=sparse(Busnum,length(Loadi)); +dg42_dvbi=dg4_dvbi; dg5_dvbi=sparse(Busnum,Busnum); dg6_dvbi=sparse(Busnum,Busnum); -dg6_dvbi=sparse(Busnum,Busnum); +dg7_dvbi=sparse(eye(Busnum,Busnum)); %% -deltG=[dg3_dPD,dg4_dPD,dg5_dPD,dg6_dPD; - dg3_dQD,dg4_dQD,dg5_dQD,dg6_dQD; - dg3_dx,dg4_dx,dg5_dx,dg6_dx; - dg3_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi; +dg3_dPDbi=sparse(-eye(sizeLoadi)); +dg32_dPDbi=sparse(eye(sizeLoadi)); +dg4_dPDbi=sparse(length(Loadi),length(Loadi)); +dg42_dPDbi=dg4_dPDbi; +dg5_dPDbi=sparse(length(Loadi),Busnum); +dg6_dPDbi=sparse(length(Loadi),Busnum); +dg7_dPDbi=sparse(length(Loadi),Busnum); +%% +deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD; + dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD; + dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx; + dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi; + dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi; ]; end \ No newline at end of file diff --git a/func_deltG.m b/func_deltG.m index ee01ea9..46bc94b 100644 --- a/func_deltG.m +++ b/func_deltG.m @@ -1,34 +1,63 @@ function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD) 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)); +%dg32 PD+M*B+t+PD0 +dg32_dPD=dg3_dPD; dg4_dPD=sparse(size(Loadi,1),length(Loadi)); +dg42_dPD=dg4_dPD; dg5_dPD=sparse(size(Loadi,1),Busnum); dg6_dPD=dg5_dPD; dg7_dPD=sparse(sizeLoadi,Busnum); +dgPDbi_dPD=sparse(sizeLoadi,sizeLoadi); %% dg3_dQD=sparse(length(Loadi),length(Loadi)); +dg32_dQD=dg3_dQD; dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1)); +dg42_dQD=dg4_dQD; dg5_dQD=sparse(size(Loadi,1),Busnum); dg6_dQD=dg5_dQD; dg7_dQD=sparse(sizeLoadi,Busnum); +dgPDbi_dQD=sparse(sizeLoadi,sizeLoadi); %% dg3_dx=sparse(2*Busnum,sizeLoadi); +dg32_dx=dg3_dx; dg4_dx=sparse(2*Busnum,length(Loadi)); +dg42_dx=dg4_dx; dg5_dx=[sparse(1:Busnum,1:Busnum,ones(Busnum,1),Busnum,Busnum); sparse(Busnum,Busnum); ]; dg6_dx=dg5_dx; dg7_dx=sparse(2*Busnum,Busnum); +dgPDbi_dx=sparse(2*Busnum,sizeLoadi); %% dg3_dvbi=sparse(Busnum,sizeLoadi); +dg32_dvbi=dg3_dvbi; dg4_dvbi=sparse(Busnum,length(Loadi)); +dg42_dvbi=dg4_dvbi; dg5_dvbi=sparse(Busnum,Busnum); dg6_dvbi=sparse(Busnum,Busnum); dg7_dvbi=sparse(eye(Busnum,Busnum)); +dgPDbi_dvbi=sparse(Busnum,sizeLoadi); %% -deltG=[dg3_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD; - dg3_dQD,dg4_dQD,dg5_dQD,dg6_dQD,dg7_dQD; - dg3_dx,dg4_dx,dg5_dx,dg6_dx,dg7_dx; - dg3_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi; +dg3_dPDbi=sparse(-eye(sizeLoadi)); +dg32_dPDbi=sparse(eye(sizeLoadi)); +dg4_dPDbi=sparse(length(Loadi),length(Loadi)); +dg42_dPDbi=dg4_dPDbi; +dg5_dPDbi=sparse(length(Loadi),Busnum); +dg6_dPDbi=sparse(length(Loadi),Busnum); +dg7_dPDbi=sparse(length(Loadi),Busnum); +dgPDbi_dPDbi=sparse(eye(length(Loadi))); +%% +% deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dgPDbi_dPD; +% dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dgPDbi_dQD; +% dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx,dgPDbi_dx; +% dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi,dgPDbi_dvbi; +% dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi,dgPDbi_dPDbi; +% ]; +deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD; + dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD; + dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx; + dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi; ]; end \ No newline at end of file diff --git a/func_deltH.m b/func_deltH.m index 5e411a7..33ac2c6 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;]; end \ No newline at end of file diff --git a/func_deltdeltF.m b/func_deltdeltF.m index 83dd880..5fb1ecb 100644 --- a/func_deltdeltF.m +++ b/func_deltdeltF.m @@ -1,11 +1,3 @@ function deltdeltF=func_deltdeltF(PVi,wPG,wQG,wPD,wQD,ContrlCount) - -%ContrlCount=size(PVi,1)+size(PGi,1)+size(wD,1)+Busnum*2; %P,Q,Volt theta这些控制变量数 -C=[wPD' wQD']; -sizeC=size(C,2); -diagC=sparse(1:sizeC,1:sizeC,C,sizeC,sizeC); -deltdeltF=[ - diagC*2,sparse(sizeC,ContrlCount-sizeC); - sparse(ContrlCount-sizeC,ContrlCount); - ]; +deltdeltF=0; end \ No newline at end of file