diff --git a/DrawGap.asv b/DrawGap.asv deleted file mode 100644 index c9d0645..0000000 --- a/DrawGap.asv +++ /dev/null @@ -1,6 +0,0 @@ -function DrawGap(plotGap) -x=find(plotGap); -ts=size(x,2); - - -end \ No newline at end of file diff --git a/FormAA.asv b/FormAA.asv deleted file mode 100644 index 0d82338..0000000 --- a/FormAA.asv +++ /dev/null @@ -1,12 +0,0 @@ -function AA=FormAA(L_1Z,deltG,U_1W,Hcoma,deltH) -tOnes=eye(14); -tZeros=zeros(14); -AA=[ - tOnes,L_1Z,tZeros,tZeros,tZeros,zeros(14,10); - tZeros,tOnes,tZeros,tZeros,-deltG',zeros(14,10); - tZeros,tZeros,tOnes,U_1W,tZeros,zeros(14,10); - tZeros,tZeros,tZeros,tOnes,deltG,zeros(14,10); - tZeros,tZeros,tZeros,tZeros,Hcoma,deltH; - zeros(10,14),zeros(10,14),zeros(10,14),zeros(10,14),deltH',zeros(10,10); - ]; -end \ No newline at end of file diff --git a/FormAlphaP.asv b/FormAlphaP.asv deleted file mode 100644 index 3a8f5d9..0000000 --- a/FormAlphaP.asv +++ /dev/null @@ -1,7 +0,0 @@ -function AlphaP=FormAlphaP(Init_L,deltL,Init_U,deltU) -ti=deltL(delt) -t1=-Init_L./deltL'; -t2=-Init_U./deltU'; -t3=[t1,t2]; -t4=t3() -end \ No newline at end of file diff --git a/FormG.asv b/FormG.asv deleted file mode 100644 index fba473d..0000000 --- a/FormG.asv +++ /dev/null @@ -1,11 +0,0 @@ -function Mat_G=FormG(Volt,PVi,PGi,PG,QG,PD,QD,Loadi) - -Mat_G=[ - PG(PGi); - QG(PVi); - sparse(PD(Loadi)); - sparse(QD(Loadi)); - Volt'; - - ]; -end \ No newline at end of file diff --git a/FormG.m b/FormG.m index 7cf7e72..3c8ab70 100644 --- a/FormG.m +++ b/FormG.m @@ -1,10 +1,10 @@ -function Mat_G=FormG(Volt,PVi,PGi,PG,QG,PD,QD,Loadi,Vbi) +function Mat_G=FormG(Volt,PD,QD,Loadi,Vbi,mVolt,RealVolt,bigM,sigma) Mat_G=[ sparse(PD(Loadi)); sparse(QD(Loadi)); - Volt'; - Volt'; + Volt'-bigM*Vbi-mVolt'-sigma*RealVolt'; + Volt'+bigM*Vbi+mVolt'+sigma*RealVolt'; Vbi; ]; end \ No newline at end of file diff --git a/FormH.asv b/FormH.asv deleted file mode 100644 index 5983fcf..0000000 --- a/FormH.asv +++ /dev/null @@ -1,31 +0,0 @@ -function Mat_H=FormH(Busnum,GB,AngleIJMat,Volt,PG,PD,QG,QD,Y) -t1=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat); -t2=Volt'*Volt; -t3=t1.*t2; -t4=sum(-t3,2);%P -t5=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat); -t6=t2.*t5; -t7=sum(-t6,2);%Q -t8=PG-PD; -t9=QG-QD; -%Mat_H=([(PG-PD)',(QG-QD)'])'+([t4',t7'])'; -Mat_H(1:2:2*Busnum)=t8(1:Busnum)+t4(1:Busnum); -Mat_H(2:2:2*Busnum)=t9(1:Busnum)+t7(1:Busnum); -Mat_H=Mat_H'; -%% -QDcos=textread('300glys.txt'); -t=QD(PD==0 &&); -aa=QD; -QD(QD~=0)=PD(QD~=0)./tan(QDcos); -QD(PD==0)=t; -%% -%%%%一下是学姐给的公式 -AngleIJ=AngleIJMat-angle(GB); -%dP=PG-PD-diag(Volt)*Y*cos(AngleIJ)*Volt'; -dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt'; -dQ=QG-QD-diag(Volt)*Y.*sin(AngleIJ)*Volt'; -%Mat_H(1:2:2*Busnum)=dP(1:Busnum);暂时改一下 20111227 -%Mat_H(2:2:2*Busnum)=dQ(1:Busnum);暂时改一下 20111227 -Mat_H=[dP;dQ;]; - -end \ No newline at end of file diff --git a/FormLw.m b/FormLw.m index 01dfdbd..3a08974 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) +function Lw=FormLw(Mat_G,Init_U,Busnum,PD0,QD0,Loadi) 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,9 +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)); -% PF=0.85; -% QDU=1.0*PD(Loadi).*sqrt(1 -PF.^2)./PF; -t1=([PDU',QDU',VoltU,VoltU,1*ones(1,Busnum)])'; +t1=([PDU',QDU',0*VoltU,50*ones(1,Busnum),1*ones(1,Busnum)])'; t2=Mat_G+Init_U'-t1; Lw=t2; diff --git a/FormLz.m b/FormLz.m index b2b8984..d6c46f8 100644 --- a/FormLz.m +++ b/FormLz.m @@ -1,8 +1,5 @@ -function Lz=FormLz(Mat_G,Init_L,GenL,Busnum,PVQL,PD,PD0,QD0,Loadi,KK,PF) -KK=999; - +function Lz=FormLz(Mat_G,Init_L,Busnum,PD0,QD0,Loadi) VoltL=(0.9)*ones(1,Busnum); -%VoltL=-10*ones(1,Busnum); PDL=PD0(Loadi); PDL(PDL>0)=0.800*PDL(PDL>0); PDL(PDL<0)=1.200*PDL(PDL<0); @@ -11,7 +8,6 @@ realPD=PD0(Loadi); indPD=find(realPD>0); PDL(indPD(3:12:end))=0.95*realPD(indPD(3:12:end)); PDL(indPD(9:12:end))=0.45*realPD(indPD(9:12:end)); -%PDL=-10*ones(length(Loadi),1); QDL=QD0(Loadi); QDL(QDL>0)=0.800*QDL(QDL>0); QDL(QDL<0)=1.200*QDL(QDL<0); @@ -20,9 +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)); -% QDL=0*PD(Loadi).*sqrt((1-PF.^2))./PF; -t1=([PDL',QDL',VoltL,VoltL,0*ones(1,Busnum)])'; +t1=([PDL',QDL',-5000*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum)])'; t2=Mat_G-Init_L'-t1; Lz=t2; - end \ No newline at end of file diff --git a/FormYY.asv b/FormYY.asv deleted file mode 100644 index 85d2a13..0000000 --- a/FormYY.asv +++ /dev/null @@ -1,5 +0,0 @@ -function FormYY(Init_L,Lul.Lz,Init_U,Luu,Lw,Lz,LxComa) -t=[ - - -] -end \ No newline at end of file diff --git a/Modification.asv b/Modification.asv deleted file mode 100644 index ec3486f..0000000 --- a/Modification.asv +++ /dev/null @@ -1,18 +0,0 @@ -function [Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel]=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) -AlphaP=FormAlphaP(Init_L,deltL,Init_U,deltU); -fprintf('AlphaP %f\n',AlphaP); -AlphaD=FormAlphaD(Init_Z,deltZ,Init_W,deltW); -fprintf('AlphaD %f\n',AlphaD); - -Init_Z=Init_Z+AlphaD*deltZ'; -Init_L=Init_L+AlphaP*deltL'; -Init_W=Init_W+AlphaD*deltW'; -Init_U=Init_U+AlphaP*deltU'; -Init_Y=Init_Y+AlphaD*deltY'; -PG(PVi)=PG(PGi)+deltX(size(PGi,1)); -QG(PVi)=QG(PVi)+deltX(size(PGi,1)+1,1:(size(PVi,1)+size(PGi,1))); -t=deltX(size(PVi,1)+size(PGi,1)+1,ContrlCount)'; -t(2*Balance-1)=0; -Volt=Volt+AlphaP*t(2:2:2*Busnum); -UAngel=UAngel+AlphaP*t(1:2:2*Busnum); -end \ No newline at end of file diff --git a/OPF.m b/OPF.m index e84a22d..bf94e32 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'); @@ -47,10 +47,16 @@ plotGap=zeros(1,60); ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum; kmax=60; Precision=Precision/1; +sigma=0.03; %% 加误差 -PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),1)); -QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),1)); +PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +mPD=PD0; +mQD=QD0; +RealVolt=Volt0; +mVolt=Volt0.*(1+normrnd(0,sigma,1,length(Volt0))); Vbi=sparse(0.1*ones(Busnum,1)); +bigM=50; while(abs(Gap)>Precision) if KK>kmax break; @@ -77,11 +83,11 @@ 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,Vbi,mVolt,RealVolt,bigM,sigma); 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); - Lw=FormLw(Mat_G,Init_U,GenU,Busnum,PVQU,PD,RealPD,RealQD,Loadi,KK,PF); + Lz=FormLz(Mat_G,Init_L,Busnum,PD0,QD0,Loadi); + Lw=FormLw(Mat_G,Init_U,Busnum,PD0,QD0,Loadi); Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W); YY=FormYY(Lul,Lz,Ly,Luu,Lw,Lx); %% 开始解方程 @@ -93,6 +99,6 @@ while(abs(Gap)>Precision) Gap=(Init_L*Init_Z'-Init_U*Init_W'); KK=KK+1; end -fprintf('%f\n',sum(full(Vbi))); +fprintf('目标函数: %f\n',sum(full(Vbi))); toc diff --git a/admmatrix.asv b/admmatrix.asv deleted file mode 100644 index 1896345..0000000 --- a/admmatrix.asv +++ /dev/null @@ -1,31 +0,0 @@ -function [G,B,GB,Y,r,c,Angle] = admmatrix(Busnum,Linei,Linej,Liner,Linex,Lineb,Transfori... - ,Transforj,Transforr,Transforx,Transfork0,Branchi,Branchb) -%************************************************************************** -% 程序功能 : 子函数——形成节点导纳矩阵Y -% 编 者: -% 编制时间:2010.12 -%************************************************************************** -%% 支路导纳计算 -G = -sparse(Linei,Linej,Liner./(Liner.^2+Linex.^2),Busnum,Busnum) - sparse(Linej,Linei,Liner./(Liner.^2+Linex.^2),Busnum,Busnum); -G = G - sparse(1:Busnum,1:Busnum,sum(G,2)'); % 计算各线路支路电导 -B = sparse(Linei,Linej,Linex./(Liner.^2+Linex.^2),Busnum,Busnum)+sparse(Linej,Linei,Linex./(Liner.^2+Linex.^2),Busnum,Busnum); -B = B - sparse(1:Busnum,1:Busnum,sum(B,2)')+sparse(Linei,Linei,Lineb,Busnum,Busnum)+sparse(Linej,Linej,Lineb,Busnum,Busnum); -%% 变压器支路计算 -if Transfori>0 - mr = Transforr./(Transforr.^2+Transforx.^2); % 计算变压器支路电导 - mx = -Transforx./(Transforr.^2+Transforx.^2); % 计算变压器支路电纳 - G = G-sparse(Transfori,Transforj,mr./Transfork0,Busnum,Busnum)-sparse(Transforj,Transfori,mr./Transfork0,Busnum,Busnum)... - +sparse(Transfori,Transfori,mr./Transfork0./Transfork0,Busnum,Busnum)+sparse(Transforj,Transforj,mr,Busnum,Busnum); - B = B-sparse(Transfori,Transforj,mx./Transfork0,Busnum,Busnum)-sparse(Transforj,Transfori,mx./Transfork0,Busnum,Busnum)... - +sparse(Transfori,Transfori,mx./Transfork0./Transfork0,Busnum,Busnum)+sparse(Transforj,Transforj,mx,Busnum,Busnum); -end -%% 接地支路计算 -if Branchi>0 % 判断有无接地支路 - B = B+sparse(Branchi,Branchi,Branchb,Busnum,Busnum); -end -%% 化作极坐标形式 -GB = G+B.*1i; %将电导,电纳合并,写成复数形式 -Y = abs(GB); %求节点导纳幅值 -[r,c] = find(Y); -Angle = angle(GB(GB~=0)); %求节点导纳角度 -%Angle=angle(GB); \ No newline at end of file diff --git a/func_deltG.asv b/func_deltG.asv deleted file mode 100644 index 5355449..0000000 --- a/func_deltG.asv +++ /dev/null @@ -1,34 +0,0 @@ -function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD) -sizeLoadi=size(Loadi,1); -dg3_dPD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1)); -dg4_dPD=sparse(size(Loadi,1),length(Loadi)); -dg5_dPD=sparse(size(Loadi,1),Busnum); -dg6_dPD=dg5_dPD; -dg7_dPD=sparse(sizeLoadi,Busnum); -%% -dg3_dQD=sparse(length(Loadi),length(Loadi)); -dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1)); -dg5_dQD=sparse(size(Loadi,1),Busnum); -dg6_dQD=dg5_dQD; -dg7_dQD=sparse(sizeLoadi,Busnum); -%% -dg3_dx=sparse(2*Busnum,sizeLoadi); -dg4_dx=sparse(2*Busnum,length(Loadi)); -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); -%% -dg3_dvbi=sparse(Busnum,sizeLoadi); -dg4_dvbi=sparse(Busnum,length(Loadi)); -dg5_dvbi=sparse(Busnum,Busnum); -dg6_dvbi=sparse(Busnum,Busnum); -dg6_dvbi=sparse(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; -]; -end \ No newline at end of file diff --git a/func_deltG.m b/func_deltG.m index ee01ea9..d439ceb 100644 --- a/func_deltG.m +++ b/func_deltG.m @@ -22,8 +22,8 @@ dg7_dx=sparse(2*Busnum,Busnum); %% dg3_dvbi=sparse(Busnum,sizeLoadi); dg4_dvbi=sparse(Busnum,length(Loadi)); -dg5_dvbi=sparse(Busnum,Busnum); -dg6_dvbi=sparse(Busnum,Busnum); +dg5_dvbi=sparse(-eye(Busnum,Busnum)); +dg6_dvbi=sparse(eye(Busnum,Busnum)); dg7_dvbi=sparse(eye(Busnum,Busnum)); %% deltG=[dg3_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD; diff --git a/modifyadmmatrix.asv b/modifyadmmatrix.asv deleted file mode 100644 index a917e8d..0000000 --- a/modifyadmmatrix.asv +++ /dev/null @@ -1,18 +0,0 @@ -function [new_G,new_B,GB,Y,r,c,Angle] = modifyadmmatrix(ii,jj,G,GG,B,BB) -%************************************************************************** -% 程序功能 : 子函数——形成节点导纳矩阵Y -% 编 者: -% 编制时间:2010.12 -%************************************************************************** -%% 支路导纳计算 -new_G=G; -new_G(ii,jj)=new_G(ii,jj)-G(ii,jj); -new_G(jj,ii)=new_G(jj,ii)-G(jj,ii); -new_G(ii,ii)=new_G(ii,ii)+G(ii,jj); -new_G(jj,jj)=new_G(jj,jj)+G(ii,jj); - -%% 化作极坐标形式 -GB = G+B.*1i; %将电导,电纳合并,写成复数形式 -Y = abs(GB); %求节点导纳幅值 -[r,c] = find(Y); -Angle = angle(GB(GB~=0)); %求节点导纳角度 \ No newline at end of file diff --git a/openfile.asv b/openfile.asv deleted file mode 100644 index 5095547..0000000 --- a/openfile.asv +++ /dev/null @@ -1,64 +0,0 @@ -function [Busnum,Balance,PQstandard,Precision,Linei,Linej,Liner,Linex,Lineb,kmax,Transfori ,... - Transforj,Transforr,Transforx,Transfork0,Branchi,Branchb,Pointpoweri,PG,QG,PD,QD,PVi,PVu,Gen,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL] = openfile(FileName) -%************************************************************************** -% 程序简介 : 子函数——读取潮流计算所需数据 -% 编 者: -% 编制时间 :2010.12 -%************************************************************************** -data = dlmread(FileName); % 一次读入全部数据 -Busnum= data(1,1); % 节点数 -PQstandard = data(1,3); % 基准容量 -kmax = data(1,4); %最大迭代次数 -Precision = data(2,1); % 精度 -Balance = data(3,2); % 生成1到节点号的列向量 -CenterA=data(1,5); %中心参数 -LineNum=data(1,2); %支路数 -%% 各参数矩阵分块 -zeroRow = find(data(:,1)==0); %查找第一列元素为零的行号 -line = data(zeroRow(1)+1:zeroRow(2)-1,:); % 形成线路参数矩阵 -ground = data(zeroRow(2)+1:zeroRow(3)-1,:); % 形成对地支路参数矩阵 -tran = data(zeroRow(3)+1:zeroRow(4)-1,:); % 形成变压器参数矩阵 -buspq = data(zeroRow(4)+1:zeroRow(5)-1,:); % 形成节点功率参数矩阵 -PV = data(zeroRow(5)+1:zeroRow(6)-1,:); % 形成pv节点功率参数矩阵 -Gen=data(zeroRow(6)+1:zeroRow(7)-1,:); -%% 线路参数矩阵分块 -Linei = line(:,2); % 节点i -Linej= line(:,3); % 节点j -Liner = line(:,4); % 线路电阻 -Linex = line(:,5); % 线路电抗 -Lineb = line(:,6); % b/2 -%% 对地支路参数矩阵 -Branchi = ground(:,1); % 对地支路节点号 -Branchb = ground(:,2); % 对地支路的导纳 -%% 变压器参数矩阵 -Transfori = tran(:,2); % 节点i -Transforj= tran(:,3); % 节点j -Transforr = tran(:,4); % 变压器电阻 -Transforx= tran(:,5); % 变压器电抗 -Transfork0 = tran(:,6); % 变压器变比 -%% 节点功率参数矩阵 -Pointpoweri = buspq(:,1); -PG=buspq(:,2); % 发电机有功 -QG=buspq(:,3); % 发电机无功 -PD=buspq(:,4); % 负荷有功 -QD=buspq(:,5); % 负荷无功 -%% pv节点功率参数矩阵 -PVi = PV(:,1); % PV节点的节点号 -PVu = PV(:,2); % PV节点电压 -PVQL=PV(:,3);%PV节点无功下限 -PVQU=PV(:,4); %PV节点无功上限 -%% 发电机参数 -%GenU=Gen(:,[1 5 6]); -%GenL=Gen(:,[1 7 8]); -GenC=Gen(:,[1 2:4]); -t=GenC(:,2); -GenC(:,2)=GenC(:,4); -GenC(:,4)=t; -t=Gen(:,[1 5]); -%GenL=[t,PVQL(PVi)]; -GenL=t;%有功下界 -t=Gen(:,[1 6]); -%GenU=[t,PVQU(PVi)]; -GenU=t;%有功上届 -PGi=Gen(:,1);%发电机节点号 -end \ No newline at end of file