ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:34.59KB ,
资源ID:10565982      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10565982.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电力系统稳态分析牛顿拉夫逊法.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电力系统稳态分析牛顿拉夫逊法.docx

1、电力系统稳态分析牛顿拉夫逊法0 引言潮流是配电网络分析的基础,用于电网调度、运行分析、操作模拟和设计规划,同时也是电压优化和网络接线变化所要参考的内容。潮流计算通过数值仿真的方法把电力系统的详细运行情况呈现给工作人员,从而便于研究系统在给定条件下的稳态运行特点。随着市场经济的发展,经济利益是企业十分看重的,而线损却是现阶段阻碍企业提高效益的一大因素。及时、准确的潮流计算结果,可以给出配电网的潮流分布、理论线损及其在网络中的分布,从而为配电网的安全经济运行提供参考。从数学的角度来看,牛顿拉夫逊法能有效进行非线性代数方程组的计算且具有二次收敛的特点,具有收敛快、精度高的特点,在输电网中得到广泛应用

2、。随着现代计算机技术的发展,利用编程和相关软件,可以更好、更快地实现配电网功能,本文就是结合牛顿拉夫逊法的基本原理,利用C+程序进行潮流计算,计算结果表明该方法具有良好的收敛性、可靠性及正确性.1 牛顿-拉夫逊法基本介绍1.1 潮流方程对于N个节点的电力网络(地作为参考节点不包括在内),如果网络结构和元件参数已知,则网络方程可表示为: (11)式中,为N*N阶节点导纳矩阵;为N*1维节点电压列向量;为N*1维节点注入电流列向量。如果不计网络元件的非线性,也不考虑移相变压器,则为对称矩阵.电力系统计算中,给定的运行变量是节点注入功率,而不是节点注入电流,这两者之间有如下关系: (12)式中,为节

3、点的注入复功率,是N1维列矢量;为的共轭;是由节点电压的共轭组成的N*N阶对角线矩阵。由(1-1)和(12),可得:上式就是潮流方程的复数形式,是N维的非线性复数代数方程组。将其展开,有: j=1,2,.,N (13)式中, 表示所有和相连的节点,包括。将节点电压用极坐标表示,即令,代入式(13)中则有:故有: i=1,2,,N (14)式(14)是用极坐标表示的潮流方程.而节点功率误差: (15) (1-6)式中:,为节点给定的有功功率及无功功率. 1.2 牛顿拉夫逊法基本原理1。2。1 牛拉法的一般描述牛拉法是把非线性方程式的求解过程变成反复对相应的线性方程式的求解过程,即非线性问题通过线

4、性化逐步近似,这就是牛拉法的核心。下面以非线性方程式的求解过程来进行说明。设电力网络的节点功率方程一般形式如下: (17)式中,为节点注入功率给定值;为对应的物理量和节点电压之间的函数表达式;为节点电压。写成功率偏差的形式: (1-8)应用牛拉法求解如下.在给定的初值处将式(1-8)作一阶泰勒展开:定义为潮流方程的雅克比矩阵,为在处的值,则有:用修正就得到的新值。如果用k表示迭代次数,写成一般的表达式,有: (1-9)对于潮流收敛的情况,应比更接近于解点。收敛条件为: 由简单迭代法收敛性分析的结论知,越接近解点,牛顿-拉夫逊法收敛越快,它具有二阶收敛速度.由图1.1可以直观地了解牛拉法的步骤:

5、图1。1 牛顿-拉夫逊法的几何解释1.2.2 极坐标的牛顿-拉夫逊法在极坐标中,有如下的形式: (1-10)共2nr个方程,状态变量为:共2nr个待求量。r 个PV节点的电压幅值给定,不需求解。潮流雅克比矩阵的维数是(2nr)(2n-r),结构如下:上式右侧的对电压幅值的偏导数项中的电压幅值的阶数减少了1,为使雅克比矩阵的各部分子矩阵具有一致的形式,在实际计算中,常将该项乘以电压幅值,并选取作为待求的修正量,则雅克比矩阵可写成: (1-11)将式(1-10)和(1-11)代入式(19)的修正方程即可求得x的修正量,用它修正x直到为止.将式(111)用下式表示:其中每个字块的计算公式如下:对角元

