From 5e0f4c2520f96cc70a0767248543f5ae7e2a7fea Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Jul 2012 19:04:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BA=BF=E6=8D=9F=EF=BC=8C?= =?UTF-8?q?=E5=8F=98=E5=8E=8B=E5=99=A8=E6=8D=9F=E8=80=97=E3=80=82=E6=8D=9F?= =?UTF-8?q?=E8=80=97=E6=8E=92=E5=BA=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: unknown --- Lineloss.asv | 28 ++++++++++++++++++++++++++++ Lineloss.m | 28 ++++++++++++++++++++++++++++ OPF.asv | 36 +++++++++++++++++++++++++----------- OPF.m | 15 ++++++++------- pf.m | 2 +- 5 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 Lineloss.asv create mode 100644 Lineloss.m diff --git a/Lineloss.asv b/Lineloss.asv new file mode 100644 index 0000000..3132a3d --- /dev/null +++ b/Lineloss.asv @@ -0,0 +1,28 @@ +%% 计算线损 +function Lineloss(Linei,Linej,Liner,Linex,Lineb2,Transi,Transj,Transr,Transx,k0,Volt,Angle) +%format long +fprintf('功率为有名值\n'); +fprintf('节点号\t节点号\t有功') +cmpVolt=Volt.*cos(Angle)+1i*Volt.*sin(Angle); +cmpVolt=cmpVolt'; +y0=1i*Lineb2; +%yj0=1i*standardinput(:,7); +yij=1./(Liner+1i*Linex); +%% 线路损耗 +Sij=cmpVolt(Linei).*conj( cmpVolt(Linei) .* y0 + ( cmpVolt(Linei)- cmpVolt(Linej) ).*yij ); +Sji=cmpVolt(Linej).*conj( cmpVolt(Linej) .*y0 + ( cmpVolt(Linej)- cmpVolt(Linei) ).*yij ); +%Sij1==Sij2 +deltLineS=Sij+Sji; +dispLineloss=[Linei Linej real(deltLineS)*100 imag(deltLineS)*100]; +%full(dispLineloss) +dispLineloss=sortrows(dispLineloss,-3); +full(dispLineloss) +%% 以下是变压器损耗 +yij=1./(Transr+1i*Transx); +Sij=cmpVolt(Transi)./k0.*conj( ( cmpVolt(Transi)./k0- cmpVolt(Transj) ).*yij ); +Sji=cmpVolt(Transj).*conj( ( cmpVolt(Transj)- cmpVolt(Transi)./k0 ).*yij ); +deltTransS=Sij+Sji; +dispTransloss=[Transi Transj real(deltTransS)*100 imag(deltTransS)*100]; +dispTransloss=sortrows(dispTransloss,-3); +full(dispTransloss) +end \ No newline at end of file diff --git a/Lineloss.m b/Lineloss.m new file mode 100644 index 0000000..4512077 --- /dev/null +++ b/Lineloss.m @@ -0,0 +1,28 @@ +%% 计算线损 +function Lineloss(Linei,Linej,Liner,Linex,Lineb2,Transi,Transj,Transr,Transx,k0,Volt,Angle) +%format long +fprintf('功率为有名值\n'); +fprintf('节点号\t节点号\t有功损耗 MW\t无功损耗 MVar') +cmpVolt=Volt.*cos(Angle)+1i*Volt.*sin(Angle); +cmpVolt=cmpVolt'; +y0=1i*Lineb2; +%yj0=1i*standardinput(:,7); +yij=1./(Liner+1i*Linex); +%% 线路损耗 +Sij=cmpVolt(Linei).*conj( cmpVolt(Linei) .* y0 + ( cmpVolt(Linei)- cmpVolt(Linej) ).*yij ); +Sji=cmpVolt(Linej).*conj( cmpVolt(Linej) .*y0 + ( cmpVolt(Linej)- cmpVolt(Linei) ).*yij ); +%Sij1==Sij2 +deltLineS=Sij+Sji; +dispLineloss=[Linei Linej real(deltLineS)*100 imag(deltLineS)*100]; +%full(dispLineloss) +dispLineloss=sortrows(dispLineloss,-3); +full(dispLineloss) +%% 以下是变压器损耗 +yij=1./(Transr+1i*Transx); +Sij=cmpVolt(Transi)./k0.*conj( ( cmpVolt(Transi)./k0- cmpVolt(Transj) ).*yij ); +Sji=cmpVolt(Transj).*conj( ( cmpVolt(Transj)- cmpVolt(Transi)./k0 ).*yij ); +deltTransS=Sij+Sji; +dispTransloss=[Transi Transj real(deltTransS)*100 imag(deltTransS)*100]; +dispTransloss=sortrows(dispTransloss,-3); +full(dispTransloss) +end \ No newline at end of file diff --git a/OPF.asv b/OPF.asv index bc967f6..a9210de 100644 --- a/OPF.asv +++ b/OPF.asv @@ -1,22 +1,30 @@ 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('ieee10471PG.dat'); +%pf('ieee118PG.dat'); -%PVi电压节点序号 -%PVu电压节点电压标幺值 +%% 计算功率因数 +%atan(PD(QD~=0 | PD~=0)./QD(QD~=0 | PD~=0)); Volt; UAngel*180/3.1415926; %% 通过潮流计算PG AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); -dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt'; -PG0() -%% 初值 +PGBal=diag(Volt)*Y.*cos(AngleIJ)*Volt'; + +%% 初值-即测量值 PG0=PG; PD0=PD; -[Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wG,wD,PD,PD0,randPDind,Loadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD); + +PDReal=PD;%真值 +%PD0(12)=PD0(12)+0.001; +%% +PG0(Balance)=PGBal(Balance); +%% +[Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wG,wD,PD,PD0,randPDind,Loadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD,PD); Gap=(Init_L*Init_Z'-Init_U*Init_W'); KK=0; plotGap=zeros(1,50); @@ -72,9 +80,15 @@ fprintf(' ObjectiveFun(PG,PG0,PGi,PD,PD0,wG,wD,Loadi) DrawGap(plotGap); %% -Volt=full(Volt'); -PD=full(PD); +%Volt=full(Volt'); +%PD=full(PD); %% 统计PD误差 -abs( (PD(Loadi)-PD0(Loadi))./PD0(Loadi) ) +% absPDLoad=abs( (PD(Loadi)-PD0(Loadi))./PD0(Loadi) ); +absPDLoad=abs( (PD(Loadi)-PDReal(Loadi))./PDReal(Loadi) ); +maxPDError=max(absPDLoad); +disp('index'); +Loadi(absPDLoad==maxPDError); +%% 计算线损 +Lineloss(Linei,Linej,Liner,Linex,Lineb2,Transfori,Transj,Transx,k0,Volt,Angle) toc diff --git a/OPF.m b/OPF.m index e740f7a..5828b3d 100644 --- a/OPF.m +++ b/OPF.m @@ -1,8 +1,8 @@ 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\最小化潮流\最小潮流算例\原始\standard.txt'); +[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('D:\Project\最小化潮流\最小潮流算例\原始\津头站津视922(3-1)_0.5_120%.txt'); %pf('D:\Project\最小化潮流\最小潮流算例\仙海919.txt'); %pf('c:/file31.txt'); %pf('ieee118PG.dat'); @@ -77,7 +77,7 @@ while(abs(Gap)>Precision) KK=KK+1; end fprintf('迭代次数%d\n',KK); -ObjectiveFun(PG,PG0,PGi,PD,PD0,wG,wD,Loadi) +fprintf('目标值%f\n',full(ObjectiveFun(PG,PG0,PGi,PD,PD0,wG,wD,Loadi))); DrawGap(plotGap); %% %Volt=full(Volt'); @@ -85,9 +85,10 @@ DrawGap(plotGap); %% 统计PD误差 % absPDLoad=abs( (PD(Loadi)-PD0(Loadi))./PD0(Loadi) ); absPDLoad=abs( (PD(Loadi)-PDReal(Loadi))./PDReal(Loadi) ); -maxPDError=max(absPDLoad) -disp('index') -Loadi(absPDLoad==maxPDError) - +maxPDError=max(absPDLoad); +disp('index'); +Loadi(absPDLoad==maxPDError); +%% 计算线损 +Lineloss(Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,Transforx,Transfork0,Volt,UAngel); toc diff --git a/pf.m b/pf.m index 9c4846f..52a09fb 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]=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,Transfork0]=pf(FileName) %************************************************************************** % 程序名称:电力系统潮流计算程序 % 程序算法:极坐标下的牛顿-拉夫逊法