diff --git a/OPF.m b/OPF.m index c67ef47..e740f7a 100644 --- a/OPF.m +++ b/OPF.m @@ -1,12 +1,14 @@ tic +clc clear [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]= ... -pf('D:\Project\最小化潮流\最小潮流算例\金湖924(2-1)_0.5_85%.txt'); +pf('D:\Project\最小化潮流\最小潮流算例\原始\standard.txt'); +%pf('D:\Project\最小化潮流\最小潮流算例\仙海919.txt'); %pf('c:/file31.txt'); %pf('ieee118PG.dat'); %% 计算功率因数 -atan(PD(QD~=0 | PD~=0)./QD(QD~=0 | PD~=0)) +%atan(PD(QD~=0 | PD~=0)./QD(QD~=0 | PD~=0)); Volt; UAngel*180/3.1415926; %% 通过潮流计算PG @@ -18,7 +20,7 @@ PG0=PG; PD0=PD; PDReal=PD;%真值 -PD0(12)=PD0(12)+0.001; +%PD0(12)=PD0(12)+0.001; %% PG0(Balance)=PGBal(Balance); %% diff --git a/openfile2.asv b/openfile2.asv new file mode 100644 index 0000000..6d24bb0 --- /dev/null +++ b/openfile2.asv @@ -0,0 +1,84 @@ +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) +%************************************************************************** +% 程序简介 : 子函数——读取潮流计算所需数据 +% 编 者: +% 编制时间 :2010.12 +%************************************************************************** +data = dlmread(FileName); % 一次读入全部数据 +zeroRow = find(data(:,1)==0); +Busnum= data(1,1); % 节点数 +PQstandard = data(1,3); % 基准容量 +kmax = data(1,4); %最大迭代次数 +Precision = data(1,4); % 精度 +%Balance = data(3,2); +Balance=data(3:zeroRow(2)-1,2);% 生成1到节点号的列向量 +%CenterA=data(1,5); %中心参数 +%LineNum=data(1,2); %支路数 +Base=data(1,3); +%% 各参数矩阵分块 + +line = data(zeroRow(2)+1:zeroRow(3)-1,:); % 形成线路参数矩阵 +ground = data(zeroRow(5)+1:zeroRow(6)-1,:); % 形成对地支路参数矩阵 +tran = data(zeroRow(3)+1:zeroRow(4)-1,:); % 形成变压器参数矩阵 +buspq = data(zeroRow(8)+1:zeroRow(9)-1,:); % 形成节点功率参数矩阵 +PV = data(zeroRow(11)+1:zeroRow(12)-1,:); % 形成pv节点功率参数矩阵 +GenP=data(zeroRow(9)+1:zeroRow(10)-1,:); +GenQ=data(zeroRow(11)+1:zeroRow(12)-1,:); +%% 线路参数矩阵分块 +Linei = line(:,2); % 节点i +Linej= line(:,3); % 节点j +Liner = line(:,4); % 线路电阻 +Linex = line(:,5); % 线路电抗 +Lineb = line(:,6); % b/2 +%% 对地支路参数矩阵 +Branchi = ground(:,2); % 对地支路节点号 +Branchb = ground(:,4); % 对地支路的导纳 +%% 变压器参数矩阵 +Transfori = tran(:,3); % 节点i +Transforj= tran(:,4); % 节点j +Transforr = tran(:,5); % 变压器电阻 +Transforx= tran(:,6); % 变压器电抗 +Transfork0 = tran(:,7); % 变压器变比 +%% 节点功率参数矩阵 +Pointpoweri = buspq(:,3); +PG=buspq(:,5); % 发电机有功 +QG=buspq(:,6); % 发电机无功 +PD=buspq(:,7); % 负荷有功 +QD=buspq(:,8); % 负荷无功 +%%除以基值 +PG=PG/Base; +QG=QG/Base; +PD=PD/Base; +QD=QD/Base; +%% +PD=sparse(PD); +QD=sparse(QD); +PG=sparse(PG); +QG=sparse(QG); +%% pv节点功率参数矩阵 +PVi = PV(:,3); % PV节点的节点号 +PVu = PV(:,5); % PV节点电压 +PVQL=PV(:,6);%PV节点无功下限 +PVQL=PVQL/Base; +PVQU=PV(:,7); %PV节点无功上限 +PVQU=PVQU/Base; +%% 发电机参数 +%GenU=Gen(:,[1 5 6]); +%GenL=Gen(:,[1 7 8]); +GenC=GenP(:,[3 7:9]); +t=GenC(:,2); +GenC(:,2)=GenC(:,4); +GenC(:,4)=t; +%%%%%%%%%%%%%%%%%%%% +%GenC(:,2:4)=100*GenC(:,2:4); +t=GenP(:,[3 5]); +%GenL=[t,PVQL(PVi)]; +GenL=t;%有功下界 +GenL(:,2)=GenL(:,2)/Base; +t=GenP(:,[3 6]); +%GenU=[t,PVQU(PVi)]; +GenU=t;%有功上届 +GenU(:,2)=GenU(:,2)/Base; +PGi=GenP(:,3);%发电机节点号 +end \ No newline at end of file diff --git a/openfile2.m b/openfile2.m new file mode 100644 index 0000000..69e5250 --- /dev/null +++ b/openfile2.m @@ -0,0 +1,84 @@ +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) +%************************************************************************** +% 程序简介 : 子函数——读取潮流计算所需数据 +% 编 者: +% 编制时间 :2010.12 +%************************************************************************** +data = dlmread(FileName); % 一次读入全部数据 +zeroRow = find(data(:,1)==0); +Busnum= data(1,1); % 节点数 +PQstandard = data(1,3); % 基准容量 +kmax = 60;%data(1,4); %最大迭代次数 +Precision = data(1,4); % 精度 +%Balance = data(3,2); +Balance=data(3:zeroRow(2)-1,2);% 生成1到节点号的列向量 +CenterA=0.1;%data(1,5); %中心参数 +LineNum=data(1,2); %支路数 +Base=data(1,3); +%% 各参数矩阵分块 + +line = data(zeroRow(2)+1:zeroRow(3)-1,:); % 形成线路参数矩阵 +ground = data(zeroRow(5)+1:zeroRow(6)-1,:); % 形成对地支路参数矩阵 +tran = data(zeroRow(3)+1:zeroRow(4)-1,:); % 形成变压器参数矩阵 +buspq = data(zeroRow(8)+1:zeroRow(9)-1,:); % 形成节点功率参数矩阵 +PV = data(zeroRow(11)+1:zeroRow(12)-1,:); % 形成pv节点功率参数矩阵 +GenP=data(zeroRow(9)+1:zeroRow(10)-1,:); +GenQ=data(zeroRow(11)+1:zeroRow(12)-1,:); +%% 线路参数矩阵分块 +Linei = line(:,2); % 节点i +Linej= line(:,3); % 节点j +Liner = line(:,4); % 线路电阻 +Linex = line(:,5); % 线路电抗 +Lineb = line(:,6); % b/2 +%% 对地支路参数矩阵 +Branchi = ground(:,2); % 对地支路节点号 +Branchb = ground(:,4); % 对地支路的导纳 +%% 变压器参数矩阵 +Transfori = tran(:,3); % 节点i +Transforj= tran(:,4); % 节点j +Transforr = tran(:,5); % 变压器电阻 +Transforx= tran(:,6); % 变压器电抗 +Transfork0 = tran(:,7); % 变压器变比 +%% 节点功率参数矩阵 +Pointpoweri = buspq(:,3); +PG=buspq(:,5); % 发电机有功 +QG=buspq(:,6); % 发电机无功 +PD=buspq(:,7); % 负荷有功 +QD=buspq(:,8); % 负荷无功 +%%除以基值 +PG=PG/Base; +QG=QG/Base; +PD=PD/Base; +QD=QD/Base; +%% +PD=sparse(PD); +QD=sparse(QD); +PG=sparse(PG); +QG=sparse(QG); +%% pv节点功率参数矩阵 +PVi = PV(:,3); % PV节点的节点号 +PVu = PV(:,5); % PV节点电压 +PVQL=PV(:,6);%PV节点无功下限 +PVQL=PVQL/Base; +PVQU=PV(:,7); %PV节点无功上限 +PVQU=PVQU/Base; +%% 发电机参数 +%GenU=Gen(:,[1 5 6]); +%GenL=Gen(:,[1 7 8]); +GenC=GenP(:,[3 7:9]); +t=GenC(:,2); +GenC(:,2)=GenC(:,4); +GenC(:,4)=t; +%%%%%%%%%%%%%%%%%%%% +%GenC(:,2:4)=100*GenC(:,2:4); +t=GenP(:,[3 5]); +%GenL=[t,PVQL(PVi)]; +GenL=t;%有功下界 +GenL(:,2)=GenL(:,2)/Base; +t=GenP(:,[3 6]); +%GenU=[t,PVQU(PVi)]; +GenU=t;%有功上届 +GenU(:,2)=GenU(:,2)/Base; +PGi=GenP(:,3);%发电机节点号 +end \ No newline at end of file diff --git a/pf.m b/pf.m index 9cd1f77..9c4846f 100644 --- a/pf.m +++ b/pf.m @@ -10,7 +10,7 @@ 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,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);