6、素: (112)非对角元素: (113)2 牛顿法潮流计算步骤2.1 程序流程图在了解了牛拉法的原理之后,明确程序编写思路,如图2.1、2。2所示。 其中图2.1中的“计算电压幅值和角度”步骤较多,单独用图2。2表示出来。图2.1 牛顿法计算潮流的程序框图 图2.2 电压幅值和角度求解步骤框图当不符合收敛的条件“amontk1”时,即认为计算不收敛。具体程序见附录。2.2 计算步骤下面讨论的是极坐标形式的牛顿法求解过程,大致分为以下几个步骤:形成节点导纳矩阵;给各节点电压设初值();根据式(112)、(113)生成雅克比矩阵(H、N、M、L);将节点电压初值代入式(1-5)、式(16),求出修

7、正方程式的常数项向量; 求解修正方程,得到电压幅值和角度;判断是否收敛,若收敛,计算平衡节点和线路功率; 输出结果,并结束。3 算例3。1 系统模型本文以图3。1所示电力网络为例,调用基于牛顿拉夫逊法的C+程序.图3。1 系统模型其中节点4设为平衡节点,电压标幺值为1。05,计算误差为0.000001。3.2 输入与输出将图3.1所示模型的相关数据放在data.dat文件中图3。2 输入节点和支路数据对各个数字含义的解释如下:网络模型有四个节点,四条支路,编号见图3。1。第一个零下面三行数为支路参数,分别表示三条支路的起始和终止节点编号,后面的为电阻、电抗和电纳,电导均为0,例如:1 2 0.

8、1 0。4 0。01528。第二个零下面的为变压器支路,各数字意义同支路参数.接下去三行均为节点参数,分别表示注入有功功率和无功功率。调用text.cpp文件,得到运行结果,见图3。3和图3。4。图3.3 运行结果1图3。4 运行结果23.3 结果分析将上述仿真结果整理为表格3。1、3.2,其中“+表示节点i输出功率给节点j,“-”表示节点j输出功率给i(纵向为i,横向为j)。表3。1节点有功功率输入与输出节点号123410+0。2459810。50.0465632-0.2431600-0.31294930。500040。04821430。31967100表3。2节点无功功率输入与输出节点号1

9、234100。0147080。0290010.13618720.011050500-0.1403630.09701600040。104640。16025500根据表格计算:节点1有功功率:0+0.245981-0.5-0。046563=-0。300582 无功功率:0-0.0147080。0290010.136187=-0。179896节点2有功功率:-0。24316+0+0-0。312949=-0.556109无功功率:0.0110505+0+00。14036=-0.1293095节点3有功功率:0.5+0+0+0=0.5无功功率:0.097016+0+0+0=0.097016节点4有功功率

10、:0。0482143+0。319671+0+0=0.3678853无功功率:0。10464+0。160255+0+0=0.264895根据已知条件,两个PQ节点的注入有功、无功分别为:P1=0.3,Q1=0.18;P2=0.55,Q2=0.13潮流计算误差:可见,误差均在允许范围内。线路损耗: 3。4 结论通过上面的分析与计算,验证了程序的正确性。由于编写过程的不足,线路损耗没能直接计算出来,而是需要手算,比较遗憾。程序在运行过程中,需要区分三种不同的节点,这由子程序保证实现。相比于快速分解法,牛拉法程序较为复杂,但更精确一点,潮流误差较小。4 总结本文基于牛顿-拉夫逊潮流算法的基本原理,利用

