电力系统潮流计算的软件研究(开题报告)

时间:2019-05-14 02:21:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《电力系统潮流计算的软件研究(开题报告)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《电力系统潮流计算的软件研究(开题报告)》。

第一篇:电力系统潮流计算的软件研究(开题报告)

目录 本课题研究的目的和意义..........................................1 2 文献综述(国内外研究情况及其发展)..............................2 3 课题(研究的)任务..............................................4 4 课题内容及其研究的方法..........................................5

4.1 潮流计算的数学模型.........................................5 4.2 PQ分解法的原理及其基本方程.................................5 4.3 计算步骤和程序框图.........................................9 5 时间安排.......................................................11 参考文献..........................................................12

开题报告 本课题研究的目的和意义

目的:潮流计算是电力系统规划、运行的基本研究方法,其任务是要在已知(或给定)某些运行参数的情况下,计算出系统中的全部参数,包括各母线电压的大小和相位、各发电机和负荷的功率及电流、以及各个变压器和线路等元件所通过的功率、电流和损耗。随着计算机技术的不断发展和成熟,基于MATLAB潮流计算研究近年来得到了长足的发展,在此提出一种合理高效的潮流计算算法,在保证电力系统供电可靠性和电能质量的前提下,尽可能提高潮流计算的效率,降低人力资源消耗。从而提高电力系统运行的经济性。

意义:电力系统潮流计算是研究电力系统稳态运行的一项基本运算,它根据给定系统的网络结构及运行条件来确定整个系统的运行状态:主要是各节点电压(幅值和相角),网络中功率分布和功率损耗等状态。它既是对电力系统规划和运行方式的合理性、可靠性及经济性进行定量分析的依据又是电力系统稳态和暂态稳定计算的基础,是电力系统一种非常重要和基本的计算。

具体表现在以下方面:

(1)在电网规划阶段,通过潮流计算,合理规划电源容量及接入点,合理规划网架,选择无功补偿方案,满足规划水平的大、小方式下潮流交换控制、调峰、调相、调压的要求。

(2)在编制年运行方式时,在预计负荷增长及新设备投运基础上,选择典型方式进行潮流计算,发现电网中薄弱环节,供调度员日常调度控制参考,并对规划、基建部门提出改进网架结构,加快基建进度的建议。

(3)正常检修及特殊运行方式下的潮流计算,用于日运行方式的编制,指导发电厂开机方式,有功、无功调整方案及负荷调整方案,满足线路、变压器热稳定要求及电压质量要求。

(4)预想事故、设备退出运行对静态安全的影响分析及作出预想的运行方式调整方案。

总结为在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。在系统规划设计和安排系统的运行方式时,采用离线潮流计算;在电力系统运行状态的实时监控中,则采用在线潮流计算。

开题报告

文献综述(国内外研究情况及其发展)

利用电子计算机进行潮流计算从20世纪50年代中期就已经开始。此后,潮流计算曾采用了各种不同的方法,这些方法的发展主要是围绕着对潮流计算的一些基本要求进行的。对潮流计算的要求可以归纳为下面几点:

(1)算法的可靠性或收敛性(2)计算速度和内存占用量(3)计算的方便性和灵活性

电力系统潮流计算属于稳态分析范畴,不涉及系统元件的动态特性和过渡过程。因此其数学模型不包含微分方程,是一组高阶非线性方程。非线性代数方程组的解法离不开迭代,因此,潮流计算方法首先要求它是能可靠的收敛,并给出正确答案。随着电力系统规模的不断扩大,潮流问题的方程式阶数越来越高,目前已达到几千阶甚至上万阶,对这样规模的方程式并不是采用任何数学方法都能保证给出正确答案的。这种情况促使电力系统的研究人员不断寻求新的更可靠的计算方法。

在用数字计算机求解电力系统潮流问题的开始阶段,人们普遍采用以节点导纳矩阵为基础的高斯-赛德尔迭代法(一下简称导纳法)。这个方法的原理比较简单,要求的数字计算机的内存量也比较小,适应当时的电子数字计算机制作水平和电力系统理论水平,于是电力系统计算人员转向以阻抗矩阵为主的逐次代入法(以下简称阻抗法)。

20世纪60年代初,数字计算机已经发展到第二代,计算机的内存和计算速度发生了很大的飞跃,从而为阻抗法的采用创造了条件。阻抗矩阵是满矩阵,阻抗法要求计算机储存表征系统接线和参数的阻抗矩阵。这就需要较大的内存量。而且阻抗法每迭代一次都要求顺次取阻抗矩阵中的每一个元素进行计算,因此,每次迭代的计算量很大。

阻抗法改善了电力系统潮流计算问题的收敛性,解决了导纳法无法解决的一些系统的潮流计算,在当时获得了广泛的应用,曾为我国电力系统设计、运行和研究作出了很大的贡献。但是,阻抗法的主要缺点就是占用计算机的内存很大,每次迭代的计算量很大。当系统不断扩大时,这些缺点就更加突出。为了克服阻抗法在内存和速度方面的缺点,后来发展了以阻抗矩阵为基础的分块阻抗法。这个方法把一个大系统分割为几个小的地区系统,在计算机内只需存储各个地区系统的阻抗矩阵及它们之间的联络线的阻抗,这样不仅大幅度的节省了内存容量,同时也提高了节省速度。

开题报告

克服阻抗法缺点的另一途径是采用牛顿-拉夫逊法(以下简称牛顿法)。牛顿法是数学中求解非线性方程式的典型方法,有较好的收敛性。解决电力系统潮流计算问题是以导纳矩阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流程序的计算效率。自从20世纪60年代中期采用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、计算速度方面都超过了阻抗法,成为直到目前仍被广泛采用的方法。

在牛顿法的基础上,根据电力系统的特点,抓住主要矛盾,对纯数学的牛顿法进行了改造,得到了P-Q分解法。P-Q分解法在计算速度方面有显著的提高,迅速得到了推广。

牛顿法的特点是将非线性方程线性化。20世纪70年代后期,有人提出采用更精确的模型,即将泰勒级数的高阶项也包括进来,希望以此提高算法的性能,这便产生了保留非线性的潮流算法。另外,为了解决病态潮流计算,出现了将潮流计算表示为一个无约束非线性规划问题的模型,即非线性规划潮流算法。

近20多年来,潮流算法的研究仍然非常活跃,但是大多数研究都是围绕改进牛顿法和P-Q分解法进行的。此外,随着人工智能理论的发展,遗传算法、人工神经网络、模糊算法也逐渐被引入潮流计算。但是,到目前为止这些新的模型和算法还不能取代牛顿法和P-Q分解法的地位。由于电力系统规模的不断扩大,对计算速度的要求不断提高,计算机的并行计算技术也将在潮流计算中得到广泛的应用,成为重要的研究领域。

通过几十年的发展,潮流算法日趋成熟。近几年,对潮流算法的研究仍然是如何改善传统的潮流算法,即高斯-塞德尔法、牛顿法和快速解耦法。牛顿法,由于其在求解非线性潮流方程时采用的是逐次线性化的方法,为了进一步提高算法的收敛性和计算速度,人们考虑采用将泰勒级数的高阶项或非线性项也考虑进来,于是产生了二阶潮流算法。后来又提出了根据直角坐标形式的潮流方程是一个二次代数方程的特点,提出了采用直角坐标的保留非线性快速潮流算法。

开题报告 课题(研究的)任务

利用MATLAB软件,在已知(或给定)某些运行参数的情况下,计算出系统中的全部参数,包括各母线电压的大小和相位、各发电机和负荷的功率及电流、以及各个变压器和线路等元件所通过的功率、电流和损耗。

主要包括以下几方面:

1.电力系统潮流计算的类型及计算方法的研究

2.掌握MATLAB的仿真工具 Simulink 及Power System工具箱 3.运用MATLAB编写潮流计算的软件 4.利用MATLAB的GUI工具实现程序的通用性

开题报告 课题内容及其研究的方法

4.1 潮流计算的数学模型

