潮流计算--电力系统大作业(C++编写)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

程序设计所涉及二叉树解释任意一棵树或一个森林都能唯一地对应一棵二叉树,由此而编写本程序。本程序采用类二叉树为整体结构,二叉树类下定义节点类,每一条支路均为树的一个节点,支路所有的参数均作为节点的属性,并给节点加入属性“支路编号”,并以支路编号为依据构建二叉树,这就要求提前根据二叉树结构给每一个支路编号。支路编号原则:左子树上所有编号均小于其双亲的编号,右子树上所有编号均大于其双亲的编号,为了便于查看,本程序在节点较少时编号从1开始,逐个递加至支路数;当支路较多时,可不必拘泥于逐个递加,只要满足支路编号原则即可。例如习题3-4:8.5+j20.5W1.22+j20.2Wj2.82×10-4Sj2.82×10-4S118kV113kVDST=0.17+j1.7MVA40+j30MVA20+j15MVA123程序二叉树结构示意图:本二叉树中节点1即支路1为题目中节点1与节点2之间的部分;本二叉树中节点2即支路2为题目中节点2与节点3之间的部分;对于习题3-3:程序二叉树结构示意图:本二叉树中节点2即支路2为题目中节点1与节点2之间的部分;本二叉树中节点1即支路1为题目中节点2与节点3之间的部分;本二叉树中节点3即支路3为题目中节点2与节点4之间的部分.拓展:如下多支路网络:对于三节点网络需先进行以下网络处理转化为标准二叉树,而后进行计算;图中三角形表明该项阻抗为零,为纯导线,并进行相应参数补充进行计算。程序说明文档*******************************************************************************************************************************************************本程序测试使用方法:在E盘根目录下建立输入文件:输入文件名:input.txt;将所附算例对应输入文件内容复制粘贴至上述文件中,在VC++6.0环境下运行cpp文件得出结果。输出文件在E盘根目录下输出文件名为:data.txt;*******************************************************************************************************************************************************程序功能说明:本程序可以计算任意长度线型开始网络潮流;支持多电压等级下的计算;可在除供电节点外任意节点引出负载;*******************************************************************************************************************************************************输入格式说明:以支路为基本单位,按潮流方向输入数据:以下例示意:2//支路个数1,110,118,8.5,20.5,0.000564,0,0,1,0,0//线路等效的支路2,11,110,1.22,20.2,0,40,30,10,0.17,1.7//变压器等效的支路.//按此方式知道输入所有的支路.//输入从上到下的顺序为潮流在.//线型开式网络中的流动方向/*第一行输入支路个数,回车第二行至后输入各个支路参数,回车分隔不同支路;各行输入的支路参数顺序是:支路编号,末端电压,始端电压,线路等效电阻,线路等效感抗,线路等效容纳,末端输入有功,末端输入无功,变比,变压器有功励磁损耗,变压器无功励磁损耗对于线路等效电路:变压器有功/无功损耗输入零,变比输入1;对于变压器等效电路:所有的参数均归算至高压侧,Rt,Xt对应输入线路等效电阻/感抗的位置,线路等效容抗为零;对于个节点的引出负荷:输入至以此节点为末节点的支路的末端输入有功/无功部分;*/********************************************************************************************************************************************************输出文件格式说明:输出的内容包括(1)支路信息:每个支路元件的始端有功、无功和末端有功、无功;有功损耗无功损耗;电压损耗;(2)全网信息:全网的总电源有功、总负荷有功、有功损耗、网损率;(3)迭代信息:每次完整迭代后的所有内容;具体在输出文件中都明确标出。*********************************************************************************************************************************************************程序中变量定义说明:类中定义的变量classline_part{//定义支路类doubleU[2];//支路电压降落:U[0]电压降落横分量,U[1]电压降落纵分量doublek;//变压器变比doubleval;//支路排序doubleU_end;//支路末端电压doubleU_begin;//支路首段电压doubleX[3];//支路等效阻抗:X[0]电阻,X[1]感抗,X[2]容纳doubleS_end[2];//支路末端功率:S_end[0]有功,S_end[1]无功doubleS_begin[2];//支路首段功率:S_begin[0]有功,S_begin[1]无功doubleS0[2];//变压器励磁损耗:S0[0]有功,S0[1]无功doubleS_org[2];//支路末端负载:S_org[0]有功,S_org[1]无功line_part*lchild,*rchild;//支路的后继两个支路}classBinTree{//定义树类voidPreOrder(){PreOrder(root);};//树的先序遍历修改电压voidPostOrder(){PostOrder(root);};//树的后序遍历修改潮流voiddisplay(){display(root);};//树的先序遍历显示数据line_part*root;//树的根,是一个支路类};主函数中定义的数据ofstreamoutfile;//输出数据流定ifstreaminfile;//输入数据流定constintM(a);//支路个数常量主程序(复制粘贴到C++就能用)**************************************************************************************************************************************************************#includefstream.h#includeiostream.h#includemath.hdoublep_cost_all=0;doublesqr(doublex){//平方计算函数returnx*x;};classline_part{//定义支路类private:doubleval;//支路排序doubleU_end;//支路末端电压doubleU_begin;//支路首段电压doubleX[3];//支路等效阻抗:X[0]电阻,X[1]感抗,X[2]容纳doubleS_end[2];//支路末端功率:S_end[0]有功,S_end[1]无功doubleS_begin[2];//支路首段功率:S_begin[0]有功,S_begin[1]无功doubleS0[2];//变压器励磁损耗:S0[0]有功,S0[1]无功doubleS_org[2];//支路末端负载:S_org[0]有功,S_org[1]无功line_part*lchild,*rchild;public:doubleU[2];//支路电压降落:U[0]电压降落横分量,U[1]电压降落纵分量doublek;//变压器变比public:line_part(){val=0;U_end=0;U_begin=0;X[0]=0;X[1]=0;X[2]=0;S_end[0]=S_org[0]=0;S_end[1]=S_org[1]=0;S_begin[0]=0;S_begin[1]=0;k=1;S0[0]=0;S0[1]=0;U[0]=0;U[1]=0;lchild=rchild=NULL;}line_part(doublevall,doubleu_end=0,doubleu_begin=0,doubler=0,doublex=0,doubleb=0,doublePe=0,doubleXe=0,doubleK=0,doubleP0=0,doubleQ0=0){val=vall;U_end=u_end;U_begin=u_begin;X[0]=r;X[1]=x;X[2]=b;S_end[0]=S_org[0]=Pe;S_end[1]=S_org[1]=Xe;S_begin[0]=0;S_begin[1]=0;k=K;S0[0]=P0;S0[1]=Q0;U[0]=0;U[1]=0;lchild=rchild=NULL;};friendclassBinTree;friendvoidpass_U(line_part*a,line_part*b,line_part*c);//电压传递函数friendvoidpass_w(line_part*a,line_part*b,line_part*c);//功率传递函数friendvoidpass_U2(line_part*a,line_part*b);//电压传递函数friendvoidpass_w2(line_part*a,line_part*b);//功率传递函数voidSbegin(){//支路首段功率计算函数doubleUend,I2;Uend=k*U_end;I2=(sqr(S_end[0])+sqr(S_end[1]-sqr(U_end)*X[2]/2))/sqr(Uend);S_begin[0]=S_end[0]+I2*X[0]+S0[0];S_begin[1]=S_end[1]+I2*X[1]+S0[1]-sqr(U_begin)*X[2]/2-sqr(U_end)*X[2]/2;};voidUend(){//支路末端电压计算函数doubleU_heng(0),U_zong(0);doublep_begin,q_begin;p_begin=S_begin[0]-S0[0];q_begin=S_begin[1]+sqr(U_begin)*X[2]/2-S0[1];U_heng=(p_begin*X[0]+q_begin*X[1])/U_begin;//U_heng即是△u2U_zong=(p_begin*X[1]-q_begin*X[0])/U_begin;//U_zong即是δu2U_end=sqrt(sqr(U_begin-U_heng)+sqr(U_zong))/k;U[0]=U_heng;U[1]=U_zong;};doubleget_val(){//返回支路编号if(this==0){return-1;}else{if(val0&&val100){returnval;}elsereturn-1;}};doubleget_Uend(){//返回支路末端电压returnU_end;};doubleget_Ubegin(){//返回支路首段电压returnU_begin;};doubleget_Pbegin(){//返回支路首段有功returnS_begin[0];};doubleget_Pend(){//返回支路末端有功ret

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功