11、C+编程计算了一个4节点简单电力网络的潮流,并验证了运行成果,误差在允许范围之内.因为牛拉法计算过程中要不断生成新的雅各布矩阵,所以相对来说占用内存较多,但收敛速度快,这在程序运行过程中可以体现出来。本文程序并不是特别实用,因为真正的电力网络不可能只有几个节点,而且各种电力设备的情况也会复杂很多,因此程序会变得非常大,占用极大内存。但是,我还是通过这次练习,进一步巩固了书本上的理论知识,了解了实际操作的过程步骤.最后,感谢杨伟老师的悉心指导!参考文献1 朱红,赵琦,王庆宝. C+程序设计教程M。 北京:清华大学出版社,2010.2张伯明,陈寿孙,严正。高等电力网络分析M.北京:清华大学出版社,

12、2007。3吴明波。 牛顿-拉夫逊法在潮流计算中的应用J. 内蒙古科技与经济,2011, 21:111112,115。 4明日科技. VisualC+从入门到精通M。 北京:清华大学出版社,2012.5 顾洁,陈章潮,徐蓓。 一种新的配电网潮流算法-改进牛顿拉夫逊法J。华东电力,2000,5:10-12。6 朱文强。 牛顿-拉夫逊法在配电网中的应用J。 水利科技,2004,3:55-56,58.7 刘明波,谢敏,赵维新。 大电网最优潮流计算M。 北京:科学出版社,2010.附录/*/includeiostream.h#includemath。hinclude#includecassert#de

13、fine nodeNumber readParameter6using namespace std;/class powerFlowCalculation /导纳矩阵的计算类private: int readDataAmount; /存放元件参数的读取个数 int balanceNodeindex; /平衡结点号 double balanceNodeVoltage; /平衡节点电压幅值 double balanceNodePowerP; /平衡节点功率 double balanceNodePowerQ; double calculationAccuracy; /计算精度 double read

14、Parameter7; /宏定义 double conductance; double susceptance ; double admittanceAmplitude; double *admittanceAngle; double *lineData; int PVNodeNumber; /PV节点数 double jacobiMatrix; /雅克比矩阵 double PQData; /矩阵,存放PQ节点的数据 double PVData; /矩阵,存放PV节点的数据 double *voltageAmplitude; /电压幅值 double *voltageAngle; /电压角度

15、double *constantVector; /常数向量 double lineConsumeG; double lineConsumeB; ifstream instream;public:/下标的转换int converIndex(int i,int j) int serial; serial=(i1)nodeNumber+j; return serial;/线路的计算void countLineBranch(double para,double*G,doubleB) double GIJ,BIJ; int nii,njj,nij,nji; GIJ=para3/(para3*para3+

16、para4*para4); BIJ=-para4/(para3*para3+para4*para4); nij=converIndex(para1,para2); nji=converIndex(para2,para1); nii=converIndex(para1,para1); njj=converIndex(para2,para2); Gnji=GIJ; Gnij=-GIJ; Bnji=BIJ; Bnij=BIJ; Gnii+=GIJ; Gnjj+=GIJ; Bnii+= (BIJ+para5); Bnjj+= (BIJ+para5); /变压器的计算,规定para1为理想变压器侧,pa

17、ra2为归算阻抗侧void countTranformer(double para,double*G,double*B) double GIJ,BIJ,b_i,b_j; int nii,njj,nij,nji; GIJ=para3/(para3*para3+para4para4); BIJ=-para4/(para3para3+para4*para4); b_i=BIJ(1-para5)/para5/para5; b_j=BIJ*(para51)/para5; nij=converIndex(para1,para2); nji=converIndex(para2,para1); nii=con

18、verIndex(para1,para1); njj=converIndex(para2,para2); Gnij=GIJ/para5; Bnij=BIJ/para5; Gnji=GIJ/para5; Bnji=-BIJ/para5; Gnii+= GIJ/para5; Bnii+= (BIJ/para5+b_i); Gnjj+= GIJ/para5; Bnjj+= (BIJ/para5+b_j); /对地支路的计算void countGroundBranch(double para,doubleG,doubleB) int nii; nii=converIndex(para1,para1);

19、 Gnii+=para2; Bnii+=para3;/导纳矩阵的显示void display() coutendl”导纳矩阵为:endl; int nij; for(int i=1;i=nodeNumber;i+) for(int j=1;j=nodeNumber;j+) nij=converIndex(i,j); if(susceptance nij0) coutconductancenijsusceptance nij”j” ”; else coutconductancenij+susceptance nijj” ; coutendl; coutendl;/显示任意秩矩阵void disp

20、layMatrix(double *matr,int ranki,int rankj) int nij; for(int i=1;i=ranki;i+) for(int j=1;j=rankj;j+) nij=(i1)*rankj+j; coutmatrnij ; coutendl; /coutendl;/构造函数,打开文件powerFlowCalculation(string inputfilename) instream.open(inputfilename.data()); assert(instream。is_open());/析构函数,关闭文件 powerFlowCalculatio

21、n() instream。close();/初始化,根据节点数开辟数组void initi() nodeNumber=readParameter0; /读取节点数 PVNodeNumber=0; conductance=new doublenodeNumbernodeNumber; susceptance =new doublenodeNumber*nodeNumber; admittanceAmplitude=new doublenodeNumbernodeNumber; admittanceAngle=new doublenodeNumber*nodeNumber; PQData=new

22、double(nodeNumber1)6; /开辟PQData PVData=new double(nodeNumber-1)*5; /开辟PVData voltageAmplitude=new doublenodeNumber; voltageAngle=new doublenodeNumber; jacobiMatrix=new doublenodeNumbernodeNumber*4; constantVector=new doublenodeNumber2; lineData=new doublenodeNumber(nodeNumber1)/25; lineConsumeG=new

23、doublenodeNumbernodeNumber; lineConsumeB=new doublenodeNumber*nodeNumber; for(int a=1;a=nodeNumber(nodeNumber1)/2*5;a+) lineDataa=0。0; for(int i=1;i=nodeNumber;i+) /电压向量的初始化 voltageAmplitudei=1.0; voltageAnglei=0。0; for(int j=1;j=(nodeNumber*nodeNumber);j+) /导纳初始化 conductancej=0.0; susceptance j=0.0

24、; admittanceAmplitudej=0。0; admittanceAnglej=0。0; lineConsumeGj=0。0; lineConsumeBj=0。0; for(int k=0;k=nodeNumbernodeNumber*4;k+) /雅克比矩阵初始化 jacobiMatrixk=0.0; for(int n=1;n=nodeNumber*2;n+) /常数向量初始化 constantVectorn=0.0; /计算导纳矩阵主程序void countAdmittance() int lineDataSerial=1; for(int facility=0;facilit

25、yreadParameter0; if (readParameter00.5) break; /序号为0时退出循环 for(int i=1;ireadDataAmount;i+) instreamreadParameteri; if(facility=1) lineDatalineDataSerial=readParameteri; lineDataSerial+; if(facility=2) lineDatalineDataSerial=readParameteri; if(i=5) lineDatalineDataSerial=0。0; lineDataSerial-; lineData

26、lineDataSerial*=readParameteri; lineDataSerial-; lineDatalineDataSerial*=readParameteri; lineDataSerial+=2; /end for if(i=5) lineDataSerial+; /end for if(facility=2) /end for loop i switch(facility) /不同元件的计算 case 0: initi(); balanceNodeindex=(int)readParameter1; balanceNodeVoltage=readParameter2; calculationAccuracy=readParameter3; cout节点数:”nodeNumberendl ”平衡节点:readParameter1endl ”平衡节点电压:”readParameter2endl ”计算精度:”readParameter3endl; break; case 1: countLineBranch(readParameter,conduct

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1