电力系统潮流计算的基本方程:

YijUjj1nnPijQiUiPijQiUi,(i1,2,3,,n)(4-1),(i1,2,3,,n)(4-2)Zj1ijIj式中,Pi,Qi分别为节点i向网络注入的有功功率和无功功率;Uj为节点j的电

Ij 为节点 j 的电流相量; 压相量;Ui 为节点i的电压共轭相量;矩阵;

Yij 为节点导纳Zij 为节点阻抗矩阵。式(4-1)和式(4-2)各有 n个非线性复数方程,对其作不同的应用和处理,就形成了不同的潮流计算方法。其中,Newton--Laphson 法收敛性好,是非线性方程数值求解的有效方法。该方法把非线性方程线性化,由于线性方程的系数矩阵结构上是稀疏的非对称矩阵,结合稀疏矩阵技术可使计算机内存占用量大大减少,计算速度大大加快;P–Q分解法是在 Newton--Laphson 法基础上,将有功功率 P 和无功功率 Q 分开交替迭代的潮流计算方法,该方法计算过程简单,所占计算机内存约为Newton--Laphson 法的,计算速度显著加快,是目前常用的潮流计算方法。由于近代电力系统网络节点数量极大,节点导纳阵 YB的稀疏度也极高,稀疏技术的形成是必不可少的。为了减少潮流计算程序中求逆、求积运算所耗费的大量机时,用三角分解法形成因子表,解算修正方程已成为现代电力系统潮流计算的主要方法。

4.2 PQ分解法的原理及其基本方程

PQ分解法的基本思想是根据电力系统实际运行特点:通常网络上的电抗远大于电阻值,则系统母线电压幅值的微小变化U对母线有功功率的改变P影响很小。同样,母线电压相角的少许改变,也不会引起母线有功功率的明显改变Q,开题报告

因此,节点功率方程在用极坐标形式表示时,它的修正方程式可简化为

PHQ0

0(4-3)LU/U这就是把2(n-1)阶的线性方程组变成了两个n-1阶的线性方程组,将P和Q分开来进行迭代计算,因而大大地减少了计算工作量。但是H、L在迭代过程中仍然在不断的变化而且又都是不对称矩阵。对牛顿法的进一步简化,即把式(4-3)中的系数矩阵简化为在迭代过程中不变的对称矩阵。

在一般情况下,线路两端的电压相角可以认为

ij 是不大的(不超过10°~20°),因此,(4-4)GijsinijBij此外,与系统各节点无功功率相应的导纳BLDi 远小于该节点自导纳的虚部,即 cosij1BLDiQi2Bii UiUi2Bii(4-5)因而 Qi考虑到以上关系,式(4-3)的系数矩阵中的个元素可以表示为

HijUiUjBij(i , j=1,2,…, n-1)LijUiUjBij(i , j=1,2,…, m)而系数矩阵H和L则可以分别写成:

U1B12U2U1B11U1UBUU2B22U22211H......Un1Bn1,1U1Un1Bn1,2U2

U1B1,n1Un1U2B2,n1Un1.........Un1Bn1,n1Un1......开题报告

B12U1B11BB22U212.........Un1Bn1,1Bn1,2

...B1,n1U1...B2,n1U2............Bn1,n1Un1UD1B'UD1(4-6)U1B11U1U1B12U2UBUU2B22U22211L......UmBm1U1UmBm2U2

U1B1mUm...U2B2mUm.........UmBmmUmB12B22...Bm2B1mU1...B2mU2............BmmUm......U1B11BU221......UmBm1

UD2B“UD2(4-7)

YijGijjBij将式(4-6)和(4-7)代人式中,得到 jiUiUieUi(cosijsini)PUD1B'UD1

QUD2B”U

用 UD1和 UD2分别左乘以上两式,便得 11

UD1PB'UD1(4-8)UD2QB"U(4-9)117

开题报告

这就是简化了的修正方程式,它们也可以展开写成

P1UB111BP221U2PBn1,1n1Un1

B12B22Bn1,2B1,n1U11UB2,n122(4-10)

Bn1,n1Un1n1Q1UB111BQ221U2QBm,1mUm

B12B22Bm,2B1,mU1UB2,m2

(4-11)

Bm,mUm在这两个修正方程式中系数矩阵元素就是系统导纳矩阵的虚部,因而系数矩阵是对称矩阵,且在迭代过程中保持不变。这就大大减少了计算工作量。

用极坐标表示的节点功率增量为

PiPisUiUj(GijcosijBsinij)0j1nQiQisUiUj(GijcosijBsinij)0j1n(4-12)式(4-10)、(4-11)和(4-12)构成了PQ分解法迭代过程的基本方程式。

开题报告

4.3 计算步骤和程序框图

1.2.3.4.给定各节点电压的初始值i(0),Ui(0)

代人式(4-12)计算各节点有功功率Pi,并求出

Pi Ui解修正方程式(4-10),得出各节点电压相角修正量i 修正各节点电压相角i

i(k1)i(k)i(k)

5.6.7.根据式(4-12)求得各节点无功功率误差Qi,并求出

Qi Ui求解修正方程式(4-11)得出各节点电压幅值的修正量Ui 修正各节点电压的幅值Ui

Ui(k1)Ui(k)Ui(k)

8.返回2进行迭代,直到各节点功率误差Pi及Qi都满足收敛条件。

开题报告

PQ分解发程序框图如4-1图所示

Ui(0)i1,2,,m,isi(0)i1,2,,n,is(k)P/Ui(k)ii1,2,,n,ismaxPi(k)Pi(k)i1,2,,n,isii(k1)i(k)i(k)rr1Qi(k)/Ui(k)i1,2,,m,ismaxQi(k)PUi(k)i1,2,,m,isUi(k1)Ui(k)Ui(k)rr1

图4-1 PQ分解发程序框图

开题报告 时间安排

第 1 周:开题报告及其答辩。第2—3周:毕业实习。

第4—5周:学习MATLAB软件,掌握仿真工具Simulink及Power System工具。第6—8周:学习并掌握常用的N—R法和PQ分解法两种潮流计算的计算机算法的原理框图和程序的编写。

第9—11周:上机运用MATLAB编写潮流计算软件。第12—13周:利用MATLAB的GUI工具实现程序的通用性。第14周:整理材料,书写论文,准备答辩。第15周:毕业答辩。

开题报告

参考文献

[1] 孟祥萍,高嬿.电力系统分析[M].北京:高等教育出版社,2008.[2] 陈珩.电力系统稳态分析(第二版)[M].北京:中国电力出版社, 1995.[3] 王祖佑.电力系统稳态运行计算机分析[M].北京:水利电力出版社,1987.[4] 何仰赞,温增银.电力系统分析[M].武汉:华中科技大学出版社,2002.[5] 宋文南,李树鸿,张尧.电力系统潮流计算[M].天津:天津大学出版社,1990.[6] 秦荣 孙佳海.电力系统潮流计算建模[J].科技创新导报,2008,23: 134-134 [7] 武晓朦,张飞廷.电力系统的P-Q 分解法潮流计算[J].现代电子技术,2002 ,142(11): 105-106 [8]谢威,彭志炜,张朝纲,马春生.一种基于牛顿—拉夫逊的潮流就算方法[J].许昌学院学报.2006.3,25(2):27-30 [9]杨帆.电力系统潮流计算程序设计[J].山西冶金,2007,106(2):42-44 [10]刘军,刘学军.MATLAB 在电力系统分析中的应用[J].电力系统及其自动化学报, 2000.4,12(2): 23-25 [11]李家坤,刘姣姣.MATLAB仿真技术在电力电子教学中的应用[J].长江工程职业技术学院学院2009.3,26(1): 75-77 [12]连小洲,焦洁.MATLAB在电力系统计算中的应用[J].江西电力职业技术学院学报,2005.12,18(4): 10-11 [13]张宁,江红梅,张渭.基于MATLAB的电力系统潮流计算[J].西北农林科技大学学报(自然科学版),2004.12,32(12): 124-126 [14]周卫星,张颖.基于Matlab的电力系统潮流计算[J].科技咨询导报,2007,10:70-71 [15]徐一哲,沈瑞寒.基于Matlab的电力系统潮流分析[J].中外企业家,2009,5(下):206-208

