电网潮流计算程序C++版本.doc_第1页
电网潮流计算程序C++版本.doc_第2页
电网潮流计算程序C++版本.doc_第3页
电网潮流计算程序C++版本.doc_第4页
电网潮流计算程序C++版本.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

看大家在人人上发了各种电力系统作业,刚编完我也来得瑟一下吧,基本上可以解决开式单直网络和树状网络的计算。树状网络计算时要自己先设定好支路的起始节点和终止节点标号以及计算顺序,本来想做一个树状图的的深度遍历来进行自动排序,不过从网上找到一个深度遍历代码太长,在此就偷个懒把顺序自己输进去了。测试后3-4,3-3,以及例3-2答案基本正确。另外fun3是不加入横向电压分量计算的函数,在例3-2计算用的是这个函数。另外就是迭代终止条件的问题上我只是设定固定迭代次数为3,也可以用精度来限定,大致就是如此吧。请大家多多指教了。源代码:#include #include #include #include using namespace std; struct node/节点类 int i;/节点编号 double U,P,Q,delta;/额定电压 计算负荷 电压相角 ; struct line/线路类 连接父节点子节点 node f_node,s_node;/父节点 子节点 double R,X,B;/线路参数R X B/2 double P_in,Q_in,P_out,Q_out,d_P,d_Q,D_U,d_U;/线路输入输出功率以及线路消耗功率 void Set_node(node nod1,node nod2) f_node=nod1; s_node=nod2; ; void fun1(line &lin)/由后往前递推功率 double p=lin.P_out; double q=lin.Q_out; double u=lin.s_node.U; lin.d_P=(p*p+q*q)/u/u*lin.R; lin.d_Q=(p*p+q*q)/u/u*lin.X; lin.P_in=lin.d_P+lin.P_out; lin.Q_in=lin.d_Q+lin.Q_out; ; void fun2(line &lin)/由前往后推电压 double p=lin.P_in; double q=lin.Q_in; double u=lin.f_node.U; lin.D_U=(p*lin.R+q*lin.X)/u; lin.d_U=(p*lin.X-q*lin.R)/u; lin.s_node.U=sqrt(pow(lin.f_node.U-lin.D_U,2)+pow(lin.d_U,2);/子节点电压 lin.s_node.delta=lin.f_node.delta-atan(lin.d_U/(lin.f_node.U-lin.D_U); ; void fun3(line &lin)/由前往后推电压不计横向分量 double p=lin.P_in; double q=lin.Q_in; double u=lin.f_node.U; lin.D_U=(p*lin.R+q*lin.X)/u; lin.d_U=(p*lin.X-q*lin.R)/u; lin.s_node.U=lin.f_node.U-lin.D_U,2;/子节点电压 lin.s_node.delta=lin.f_node.delta-atan(lin.d_U/(lin.f_node.U-lin.D_U); ; void main() int num_l; int num_n;/支路数 节点数 ifstream fin; fin.open(E:data.txt); finnum_nnum_l;/输入节点数支路数 ofstream fout; fout.open(E:databak.txt); node *nod; nod=new nodenum_n;/节点数目 line *lin; lin=new linenum_l;/线路数目 nod0.delta=0; double *u;/节点额定电压 u=new doublenum_n; for(int i=0;iui; ; double *p;/节点有功功率 p=new doublenum_n; for(int i=0;ipi; ; double *q;/节点无功功率 q=new doublenum_n; for(int i=0;iqi; ; for(int i=0;inum_n;i+)/设定节点标号 参数 nodi.i=i; nodi.P=pi; nodi.Q=qi; nodi.U=ui; ; double *r;/线路电阻 r=new doublenum_l; for(int i=0;iri; ; double *x;/线路电抗 x=new doublenum_l; for(int i=0;ixi; ; double *b;/线路电纳 b=new doublenum_l; for(int i=0;ibi; ; for(int i=0;inum_l;i+)/设定线路参数 lini.R=ri; lini.X=xi; lini.B=bi; ; for(int i=0;ilini.f_node.i; finlini.s_node.i; ; for(int i=0;inum_l;i+)/计算节点运算负荷 nodlini.f_node.i.Q-=lini.B*nodlini.f_node.i.U*nodlini.f_node.i.U; nodlini.s_node.i.Q-=lini.B*nodlini.s_node.i.U*nodlini.s_node.i.U; ; double *P_c,*Q_c;/保存运算负荷数据 P_c=new doublenum_n; Q_c=new doublenum_n; for(int tc=0;tcnum_n;tc+) P_ctc=nodtc.P; Q_ctc=nodtc.Q; ; for(int i=0;inum_l;i+)/设定线路节点数据 lini.Set_node(nodlini.f_node.i,nodlini.s_node.i); ; for(int re=0;re3;re+)/迭代运算开始 fout第re+1次迭代endl; double to_P(0),to_dP(0); for(int i=1;inum_n;i+) to_P+=nodi.P; ; for(int tc=0;tcnum_n;tc+)/重置运算负荷 nodtc.P=P_ctc; nodtc.Q=Q_ctc; ; for(int ts=0;tsnum_l;ts+)/置各线路初始输出功率为子节点运算负荷 lints.P_out=lints.s_node.P; lints.Q_out=lints.s_node.Q; ; for(int i=0;i0;j-) fun1(linj); nodlinj.f_node.i.P+=linj.P_in; nodlinj.f_node.i.Q+=linj.Q_in; for(int i=0;inum_l;i+)/设定线路节点数据 lini.Set_node(nodlini.f_node.i,nodlini.s_node.i); ; for(int ts=0;tsnum_l;ts+) lints.P_out=lints.s_node.P; lints.Q_out=lints.s_node.Q; ; ; fun1(linj); for(int i=0;inum_l;i+)/设定线路节点数据 lini.Set_node(nodlini.f_node.i,nodlini.s_node.i); ; int t=0;/求线路各点电压 for(t=0;tnum_l-1;t+) fun2(lint); nodlint.s_node.i.U=lint.s_node.U; nodlint.s_node.i.delta=lint.s_node.delta; for(int i=0;inum_l;i+)/设定线路节点数据 lini.Set_node(nodlini.f_node.i,nodlini.s_node.i); ; ; fun2(lint); nodlint.s_node.i.U=lint.s_node.U; nodlint.s_node.i.delta=lint.s_node.delta; fout支路信息:endl; for(int i=0;inum_l;i+)/输出线路信息 fout支路lini.f_node.i+1-lini.s_node.i+1:endl; fout始端功率:lini.P_in+jlini.Q_inendl; fout末端功率:lini.P_out+jlini.Q_outendl; fout功率损耗:lini.d_P+jlini.d_Qendl; fout电压损耗lini.f_node.U-lini.s_node.Uendl; ; fout节点信息:endl; for(int i=0;inum_n;i+)/输出节点信息 fout节点i+1endl; fout电压:nodi.U相角:nodi.delta*180/3.14endl; ; double *lu;/求最低电压及最低电压点 lu=new doublenum_n; int *lua; lua=new intnum_n; for(int i=0;inum_n;i+) lui=nodi.U; luai=i; ; for(int i=0;inum_n-1;i+) if(luilui+1) double st; int a; st=lui; a=luai; lui=lui+1; luai=luai+1; lui+1=st; luai+1=a; ; ; for(int i=0;inum_l;i+) to_dP+=lini.d_P; ; fout全网信息:endl; fout总电源有功:lin0.P_inendl; fout总负荷有功:to_Pendl; fout总有功损耗:to_dPendl; fout网损率:to_dP/(to_P+lin0.P_in)endl; fout最低电压:lunum_n-1最低电压点:luanum_n-1+1endl; deletelu; deletelua; ; deletenod; deletelin; deleteu; deletep; deleteq; deleter; deletex; deleteb; 附:3-4的data文件3 2 113 110 100 0 0.17 20 0 1.7 15 8.5 1.22 20.5 20.2 0.000282 0 0 1 1 2输出为:第1次迭代 支路信息: 支路1-2: 始端功率:1.02165+j0.693296 末端功率:1.00434+j0.658675 功率损耗:0.0173106+j0.0346211 电压损耗0.274063 支路2-3: 始端功率:0.5034+j0.3068 末端功率:0.5+j0.3 功率损耗:0.0034+j0.0068 电压损耗0.109 支路2-4: 始端功率:0.200938+j0.151875 末端功率:0.2+j0.15 功率损耗:0.0009375+j0.001875 电压损耗0.0739643 节点信息: 节点1 电压:10.5相角:0 节点2 电压:10.2259相角:-0.864932 节点3 电压:10.1169相角:-1.25281 节点4 电压:10.152相角:-1.072 全网信息: 总电源有功:1.02165 总负荷有功:1 总有功损耗:0.0216481 网损率:0.0107081 最低电压:10.1169最低电压点:3 第2次迭代 支路信息: 支路1-2: 始端功率:1.02078+j0.69156 末端功率:1.00423+j0.658463 功率损耗:0.0165484+j0.0330969 电压损耗0.273567 支路2-3: 始端功率:0.503322+j0.306644 末端功率:0.5+j0.3 功率损耗:0.00332186+j0.00664371 电压损耗0.108957 支路2-4: 始端功率:0.20091+j0.151819 末端功率:0.2+j0.15 功率损耗:0.000909642+j0.00181928 电压损耗0.0739403 节点信息: 节点1 电压:10.5相角:0 节点2 电压:10.2264相角:-0.86489 节点3 电压:10.1175相角:-1.25273 节点4 电压:10.1525相角:-1.07194 全网信息: 总电源有功:1.02078 总负荷有功:1.70434 总有功损耗:0.0207799 网损率:0.00762533 最低电压:10.1175最低电压点:3 第3次迭代 支路信息: 支路1-2: 始端功率:1.02078+j0.691556 末端功率:1.00423+j0.658462 功率损耗:0.0165468+j0.0330936 电压损耗0.273566 支路2-3: 始端功率:0.503322+j0.306643 末端功率:0.5+j0.3 功率损耗:0.0033215+j0.00664301 电压损耗0.108957 支路2-4: 始端功率:0.20091+j0.151819 末端功率:0.2+j0.15 功率损耗:0.000909549+j0.0018191 电压损耗0.0739402 节点信息: 节点1 电压:10.5相角:0 节点2 电压:10.2264相角:-0.86489 节点3 电压:10.1175相角:-1.25273 节点4 电压:10.1525相角:-1.07194 全网信息: 总电源有功:1.02078 总负荷有功:1.70423 总有功损耗:0.0207778 网损率:0.00762487 最低电压:10.1175最低电压点:3例3-2的data:4 3 10.5 10 10 10 0 0.3 0.5 0.2 0 0.2 0.3 0.15 1.2 1 1.5 2.4 2 3 0 0 0 0 1 1 2 1 3输出:第1次迭代支路信息:支路1-2:始端功率:1.02165+j0.693296末端功率:1.00434+j0.658675功率损耗:0.0173106+j0.0346211电压损耗0.275227支路2-3:始端功率:0.5034+j0.3068末端功率:0.5+j0.3功率损耗:0.0034+j0.0068电压损耗0.109244支路2-4:始端功率:0.200938+j0.151875末端功率:0.2+j0.15功率损耗:0.0009375+j0.001875电压损耗0.0740389节点信息:节点1电压:10.5相角:0节点2电压:10.2248相角:-0.864932节点3电压:10.1155相角:-1.2529节点4电压:10.1507相角:-1.07205全网信息:总电源有功:1.02165总负荷有功:1总有功损耗:0.0216481网损率:0.0107081最低电压:10.1155最低电压点:3第2次迭代支路信息:支路1-2:始端功率:1.02078+j0.69157末端功率:1.00423+j0.658465功率损耗:0.0165523+j0.0331045电压损耗0.274734支路2-3:始端功率:0.503323+j0.306646末端功率:0.5+j0.3功率损耗:0.003

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论