diff --git a/Run_YALMIP.m b/Run_YALMIP.m index 8809520..cedc12d 100644 --- a/Run_YALMIP.m +++ b/Run_YALMIP.m @@ -5,7 +5,7 @@ tic [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,Transfork0]= ... - pf('ieee30.dat'); + pf('E:/算例/柳金Ⅰ926_21671693_2012-09-06/newFIle20.txt'); %% 潮流等式 AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); @@ -33,7 +33,6 @@ dQD=abs(dQ./QD); maxdPQ=max([dPD(dPD<10);dQD(dQD<10)]); [Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD); - %% 定义变量 BalVolt=Volt(Balance); Volt=sdpvar(Busnum,1); diff --git a/admmatrix.m b/admmatrix.m index 0e462e6..16b536f 100644 --- a/admmatrix.m +++ b/admmatrix.m @@ -1,5 +1,5 @@ function [GB,Y,r,c,Angle] = admmatrix(Busnum,Linei,Linej,Liner,Linex,Lineb,Transfori... - ,Transforj,Transforr,Transforx,Transfork0,Branchi,Branchb) + ,Transforj,Transforr,Transforx,Transfork0,Branchi,Branchg,Branchb) %************************************************************************** % 程序功能 : 子函数——形成节点导纳矩阵Y % 编 者: @@ -22,6 +22,7 @@ end %% 接地支路计算 if Branchi>0 % 判断有无接地支路 B = B+sparse(Branchi,Branchi,Branchb,Busnum,Busnum); + G = G+sparse(Branchi,Branchi,Branchg,Busnum,Busnum); end %% 化作极坐标形式 GB = G+B.*1i; %将电导,电纳合并,写成复数形式 diff --git a/openfile2.m b/openfile2.m index 69e5250..53952b6 100644 --- a/openfile2.m +++ b/openfile2.m @@ -1,5 +1,5 @@ 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,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL] = openfile2(FileName) + Transforj,Transforr,Transforx,Transfork0,Branchi,Branchg,Branchb,Pointpoweri,PG,QG,PD,QD,PVi,PVu,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL] = openfile2(FileName) %************************************************************************** % 程序简介 : 子函数——读取潮流计算所需数据 % 编 者: @@ -34,6 +34,7 @@ Lineb = line(:,6); % %% 对地支路参数矩阵 Branchi = ground(:,2); % 对地支路节点号 Branchb = ground(:,4); % 对地支路的导纳 +Branchg = ground(:,3); % 对地支路的导纳 %% 变压器参数矩阵 Transfori = tran(:,3); % 节点i Transforj= tran(:,4); % 节点j @@ -54,6 +55,7 @@ QD=QD/Base; %% PD=sparse(PD); QD=sparse(QD); +%QD=PD*sqrt(1-.85^2)/.85; PG=sparse(PG); QG=sparse(QG); %% pv节点功率参数矩阵 diff --git a/pf.m b/pf.m index 2f2aae7..7527375 100644 --- a/pf.m +++ b/pf.m @@ -1,4 +1,4 @@ -function [kmax,Precision,Uangle,U,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,Transfork0]=pf(FileName) +function [kmax,Precision,Uangle,U,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(FileName) %************************************************************************** % 程序名称:电力系统潮流计算程序 % 程序算法:极坐标下的牛顿-拉夫逊法 @@ -10,10 +10,10 @@ function [kmax,Precision,Uangle,U,Busnum,PVi,PVu,Balance,Y,Angle,P0,Q0,r,c,GB,Li tic; %% 读取数据文件 [Busnum,Balance,PQstandard,Precision,Linei,Linej,Liner,Linex,Lineb,kmax,Transfori ,... - Transforj,Transforr,Transforx,Transfork0,Branchi,Branchb,Pointpoweri,PG,QG,PD,QD,PVi,PVu,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL]= openfile(FileName); + Transforj,Transforr,Transforx,Transfork0,Branchi,Branchg,Branchb,Pointpoweri,PG,QG,PD,QD,PVi,PVu,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL]= openfile2(FileName); %% 形成节点导纳矩阵 [GB,Y,r,c,Angle] = admmatrix(Busnum,Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,... - Transforx,Transfork0,Branchi,Branchb); + Transforx,Transfork0,Branchi,Branchg,Branchb); [P0,Q0,U,Uangle] = Initial(PG,PD,PQstandard,Pointpoweri,QG,QD,Busnum); %求功率不平衡量 %disp('迭代次数i 最大不平衡量'); %% 循环体计算 @@ -26,13 +26,9 @@ for i = 0:kmax if m > Precision %判断不平衡量是否满足精度要求 [Uangle,U] = solvefun(Busnum,Jacob,PQ,Uangle,U); %求解修正方程,更新电压变量 else - %disp(['收敛,迭代次数为',num2str(i),'次']); + disp(['收敛,迭代次数为',num2str(i),'次']); break %若满足精度要求,则计算收敛 end end toc; -PG=PG/PQstandard; -QG=QG/PQstandard; -PD=PD/PQstandard; -QD=QD/PQstandard; -end \ No newline at end of file +end