第二篇:电力系统潮流计算

南 京 理 工 大 学

《电力系统稳态分析》

课程报告

姓名

XX

学 号: 5*** 自动化学院 电气工程

基于牛顿-拉夫逊法的潮流计算例题编程报学院(系): 专

业: 题

目: 任课教师 硕士导师 告

杨伟 XX

2015年6月10号

基于牛顿-拉夫逊法的潮流计算例题编程报告

摘要:电力系统潮流计算的目的在于:确定电力系统的运行方式、检查系统中各元件是否过压或者过载、为电力系统继电保护的整定提供依据、为电力系统的稳定计算提供初值、为电力系统规划和经济运行提供分析的基础。潮流计算的计算机算法包含高斯—赛德尔迭代法、牛顿-拉夫逊法和P—Q分解法等,其中牛拉法计算原理较简单、计算过程也不复杂,而且由于人们引入泰勒级数和非线性代数方程等在算法里从而进一步提高了算法的收敛性和计算速度。同时基于MATLAB的计算机算法以双精度类型进行数据的存储和运算, 数据精确度高,能进行潮流计算中的各种矩阵运算,使得传统潮流计算方法更加优化。

一 研究内容

通过一道例题来认真分析牛顿-拉夫逊法的原理和方法(采用极坐标形式的牛拉法),同时掌握潮流计算计算机算法的相关知识,能看懂并初步使用MATLAB软件进行编程,培养自己电力系统潮流计算机算法编程能力。

例题如下:用牛顿-拉夫逊法计算下图所示系统的潮流分布,其中系统中5为平衡节点,节点5电压保持U=1.05为定值,其他四个节点分别为PQ节点,给定的注入功率如图所示。计算精度要求各节点电压修正量不大于10-6。

二 牛顿-拉夫逊法潮流计算 1 基本原理

牛顿法是取近似解x(k)之后,在这个基础上,找到比x(k)更接近的方程的根,一步步地迭代,找到尽可能接近方程根的近似根。牛顿迭代法其最大优点是在方程f(x)=0的单根附近时误差将呈平方减少,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点的电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成节点电压新的初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。2 基本步骤和设计流程图

形成了雅克比矩阵并建立了修正方程式,运用牛顿-拉夫逊法计算潮流的核心问题已经解决,已有可能列出基本计算步骤并编制流程图。由课本总结基本步骤如下:

1)形成节点导纳矩阵Y;

2)设各节点电压的初值,如果是直角坐标的话设电压的实部e和虚部f;如果是极坐标的话则设电压的幅值U和相角a;

3)将各个节点电压的初值代入公式求修正方程中的不平衡量以及修正方程的系数矩阵的雅克比矩阵;

4)解修正方程式,求各节点电压的变化量,即修正量; 5)计算各个节点电压的新值,即修正后的值;

6)利用新值从第(3)步开始进入下一次迭代,直至达到精度退出循环; 7)计算平衡节点的功率和线路功率,输出最后计算结果; ① 公式推导

② 流程图

matlab编程代码

clear;

% 如图所示1,2,3,4为PQ节点,5为平衡节点

y=0;

% 输入原始数据,求节点导纳矩阵

y(1,2)=1/(0.07+0.21j);

y(4,5)=0;y(1,3)=1/(0.06+0.18j);

y(1,4)=1/(0.05+0.10j);

y(1,5)=1/(0.04+0.12j);

y(2,3)=1/(0.05+0.10j);

y(2,5)=1/(0.08+0.24j);

y(3,4)=1/(0.06+0.18j);

for i=1:5

for j=i:5

y(j,i)=y(i,j);

end

end

Y=0;

% 求节点导纳矩阵中互导纳

for i=1:5

for j=1:5

if i~=j

Y(i,j)=-y(i,j);

end

end

end

% 求节点导纳矩阵中自导纳

for i=1:5

Y(i,i)=sum(y(i,:));

end

Y

% Y为导纳矩阵

G=real(Y);

B=imag(Y);% 输入原始节点的给定注入功率

S(1)=0.3+0.3j;

S(2)=-0.5-0.15j;

S(3)=-0.6-0.25j;

S(4)=-0.7-0.2j;

S(5)=0;

P=real(S);

Q=imag(S);

% 赋初值,U为节点电压的幅值,a为节点电压的相位角

U=ones(1,5);

U(5)=1.05;

a=zeros(1,5);

x1=ones(8,1);

x2=ones(8,1);

k=0;

while max(x2)>1e-6

for i=1:4

for j=1:4

H(i,j)=0;

N(i,j)=0;

M(i,j)=0;

L(i,j)=0;

oP(i)=0;

oQ(i)=0;

end

end

% 求有功、无功功率不平衡量

for i=1:4

for j=1:5

oP(i)=oP(i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)));

oQ(i)=oQ(i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)));

end

oP(i)=oP(i)+P(i);

oQ(i)=oQ(i)+Q(i);

end

x2=[oP,oQ]';

% x2为不平衡量列向量

% 求雅克比矩阵

% 当i~=j时,求H,N,M,L

for i=1:4

for j=1:4

if i~=j

H(i,j)=-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)));

N(i,j)=-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)));

L(i,j)=H(i,j);

M(i,j)=-N(i,j);

end

end

end

% 当i=j时,求H,N,M,L

for i=1:4

for j=1:5

if i~=j H(i,i)=H(i,i)+U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)));N(i,i)=N(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)));

M(i,i)=M(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)));

L(i,i)=L(i,i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)))

end

end

N(i,i)=N(i,i)-2*(U(i))^2*G(i,i);

L(i,i)=L(i,i)+2*(U(i))^2*B(i,i);

end

J=[H,N;M,L]

% J为雅克比矩阵

x1=-((inv(J))*x2);

% x1为所求△x的列向量

% 求节点电压新值,准备下一次迭代

for i=1:4

oa(i)=x1(i);

oU(i)=x1(i+4)*U(i);

end

for i=1:4

a(i)=a(i)+oa(i);

U(i)=U(i)+oU(i);

end

k=k+1;

end

k,U,a

% 求节点注入功率

i=5;

for j=1:5

P(i)=U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)))+P(i);

Q(i)=U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)))+Q(i);

end

S(5)=P(5)+Q(5)*sqrt(-1);

S

% 求节点注入电流

I=Y*U'

运行结果

节点导纳矩阵

经过五次迭代后的雅克比矩阵

迭代次数以及节点电压的幅值和相角(弧度数)

节点注入功率和电流

五 结果分析

在这次学习和实际操作过程里:首先,对电力系统分析中潮流计算的部分特别是潮流计算的计算机算法中的牛顿-拉夫逊法进行深入的研读,弄明白了其原理、计算过程、公式推导以及设计流程。牛顿-拉夫逊法是求解非线性方程的迭代过程,其计算公式为FJX,式中J为所求函数的雅可比矩阵;X为需要求的修正值;F为不平衡的列向量。利用x(*)=x(k+1)+X(k+1)进行多次迭代,通过迭代判据得到所需要的精度值即准确值x(*)。六 结论

通过这个任务,自己在matlab编程,潮流计算,word文档的编辑功能等方面均有提高,但也暴漏出一些问题:理论知识储备不足,对matlab的性能和特点还不能有一个全面的把握,对word软件也不是很熟练,相信通过以后的学习能弥补这些不足,达到一个新的层次。

第三篇:电力系统潮流计算程序设计

电力系统潮流计算程序设计

姓名:韦应顺

学号:2011021052 电力工程学院

牛顿—拉夫逊潮流计算方法具有能够将非线性方程线性化的特点,而使用MATLAB语言是由于MATLAB语言的数学逻辑强,易编译。

【】【】1.MATLAB程序12

Function tisco %这是一个电力系统潮流计算的程序 n=input(‘n请输入节点数:n=’); m=input(‘请输入支路数:m=’);ph=input(‘n请输入平衡母线的节点号:ph=’); B1=input(‘n请输入支路信号:B1=’);%它以矩阵形式存贮支路的情况,每行存贮一条支路 %第一列存贮支路的一个端点 %第二列存贮支路的另一个端点 %第三列存贮支路阻抗

%第四列存贮支路的对地导纳

%第五列存贮变压器的变比,注意支路为1 %第六列存贮支路的序号

B2=input(‘n请输入节点信息:B2=’); %第一列为电源侧的功率 %第二列为负荷侧的功率 %第三列为该点的电压值

%第四列为该点的类型:1为PQ,2为PV节点,3为平衡节点 A=input(‘n请输入节点号及对地阻抗:A=’); ip=input(‘n请输入修正值:ip=’); %ip为修正值);Y=zeros(n);

Y(p,q)=Y(p,q)-1./(B1(i3)*B1(i5);e=zeros(1,n);

Y(p,q)=Y(p,q);f=zeros(1,n);

no=2*ph=1; Y(q,q)=Y(q,q)+1./B1(i3)+B1(i4)/2;

End for i=1:n

G=real(Y);if A(i2)=0

B=imag(Y);p=A(i1);

Y(p p)=1./A(i2);for i=1:n End e(i)=real(B2(i3));End f(i)=imag(B2(i3));For i=1:m S(i)=B2(i1)-B2(i2);p=B1(i1);V(i)=B2(i3);p=B1(i2);end Y(p,p)=Y(p,p)+1./(B1(i3)*B1(i5)^2+B1(i4)./2P=real(S);Q=imag(S);[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);[De,Di]=hxf(J,D,F,ph,n,no);t=0;while

max(abs(De))>ip&max(abs(Dfi)>ip

t=t+1;

e=e+De;

f=f+Df;

[C,D,DF]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no);

J=jacci(Y,G,B,P,Q,e,f,V,C,D,B2,n,ph,no);

[De,Df]=hxf(J,Df,ph,n,no);end v=e+f*j;for i=1:n hh(i)=conj(Y(ph,i)*v(i));end S(ph)=sum(hh)*v(ph);B2(ph,1)=S(ph);V=abs(v);

jd=angle(v)*180/p;resulte1=[A(:,1),real(v),imag(v),V,jd,real(S’),imag(S’),real(B2(:1)),imag(B2(:1)),real(B2(:2)),imag(B2(:,2))];for i=1:m

a(i)=conj((v(B1(i1))/B1(i5)-v(B1(i2))/B1(i3));

b(i)=v(B1(i1))*a(i)-j*B1(i4)*v(B1(i))^2/2;

c(i)=-v(B1(i2))*a(i)-j*B1(i4)*v(B1(i2))^2/2;end result2=[B1(:,6),B1(:,1),B1(:,2),real(b’),imag(b’),real(c’),imag(c’), real(b’+c’),imag(b’+c’)];printcut(result1,S,b,c,result2);type resultm function [C,D,Df]=xxf(G,B,e,f,P,Q,n,B2,ph,V,no)%该子程序是用来求取Df for i=1:n

If

i=ph

C(i)=0;

D(i)=0;

For j=i:n

C(i)=C(i)+G(i,j)*e(j)-B(i,j)*f(j);D(i)=D(i)+G(i,j)*f(j)+B(i,j)*e(j);end

P1=C(i)*e(i)+D(i)*f(i);Q1=C(i)*f(i)-D(i)*e(i);V1=e(i)^2+f(i)^2;If

B2(i4)=2 p=2*i-1;

Df(p)=P(i)-P1;p=p+1;else p=2*i-1;

Df(p)=P(i)-P1;p=p+1;

Df(p)=Q(i)-Q1;end end end Df=Df’;If ph=n Df(no=[];end

function [De,Df]=hxf(J,Df,ph,n,no)%该子函数是为求取De Df DX=JDf;DX1=DX;

x1=length(DX1);if ph=n DX(no)=0;DX(no+1)=0;

For i=(no+2):(x1+2)DX(i)=DX1(i-2);End Else

DX=[DX1,0,0];End k=0;

[x,y]=size(DX);For i=1:2:x K=k+1;

Df(k)=DX(i);De(k)=DX(i+1);End End case 2 Function for j=1:n J=jacci(Y,G,B,PQ,e,f,V,C,D,B2,n,ph,no)X1=G(i,j)*f(i)-B(i,j)*e(i);

X2=G(i,j)*e(i)+B(i,j)*f(i);%该子程序是用来求取jacci矩阵

for i=1:n X3=0;switch B2(i4)X4=0;case 3 P=2*i-1;continue q=2*j-1;case 1 J(p,q)=X1;for j=1:n m=p+1;if

J=&J=ph J(m,q)=X3;X1=G(i)*f(i)-B(i,j)*e(i);q=q+1;X2=G(i,j)*e(i)+B(i,j)*f(i);J(p,q)=X2;X3=-X2;J(m,q)=X4;X4=X1;X1=D(i)+G(i,j)*f(i)-B(i,j)*e(i);p=2*i-1;X2=C(i)+G(i,j)*e(i)+B(i,j)*f(i);q=2*j-1;X3=0;J(p,q)=X1;X4=0;m=p+1;P=2*i-1;J(p,q)=X2;q=2*j-1;J(m,q)=X4;J(p,q)=X1;Else if j=&j=jph m=p+1;X1=D(i)+G(i,j)*f(i)-B(i,j)*e(i);J(m,q)=X3;X2=C(i)+G(i,j)*e(i)+B(i,j)*f(i);q=q+1;X3= C(i)+G(i,j)*e(i)-B(i,j)*f(i);J(p,q)=X2;X4= C(i)+G(i,j)*f(i)-B(i,j)*e(i);J(m,q)=X4;P=2*i-1;end q=2*j-1;end J(p,q)=X1;end m=p+1;end J(m,q)=X3;if ph=n q=q+1;J(no:)=[];J(p,q)=X2;J(no:)=[];J(m,q)=X4;J(:,no)=[];End J(:,no)=[];End

2实例验证 【例题】设有一系统网络结线见图1,各支路阻抗和各节点功率均已以标幺值标示于图1中,其中节点2连接的是发电厂,设节点1电压保持U1=1.06定值,试计算其中的潮流分布,请输入节点数:n=5 请输入支路数:m=7 请输入平衡母线的节点号:ph=l 请输入支路信息:

BI=[ l 2 0.02+0.06i O l 1;1 3 0.08+0.24i 0 1 2;2 3 0.06+0.18i 0 l 3: 2 4 0.06+0.18i O l 4: 2 5 0.04+0.12i 0 l 5: 3 4 0.01+0.03i 0 l 6: 4 5 0.08+0.24i O 1 7] 请输入节点信息:

B2=[ 0 0 1.06 3;0.2+0.20i 0 1 1;一O.45一O.15i 0 l l;一0.4-0.05i 0 l 1;一0.6—0.1i 0 1 l] 请输入节点号及对地阻抗: A=[l 0;2 0;3 0;4 0;5 O ] 请输入修正值:ip=0.000 0l

参考文献

[1]陈珩.电力系统稳定分析[M].北京:中国电力出版社,2002:139—187.

[2]郑阿奇.MATLAB实用教程[M].北京:电子工业出版社,2005:1-243.

[3] 束洪春,孙士云,等.云电送粤交商流混联系统全过 程动态电压研究[J】.中国电力,2008,4l(10):l-4. SHU Hong—ch吼,SUN Shi-yun,et a1.Research on fun prc'cess dyn锄ic Voltage stabil时of hybrid AC/DC poWer tmnsmission System舶m Yu衄an proVince to G啪gdong province【J】.Electric Power,2008,4l(10): l-4.

[4] 朱新立,汤涌,等.大电网安全分析的全过程动态仿 真技术[J】.电网技术,2008,32(22):23—28. SONG Xin—Ii,TANG Yof唱,et a1. Full dyn锄ic simulation for the stabilhy a眦lysis of large power system【J】.Power System融IlrIolo影,2008,32(22): 23.28.

[5]Roytelm锄I,Shallidehpour S M.A comprehcnsivc long teml dynaIIlic simulation for powcr system recoVery【J】. IEEE Transactions 0n Power Systems,1994,9(3). [6] 石雩梅,汪志宏,等.发电机励磁系统数学模型及参 数对电网动态稳定性分析结果影响的研究[J】.继电 器,2007,35(21):22-27.

SHI Xue.mei,WANG Zlli-hon舀et a1.Iksearch on the innuence of g锄e翰to璐baScd ∞de诅iled excitation system models柚d parameterS t0 power铲id dyn锄ic stabil时【J】.Relay,2007,35(2 1):22-27.

[7] 方思立,朱方.快速励磁系统对系统稳定的影响[J】.中 国电机工程学报,1986,6(1):20.28.

FANG Si.1i,ZHU Fang.The effbct of f弧t.respon∞

excitation system on the stability of power netwofk【J】. Proceedings ofthe CSEE,1986,6(1):20-28.

[8] 刘取.电力系统稳定性及发电机励磁控制[M】.北京: 中国电力出版社,2007.

LIU Qu.Power system S诅bility锄d generator excitation control【M】.BeUing:ChiIla Electric Powef Press,2007. [9] Dallachy J L,Anderson T.EXperience with rcplacing ro诅ting exciters wim static exciters【J】.1k InStitution of Electrical Engineers,1 996.

[10] 陈利芳,陈天禄.浅谈自并励励磁系统在大容量机组 中的应用【J】.继电器,2007,35(1):8l培4. CHEN Li-f抽岛CHEN Tian—lIL Application of 辩l仁exci组tion mode in large capacity髫memtor unit【J】. ReIay'2007,35(1):81-84.

[11] 方思立,刘增煌,孟庆和.大型汽轮发电机自并励励 磁系统的应用条件【J].中国电力,1994,27(12):61.63. FANG Si.Ii,LIU Zeng-hu锄g,MENG Qin争hc.m application conditions of large turbine generator self-excitation system【J】.Electric Powef,1994,27(12): 61.63.

[12]梁小冰,黄方能.利用EMTDC进行长持续时间过程 的仿真研究【J】.电网技术,2002,26(9):55.57. LIANG Xiao-bing,HUANG Fan争眦ng.How to cany out simulalion of long dul‘ation processes by use of EMTDC【J】.Power System 11echnology,2002,26(9): 55-57.

[13]王卉,陈楷,彭哲,等.数字仿真技术在电力系统中 的应用及常用的几种数字仿真工具【J】.继电器,2004,32(21):7l一75.

wANG Hui,CHEN Kai,PENG zhe,et a1.Application of digital simulation眦hniques棚d severaJ simulation tools in power system[J】.Relay,2004,32(21):71·75.

[14]IEEE Power Engmeering Socie哆.IEEE std 421.5.2005 IEEE玎ccOmmended practice for excitation system models for power system stabiI时studies【s】.

第四篇:电力系统潮流计算程序

电力系统潮流计算c语言程序,两行,大家可以看看,仔细研究,然后在这个基础上修改。谢谢

#include “stdafx.h” #include #include #include

#include“Complex.h” #include“wanjing.h” #include“gauss.h” using namespace std;

int _tmain(int argc, _TCHAR* argv[]){

int i;

//i作为整个程序的循环变量

int N=Bus::ScanfBusNo();//输入节点个数

int L=Line::ScanflineNo();//输入支路个数

if((L&&N)==0){return 0;} //如果找不到两个文件中的任意一个,退出

Line *line=new Line[L];//动态分配支路结构体

Line::ScanfLineData(line);//输入支路参数

Line::PrintfLineData(line,L);//输出支路参数

Bus *bus=new Bus[N];//动态分配结点结构体

for(int i=0;i

bus[i].Sdelta.real=0;

bus[i].Sdelta.image=0;}

Bus::ScanfBusData(bus);//输入节点参数

Bus::PrintfBusData(bus,N);//输出结点参数

Complex **X;X=new Complex *[N];for(i=0;i

Bus::JisuanNodeDnz(X,line,bus,L,N);//计算节点导纳矩阵

Bus::PrintfNodeDnz(X,N);//输出节点导纳矩阵

int NN=(N-1)*2;double **JacAug;JacAug=new double *[NN];for(i=0;i

double *x;x=new double[NN];int count=1;

LOOP:

Bus::JisuanNodeI(X,bus,N);//计算节点注入电流

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

Bus::JisuanNodeSdelta(bus,N);//计算节点功率差值

Bus::PrintfNodeScal(X,bus,N);//输出节点功率差值

int icon=wehcon1(bus,N);//whether converbence看迭代是否结束

if(icon==1){

cout<<“icon=”<

Bus::JisuanJacAug(JacAug,X,bus,N);//计算雅可比增广矩阵 // Bus::PrintfJacAug(JacAug,N);

gauss::gauss_slove(JacAug,x,NN);//解方程组求出电压差值

Bus::ReviseNodeV(bus,x,N);//修正节点电压

// Bus::PrintfNodeV(bus,N);

count++;

goto LOOP;}

else

{

for(i=0;i

{

int statemp,endtemp;

Complex aa,bb,cc,dd,B;

B.real=0;

B.image=-line[i].B;

statemp=line[i].start;

endtemp=line[i].end;

aa=Complex::productComplex(Complex::getconj(bus[statemp-1].V), B);

bb=Complex::subComplex

(Complex::getconj(bus[statemp-1].V), Complex::getconj(bus[endtemp-1].V));

cc=Complex::productComplex(bb , Complex::getconj(line[i].Y));

dd=Complex::CaddC(aa,cc);

line[i].stoe=Complex::productComplex(bus[statemp-1].V,dd);

aa=Complex::productComplex(Complex::getconj(bus[endtemp-1].V), B);

bb=Complex::subComplex

(Complex::getconj(bus[endtemp-1].V), Complex::getconj(bus[statemp-1].V));

cc=Complex::productComplex(bb , Complex::getconj(line[i].Y));

dd=Complex::CaddC(aa,cc);

line[i].etos=Complex::productComplex(bus[endtemp-1].V,dd);

}

cout<<“icon=”<

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

for(i=0;i

{

bus[i].Scal.real = bus[i].Scal.real + bus[i].Load.real;//发电机功率=注入功率+负荷功率

bus[i].Scal.image= bus[i].Scal.image+ bus[i].Load.image;

bus[i].V=Complex::Rec2Polar(bus[i].V);

}

cout<<“====节点电压===============发电机发出功率======”<

for(i=0;i

{

cout<<“节点”<<(i+1)<<'t';

Complex::PrintfComplex(bus[i].V);

coutt(bus[i].Scal.real);

coutt(bus[i].Scal.image);

cout<

}

cout<<“======线路传输功率==========”<

for(i=0;i

{

int statemp,endtemp;

statemp=line[i].start;

endtemp=line[i].end;

cout<

Complex::PrintfComplex(Complex::ComDivRea(line[i].stoe,0.01));

Complex::PrintfComplex(Complex::ComDivRea(line[i].etos,0.01));

cout<

} }

return 0;}

#include “stdafx.h” #include #include #include

#include“Complex.h” #include“wanjing.h” #include“gauss.h” using namespace std;

int _tmain(int argc, _TCHAR* argv[]){

int i;

//i作为整个程序的循环变量

int N=Bus::ScanfBusNo();//输入节点个数

int L=Line::ScanflineNo();//输入支路个数

if((L&&N)==0){return 0;} //如果找不到两个文件中的任意一个,退出

Line *line=new Line[L];//动态分配支路结构体

Line::ScanfLineData(line);//输入支路参数

Line::PrintfLineData(line,L);//输出支路参数

Bus *bus=new Bus[N];//动态分配结点结构体

for(int i=0;i

bus[i].Sdelta.real=0;

bus[i].Sdelta.image=0;}

Bus::ScanfBusData(bus);//输入节点参数

Bus::PrintfBusData(bus,N);//输出结点参数

Complex **X;X=new Complex *[N];for(i=0;i

Bus::JisuanNodeDnz(X,line,bus,L,N);//计算节点导纳矩阵

Bus::PrintfNodeDnz(X,N);//输出节点导纳矩阵

int NN=(N-1)*2;double **JacAug;JacAug=new double *[NN];for(i=0;i

double *x;x=new double[NN];int count=1;

LOOP:

Bus::JisuanNodeI(X,bus,N);//计算节点注入电流

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

Bus::JisuanNodeSdelta(bus,N);//计算节点功率差值 Bus::PrintfNodeScal(X,bus,N);//输出节点功率差值

int icon=wehcon1(bus,N);//whether converbence看迭代是否结束

if(icon==1){

cout<<“icon=”<

Bus::JisuanJacAug(JacAug,X,bus,N);//计算雅可比增广矩阵

// Bus::PrintfJacAug(JacAug,N);

gauss::gauss_slove(JacAug,x,NN);//解方程组求出电压差值

Bus::ReviseNodeV(bus,x,N);//修正节点电压

// Bus::PrintfNodeV(bus,N);

count++;

goto LOOP;}

else

{

for(i=0;i

{

int statemp,endtemp;

Complex aa,bb,cc,dd,B;

B.real=0;

B.image=-line[i].B;

statemp=line[i].start;

endtemp=line[i].end;

aa=Complex::productComplex(Complex::getconj(bus[statemp-1].V), B);

bb=Complex::subComplex

(Complex::getconj(bus[statemp-1].V), Complex::getconj(bus[endtemp-1].V));

cc=Complex::productComplex(bb , Complex::getconj(line[i].Y));

dd=Complex::CaddC(aa,cc);

line[i].stoe=Complex::productComplex(bus[statemp-1].V,dd);

aa=Complex::productComplex(Complex::getconj(bus[endtemp-1].V), B);

bb=Complex::subComplex

(Complex::getconj(bus[endtemp-1].V), Complex::getconj(bus[statemp-1].V));

cc=Complex::productComplex(bb , Complex::getconj(line[i].Y));

dd=Complex::CaddC(aa,cc);

line[i].etos=Complex::productComplex(bus[endtemp-1].V,dd);

}

cout<<“icon=”<

Bus::JisuanNodeScal(X,bus,N);//计算节点功率

for(i=0;i

{

bus[i].Scal.real = bus[i].Scal.real + bus[i].Load.real;//发电机功率=注入功率+负荷功率

bus[i].Scal.image= bus[i].Scal.image+ bus[i].Load.image;

bus[i].V=Complex::Rec2Polar(bus[i].V);

}

cout<<“====节点电压===============发电机发出功率======”<

for(i=0;i

{

cout<<“节点”<<(i+1)<<'t';

Complex::PrintfComplex(bus[i].V);

coutt(bus[i].Scal.real);

coutt(bus[i].Scal.image);

cout<

}

cout<<“======线路传输功率==========”<

for(i=0;i

{

int statemp,endtemp;

statemp=line[i].start;

endtemp=line[i].end;

cout<

Complex::PrintfComplex(Complex::ComDivRea(line[i].stoe,0.01));

Complex::PrintfComplex(Complex::ComDivRea(line[i].etos,0.01));

cout<

} }

return 0;}

#include using namespace std;

class Complex//定义复数类 { public: double real;double image;int

RecPolar;//0表示直角坐标,1表示极坐标

static Complex CaddC(Complex c1,Complex c2);//求两个复数和

static Complex subComplex(Complex c1,Complex c2);//求两个复数差

static Complex productComplex(Complex c1,Complex c2);//求两个复数积

static Complex divideComplex(Complex c1,Complex c2);//求两个复数商

static Complex ComDivRea(Complex c1,double r2);//除数

static Complex getconj(Complex c1);//求一个复数共轭

static Complex getinverse(Complex c1);//取倒数

static double getComplexReal(Complex c1);//求一个复数实部

static double getCompleximage(Complex c1);//求一个复数虚部

static void PrintfComplex(Complex c1);//显示一个复数

static void PrintfmultiComplex(Complex C,int N);//显示多个复数

static void zeroComplex(Complex c1);//将复数复零

static Complex Rec2Polar(Complex c1);//取极坐标

Complex(){

RecPolar=0;} };

Complex Complex::Rec2Polar(Complex c1)//极坐标表示 { Complex Node;Node.real=sqrt(c1.real*c1.real+c1.image*c1.image);Node.image=atan2(c1.image,c1.real)*180/3.1415926;Node.RecPolar=1;return Node;}

Complex Complex::CaddC(Complex c1,Complex c2)//复数加法 {

Complex Node;

Node.real=c1.real+c2.real;

Node.image=c1.image+c2.image;

return Node;}

Complex Complex::subComplex(Complex c1,Complex c2)//复数减法 {

Complex Node;

Node.real=c1.real-c2.real;

Node.image=c1.image-c2.image;

return Node;}

Complex Complex::productComplex(Complex c1,Complex c2)//复数乘法 {

Complex Node;

Node.real=c1.real*c2.real-c1.image*c2.image;

Node.image=c1.image*c2.real+c2.image*c1.real;

return Node;} Complex Complex::divideComplex(Complex c1,Complex c2)//复数除法 {

Complex Node;

Node.real=(c1.real*c2.real+c1.image*c2.image)/(pow(c2.real,2)+pow(c2.image,2));Node.image=(c1.image*c2.real-c1.real*c2.image)/(pow(c2.real,2)+pow(c2.image,2));return Node;} Complex Complex::ComDivRea(Complex c1,double r1)//复数除数 { Complex Node;Node.real=c1.real/(r1);Node.image=c1.image/(r1);return Node;} Complex Complex::getconj(Complex c1)//取共轭 {

Complex Node;

Node.real=c1.real;Node.image=-c1.image;

return Node;}

Complex Complex::getinverse(Complex c1)//取倒数 { Complex Node;Node.real=1;Node.image=0;Node=(Complex::divideComplex(Node,c1));return Node;}

double Complex::getComplexReal(Complex c1)//取实部 {

return c1.real;}

double

Complex::getCompleximage(Complex c1)//取虚部 {

return c1.image;}

void

Complex::PrintfComplex(Complex c1)//按直角坐标输出 { if(c1.RecPolar==0){ cout.precision(6);

cout.width(8);

cout.setf(ios::right);

cout<

”;

cout.precision(6);

cout.width(8);

cout.setf(ios::left);

cout<

”;} else {

cout<

Complex::zeroComplex(Complex c1)//清零 { c1.real=0;c1.image=0;}

class gauss { public: static void gauss_slove(double **a,double *x,int NN);static void gauss_output();};

void gauss::gauss_slove(double **a,double *x,int NN){

int n,i,j,k,*pivrow,**pivcol;double eps,pivot,sum,aik,al;

n=NN;pivrow=new int[n];pivcol=new int *[n];

for(i=0;i

pivot= fabs(a[k][k]);

pivrow[k]=k;//行

pivcol[k][0]=k;pivcol[k][1]=k;//列n*2矩阵

for(i=k;i

{

for(j=k;j

{

if(pivot

{

pivot=fabs(a[i][j]);

pivrow[k]=i;//行

pivcol[k][1]=j;//列

}

}

}

if(pivot

{

cout<<“error”<

getchar();

exit(0);

}

if(pivrow[k]!=k)//行变换

{

for(j=k;j<(n+1);j++)

{

al=a[pivrow[k]][j];

a[pivrow[k]][j]=a[k][j];

a[k][j]=al;

}

}

if(pivcol[k][1]!=k)//列变换

{

for(i=0;i

{

al=a[i][pivcol[k][1]];

a[i][pivcol[k][1]]=a[i][k];

a[i][k]=al;

}

}

if(k!=(n-1))//将矩阵化为上三角形

{

for(i=(k+1);i

{

aik=a[i][k];

for(j=k;j<(n+1);j++)

{

a[i][j]-=aik*a[k][j]/a[k][k];

}

}

} } x[n-1]=a[n-1][n]/a[n-1][n-1];//解方程

for(i=(n-2);i>=0;i--){

sum=0;

for(j=(i+1);j

{

sum +=a[i][j]*x[j];0.182709

0.016894-0.0310701

-0.0402051 0.156702

-0.0355909-0.0668055

-0.00703229-0.0886481

-0.0129814-0.0390805

-0.0135062-0.1023

-0.0460568

-0.0342827

-0.00382402-0.102896

-0.0184062

}

x[i]=(a[i][n]-sum)/a[i][i];} for(k=(n-2);k>=0;k--){

al=x[pivcol[k][1]];

x[pivcol[k][1]]=x[pivcol[k][0]];

x[pivcol[k][0]]=al;}

cout<<“节点电压修正量”<

cout<

}

====节点功率计算值==== 0.935261

-0.159048 0.573909

0.0789973-0.00289889

-0.00796623-0.0791247

-0.0168362-0.436255

-0.0580392 0.0359139

-0.0106592-0.229118

-0.0885419-0.136179

-0.148207 0.0446243

0.0111298-0.0223764

-0.00695775-0.0237482

-0.198318

-5.24266e-015

-0.0354071

-0.0925078

-1.05629e-015

-0.0391348

0.014529

0.00158644

-0.0258771

-0.109514

icon=1进行第2次迭代 节点电压修正量

=================-0.00164889-0.000540034-0.00261067-0.00532027-0.00235315-0.00600971-0.00189677-0.00643874-0.0023631-0.00650659-0.00170949-0.0074907-0.00164545-0.00485415-0.00493977-0.0119042-0.00331285-0.0175611-0.00207908

-0.00347744-0.0869347-9.48909e-015-0.0110778-0.0538236-7.53784e-016-0.0168097 7.049e-005-0.00146487-0.00458276 0.00251645

-0.00336375-0.00530645-0.0147816-0.000326161-0.00640487-0.00251701-0.0169829-0.00175286-0.0174333-0.0239063

-0.0119192-0.076014

-0.0160104-0.441997

-0.0750285 0.000250012

3.72542e-005-0.228052

-0.108844-0.100078

-0.105634 0.000410707

0.000378067-0.057497

-0.0195879 0.200039

0.0582563-0.00307326-0.0163809-0.00232773-0.0175806 8.74293e-005-0.0192018 0.000558996-0.0197776-0.000247851-0.0193784-0.00115346-0.0185848-0.00127275-0.0186244-0.00010108-0.0188966 0.000553585-0.0200901-3.76315e-005-0.0208303 0.00308341-0.0219386-0.00195916-0.0205356-0.00184757-0.0076401 0.00197593-0.0245534 0.00434657-0.027534

====节点功率计算值==== 0.98623

-0.134163 0.583136

0.166278-0.111173

0.199792

-0.0621041

-0.0821379

-0.0350785

-0.0902383

-0.0320461

-0.0951562

-0.0220362

-0.175458

4.72557e-015

-0.0320661

-0.0871134

-7.03489e-017

-0.0350769

0.000273455

1.51804e-005

-0.0240417

-0.10604

icon=1进行第3次迭代 节点电压修正量

=================-2.67079e-005-2.30128e-006-2.20543e-005-6.00686e-005-2.33043e-005-6.85601e-005-3.22294e-005-2.61107e-005-2.80198e-005-6.6167e-005-2.34528e-005

-0.0739846 0.0227868-0.0158709-0.0248173-0.0179447-0.0578368-0.00890719-0.0337091-0.00693706-0.111601 1.21429e-014-0.0159145-0.0667319 9.24355e-016-0.0228592 7.10354e-005-6.6188e-006-0.00889343-0.0184098

-5.66132e-005-4.4646e-005-1.74668e-005-4.50947e-005-0.000181763-3.81763e-006-0.000286581-6.68993e-005-1.28441e-005-5.17172e-005-0.000223284-4.54717e-005-2.47586e-005 4.32335e-007-0.000258494 1.82635e-005-0.000272051-6.95195e-006-0.000251969 1.11318e-005-0.000279418 5.74737e-005-0.000307368 6.86998e-005-0.000320274 5.38112e-005-0.00031447 3.59531e-005-0.00030494 3.37607e-005-0.000307449 5.26532e-005-0.000310721 6.92761e-005-0.000350373 5.60942e-005-0.00040977 0.000123641-0.000440259 1.36149e-005-0.000426973-1.70227e-005-9.37794e-005 0.000113675-0.000544011 0.000176034-0.000636202

====节点功率计算值====

0.986878

-0.133979 0.583

0.167193-0.024

-0.012-0.076

-0.016-0.442

-0.0748606

1.43501e-008

1.07366e-008-0.228

-0.109

-0.0999999

-0.104049 4.51318e-008

8.98835e-008-0.0579999

-0.0199999 0.2

0.0591018-0.112

-0.0749997 0.2

0.0242519-0.062

-0.016-0.082

-0.025-0.035

-0.018

-0.0900001

-0.058-0.032

-0.00899997-0.095

-0.0339999-0.022

-0.00699998-0.175

-0.112

-6.07156e-015

-1.19217e-014-0.032

-0.016-0.087

-0.0669999

7.03078e-017

-9.23979e-016-0.035

-0.0229999

1.09492e-007

4.45699e-008 1.54958e-009

-2.01531e-010-0.024

-0.00899994-0.106

-0.0189996

icon=0,迭代结束。

====节点电压===============发电机发出功率======

节点1

1.05

0。

98.6878-13.3979

节点2

1.045

-1.846。

29.4193

节点3

1.02384-3.83352。

0

点25 1.01216-9.68486。

0

0 0 节点4

1.01637-4.55698。

0

点26 0.994393

-10.1089。

0 0

0 节点5

1.01

-6.48617。

节 点27 1.02012-9.42025。

0

11.5139 0 节点6

1.01332-5.38073。

0

点28 1.00992-5.86244。

0

0 0 节点7

1.00489-6.38368。

0

点29 1.00022-10.6579。

0

0 节点8 19.5951 节点9 0 节点10 0 节点11 5.91018 节点12 0 节点13 2.42519 节点14 0 节点15 0 节点16 0 节点17 0 节点18 0 节点19 0 节点20 0 节点21 0 节点22 0 节点23 0 节点24 0 1.01

-5.62974。

1.03905-6.78143。

1.03595-8.69362。

-4.5962。

1.04711-7.80323。

1.05

-6.34392。

1.03242-8.7401。

1.02788-8.86784。

1.03458-8.45044。

1.03051-8.83678。

1.01845-9.5141。

1.01604-9.70326。

1.02022-9.50938。

1.0237-9.17478。

1.02432-9.17024。

1.01802-9.36719。

1.01339-9.68362。

0 20

节 点30 0.988705

-11.5464。

0

0 0

======

线路传输功率========== 2to1

-57.7373

5.41674i

58.3454

0

-15.1827i

3to1

-39.659

-7.75964i

40.3424

1.78481i

4to2

-30.87

-9.74186i

31.4153

0

3.58352i

4to3

-37.0772

-7.78596i

37.259

6.55964i

5to2

-44.3717

-9.78456i

45.2968

0

4.84242i

6to2

-38.4766

-8.22625i

39.3252

0

2.87667i

6to4

-34.946

1.92384i

35.0885

0

-3.28202i

7to5

-0.16304

-6.41767i

0.171702

0

2.2985i

7to6

-22.637

-4.48233i

22.7745

0

1.44238i

8to6

-11.8939

-5.48098i

11.913

0

3.70557i

6to9

12.3737

-12.3826i

-12.3737

0

13.0033i

6to10

10.9107

-3.80907i

-10.9107

0

4.53223i

11to9

5.91018i

0

-5.08963i

10to9

-32.652

-2.3712i

32.652

0

3.46974i

4to12

23.5411

-11.5375i

-23.5411

0

13.2407i

13to12

2.42519i

1.05

-1.90978i 1.66484i 14to12

-7.9019

-2.06732i

7.97894

30to29

-3.6702

-0.542564i

3.70398

2.22749i 0.606393i 15to12

-18.254

-5.74885i

18.4835

28to8

-1.89152

-3.79982i

1.89395

6.20089i-4.9239i 16to12-7.53872

-2.90237i

7.59633

28to6

-14.7868

-2.82565i

14.8234

3.02352i 0.294601i 15to14-1.69544

-0.461488i

1.70189

请按任意键继续...0.467323i 17to16-4.03014 1.10238i 18to15-6.08074 1.46028i 19to18-2.87549 0.478389i 20to19

6.6418-2.93222i 20to10

-8.8418 3.85077i 17to10-4.96987 4.76656i 21to10-16.1562 9.42843i 22to10-7.87782 4.21401i 22to21

1.34443-2.01837i 23to15-5.59369 2.25006i 24to22-6.48186 2.08163i 24to23-2.38596 0.579814i 25to24-0.167617 0.281364i 26to25

-3.5 2.3674i 27to25

3.39433-2.08638i 28to27

16.1446 3.13006i 29to27-6.10398 1.67047i 30to27-6.92979-1.07089i-1.37839i-0.467767i

2.96679i-3.66679i-4.72911i-9.18162i-4.10132i

2.01969i-2.17981i-2.00141i-0.56401i

-0.28102i-2.29999i

2.11848i-2.10093i-1.50639i

-1.3574i

4.03872

6.12096

2.88074

-6.62452

8.9242

4.98423

16.2709

7.93248

-1.34378

5.62846

6.53339

2.39369

0.167814

3.54513

-3.37751

-16.1446

6.19083

7.09313

高等电力系统分析 IEEE30节点潮流程序

班级:电研114班

姓名:王大伟

学号:2201100151

第五篇:电力系统潮流计算发展史

电力系统潮流计算发展史

对潮流计算的要求可以归纳为下面几点:

(1)算法的可靠性或收敛性(2)计算速度和内存占用量(3)计算的方便性和灵活性

电力系统潮流计算属于稳态分析范畴,不涉及系统元件的动态特性和过渡过程。因此其数学模型不包含微分方程,是一组高阶非线性方程。非线性代数方程组的解法离不开迭代,因此,潮流计算方法首先要求它是能可靠的收敛,并给出正确答案。随着电力系统规模的不断扩大,潮流问题的方程式阶数越来越高,目前已达到几千阶甚至上万阶,对这样规模的方程式并不是采用任何数学方法都能保证给出正确答案的。这种情况促使电力系统的研究人员不断寻求新的更可靠的计算方法。

在用数字计算机求解电力系统潮流问题的开始阶段,人们普遍采用以节点导纳矩阵为基础的高斯-赛德尔迭代法(一下简称导纳法)。这个方法的原理比较简单,要求的数字计算机的内存量也比较小,适应当时的电子数字计算机制作水平和电力系统理论水平,于是电力系统计算人员转向以阻抗矩阵为主的逐次代入法(以下简称阻抗法)。

20世纪60年代初,数字计算机已经发展到第二代,计算机的内存和计算速度发生了很大的飞跃,从而为阻抗法的采用创造了条件。阻抗矩阵是满矩阵,阻抗法要求计算机储存表征系统接线和参数的阻抗矩阵。这就需要较大的内存量。而且阻抗法每迭代一次都要求顺次取阻抗矩阵中的每一个元素进行计算,因此,每次迭代的计算量很大。

阻抗法改善了电力系统潮流计算问题的收敛性,解决了导纳法无法解决的一些系统的潮流计算,在当时获得了广泛的应用,曾为我国电力系统设计、运行和研究作出了很大的贡献。但是,阻抗法的主要缺点就是占用计算机的内存很大,每次迭代的计算量很大。当系统不断扩大时,这些缺点就更加突出。为了克服阻抗法在内存和速度方面的缺点,后来发展了以阻抗矩阵为基础的分块阻抗法。这个方法把一个大系统分割为几个小的地区系统,在计算机内只需存储各个地区系统的阻抗矩阵及它们之间的联络线的阻抗,这样不仅大幅度的节省了内存容量,同时也提高了节省速度。

克服阻抗法缺点的另一途径是采用牛顿-拉夫逊法(以下简称牛顿法)。牛顿法是数学中求解非线性方程式的典型方法,有较好的收敛性。解决电力系统潮流计算问题是以导纳矩阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流程序的计算效率。自从20世纪60年代中期采用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、计算速度方面都超过了阻抗法,成为直到目前仍被广泛采用的方法。

在牛顿法的基础上,根据电力系统的特点,抓住主要矛盾,对纯数学的牛顿法进行了改造,得到了P-Q分解法。P-Q分解法在计算速度方面有显著的提高,迅速得到了推广。

牛顿法的特点是将非线性方程线性化。20世纪70年代后期,有人提出采用更精确的模型,即将泰勒级数的高阶项也包括进来,希望以此提高算法的性能,这便产生了保留非线性的潮流算法。另外,为了解决病态潮流计算,出现了将潮流计算表示为一个无约束非线性规划问题的模型,即非线性规划潮流算法。

近20多年来,潮流算法的研究仍然非常活跃,但是大多数研究都是围绕改进牛顿法和P-Q分解法进行的。此外,随着人工智能理论的发展,遗传算法、人工神经网络、模糊算法也逐渐被引入潮流计算。但是,到目前为止这些新的模型和算法还不能取代牛顿法和P-Q分解法的地位。由于电力系统规模的不断扩大,对计算速度的要求不断提高,计算机的并行计算技术也将在潮流计算中得到广泛的应用,成为重要的研究领域。

下载电力系统潮流计算的软件研究(开题报告)word格式文档
下载电力系统潮流计算的软件研究(开题报告).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    电力系统潮流计算[大全五篇]

    自测题(二)---- 电力系统潮流计算与调控 一、 单项选择题(下面每个小题的四个选项中,只有一个是正确的,请你在答题区填入正确答案的序号,每小题2分,共50分)1、架空输电线路全换位的......

    用matlab电力系统潮流计算

    题目:潮流计算与matlab 教学单位 电气信息学院 姓 名 学 号年 级 专 业 电气工程及其自动化指导教师 职 称 副教授 摘 要 电力系统稳态分析包括潮流计算和静态安全分......

    电力系统仿真MATPOWER潮流计算

    IEEE30节点潮流计算 宁夏大学新华学院 马智 潮流计算,指在给定电力系统网络拓扑、元件参数和发电、负荷参量条件下,计算有功功率、无功功率及电压在电力网中的分布。潮流计算......

    2第二章 电力系统潮流计算-2

    第二章 电力系统潮流计算 2.1 概 述 2.2 潮流计算问题的数学问题 2.3 潮流计算的牛顿法 2.4 潮流计算的P-Q分解法 2.5 静态安全分析及补偿法 2.5.1 静态安全分析概述 静态......

    电力系统潮流计算程序[推荐5篇]

    #include #include #include "Node.h" #include "Transmission_line.h" #include "Transformer.h" void main { coutPd>>Qd; coutUd; double data[300][8]; //分别......

    电力系统的潮流计算[5篇范文]

    %电力系统的潮流计算,以下程序参考文献 《电力系统毕业设计》中国水利电力出版社 %(该文献用极坐标下的牛顿——拉夫逊方法实现,在此为了与课本一致做了修改) %为了计算方便......

    基于Matpower的电力系统潮流计算

    基于Matpower的电力系统潮流计算 摘 要:本设计根据任务书给定的系统图和系统参数,运用Matpower软件进行潮流计算,对运行结果进行分析。最后把Matpower潮流计算的最终结果与Matl......

    基于psasp的电力系统潮流计算

    基于psasp的电力系统潮流计算 摘要:电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态。潮流计算......