电力系统通用潮流计算C语言程序.doc_第1页
电力系统通用潮流计算C语言程序.doc_第2页
电力系统通用潮流计算C语言程序.doc_第3页
电力系统通用潮流计算C语言程序.doc_第4页
电力系统通用潮流计算C语言程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

#include #include #include#includeusing namespace std; /节点号 类型 负荷有功 负荷无功母线数据(类型 1PV节点,2PQ节点,3平衡节点)struct BUS int busno;int type;float Pd;float Qd;/发电机数据 节点号 有功发电 电压幅值struct Generatorint busno;float Pg;float Vg;/支路信息 节点I 节点J R X B/2 kstruct Lineint busi;int busj;float R;float X;float B;float k;/deltaP deltaQ deltaV2/void fun1(double YG50,double YB50,double e,double f,int type,int N,double W,double P,double Q,double V)double dP=0,dQ=0,dV=0;int i,j;for(i=0;iN-1;i+)double A=0,B=0;for(j=0;jN;j+)A+=YGij*ej-YBij*fj; B+=YGij*fj+YBij*ej; dV=Vi*Vi-ei*ei-fi*fi; dP=Pi-ei*A-fi*B; W2*i=dP; dQ=Qi-fi*A+ei*B; if(typei=1) W2*i+1=dQ;else W2*i+1=dV;/Jacobi矩阵/void Jacobi(double YG50,double YB50,double e50,double f50,int type50,int N ,double Ja100101) int i,j; for(i=0;iN;i+) for(j=0;jN;j+) if(i!=j) if(typei=1) Ja2*i2*j=-(YGij*ei+YBij*fi); Ja2*i2*j+1=YBij*ei-YGij*fi; Ja2*i+12*j=Ja2*i2*j+1; Ja2*i+12*j+1=-Ja2*i2*j; else Ja2*i2*j=-YGij*ei+YBij*fi; Ja2*i2*j+1=YBij*ei-YGij*fi; Ja2*i+12*j+1=Ja2*i+12*j=0; else double a50=0,b50=0; for(int k=0;kN;k+) ai+=(YGik*ek-YBik*fk); bi+=(YGik*fk+YBik*ek); Ja2*i2*j=-ai-YGii*ei-YBii*fi; Ja2*i2*j+1=-bi+YBii*ei-YGii*fi; if(typei=1) Ja2*i+12*j=bi+YBii*ei-YGii*fi; Ja2*i+12*j+1=-ai+YGii*ei+YBii*fi; else Ja2*i+12*j=-2*ei; Ja2*i+12*j+1=-2*fi; /高斯消元法解方程组函数/void gauss(double a101,int n) int i,j,k;double c; for(k=0;kn-1;k+) c=akk; for(j=k;j=n;j+) akj/=c; for(i=k+1;in;i+) c=aik; for(j=k;j=0;k-) for(j=k+1;jn;j+) akn-=akj*ajn; void main()ifstream fin;int N=0,GS=0,LD=0,ZLs=0; /节点数 发电机数 负荷数 支路数/BUS *B; Generator *G;Line *L;/从文本中读入原始数据到数组中/fin.open(C:data.txt);if(!fin) cout输入数据文件不存在!m1i;if(m1i=0)break;finm2im3im4i;N+;B =new BUSN;for (i=0;im1i;if(m1i=0)break;finm4im3i;GS+;G =new GeneratorGS;for (i=0;im1i;if(m1i=0)break;finm2im3im4im5im6i;ZLs+;L =new LineZLs;for (i=0;iZLs;i+)Li.busi=m1i;Li.busj=m2i;Li.R=m3i;Li.X=m4i;Li.B=m5i;Li.k=m6i; LD=N-GS;fin.close();/节点导纳矩阵形成/double YB5050,YG5050,BB5050,K5050;for(i=0;iN;i+)for(j=0;jN;j+)YBij=0;YGij=0;BBij=0;Kij=1;for (l=0;lZLs;l+)i=Ll.busi-1;j=Ll.busj-1;Kij=Ll.k;BBij=BBji=Ll.B;YGij=YGji=Ll.R/(Ll.R*Ll.R+Ll.X*Ll.X);YBij=YBji=-Ll.X/(Ll.R*Ll.R+Ll.X*Ll.X);for(i=0;iN;i+)for(j=i;jN;j+) Kij=Kji;Kji=1;for(j=0;jN;j+)if(i!=j)YGii=YGii+(YGij*Kij*Kij);YBii=YBii+(YBij*Kij*Kij+BBij);/修正后/for (l=0;lZLs;l+)i=Ll.busi-1;j=Ll.busj-1;Kij=Ll.k;YGij=-YGij*Kij;YGji=YGij;YBij=-YBij*Kij;YBji=YBij;int type50=0;for(i=0;iN;i+)typei=Bi.type;/PQV的获得/double P50,Q50,V50;for(i=0;iN;i+)Pi=0;Qi=0;Vi=0;Pi=-Bi.Pd;Qi=-Bi.Qd;for (i=0;iGS;i+)PGi.busno-1=Gi.Pg;VGi.busno-1=Gi.Vg;/ 求A=e+f/double e50=0,f50=0;double C100=0,D100=0;for(i=0;iN;i+)if(Vi=0)C2*i=1;else C2*i=Vi;double W100=0,Ja100101=0;/调用Jacobi函数和高斯函数/for(int t=1;t10;t+)for(i=0;i2*N-2;i+)ei=C2*i;fi=C2*i+1;fun1(YG,YB,e,f,type,N,W,P,Q,V);double it=fabs(W0);for(i=1;i2*N-2;i+)if (itfabs(Wi) it=fabs(Wi);j=i;/中间迭代过程/coutsetw(10)迭代次数setw(20)最大的功率误差setw(8)节点号endl;coutsetw(10)tsetw(20)itsetw(8)j/2+1endl;if (it0.00001) break; Jacobi(YG,YB,e,f,type,N,Ja);for(i=0;i2*N-2;i+)Jai2*N-2=Wi; /高斯消元法解方程/gauss(Ja,2*N-2); for(i=0;i2*N-2;i+)Di=-Jai2*(N-1);Ci+=Di;/平衡节点/for(i=0;iN;i+)double a=0,b=0;for(int j=0;jN;j+)a+=(YGij*ej-YBij*fj);b+=(YBij*ej+YGij*fj);Pi=ei*a+fi*b;Qi=fi*a-ei*b; /支路/double PZL100101=0,QZL100101=0,pr100101=0,qx100101=0;double x1=0,x2=0,y1=0,y2=0,I2=0;for(int k=0;kZLs;k+) i=Lk.busi-1;j=Lk.busj-1;x1=ei/Lk.k-ej;y1=fi/Lk.k-fj;x2=-ei*YGij-fi*YBij;y2=-fi*YGij+ei*YBij;QZLij=(x1*y2-x2*y1);PZLij=(x1*x2+y1*y2);I2=(PZLij*PZLij+QZLij*QZLij)/(ei*ei+fi*fi);prij=I2*Lk.R;qxij=I2*Lk.X-(ei*ei+fi*fi+ej*ej+fj*fj)*Lk.B;QZLij+=(ei*ei+fi*fi)*(-Lk.B);x1=ej*Lk.k-ei;y1=fj*Lk.k-fi;x2=-ej*YGji-fj*YBji;y2=-fj*YGji+ej*YBji;QZLji=(x1*y2-x2*y1);PZLji=(x1*x2+y1*y2);I2=(PZLji*PZLji+QZLji*QZLji)/(ej*ej+fj*fj);prji=I2*Lk.R;qxji=I2*Lk.X-(ei*ei+fi*fi+ej*ej+fj*fj)*Lk.B;QZLji+=(ej*ej+fj*fj)*(-Lk.B); /全网数据/int high=1,low=1; double PG=0,PL=0,Prr=0,Vh=sqrt(e0*e0+f0*f0),Vl=sqrt(e0*e0+f0*f0);for(k=0;kVh)Vh=sqrt(ek*ek+fk*fk);high=k+1;if(sqrt(ek*ek+fk*fk)Vl)Vl=sqrt(ek*ek+fk*fk);low=k+1; /输出数据到文件databak.txt/ofstream fout;fout.open(C:databak.txt);fout节点endl; foutsetw(8)节点号setw(16)Vsetw(16)弧度setw(16)发电Psetw(16)发电Qsetw(16)负荷Psetw(16)负荷Qendl;for(i=0;iLD;i+) foutsetw(8)i+1setw(16)sqrt(ei*ei+fi*fi)setw(16)atan2(fi,ei)*180/3.14159setw(16)0setw(16)0setw(16)Bi.Pdsetw(16)Bi.Qdendl;for(j=0;jGS;j+) i=Gj.busno-1; foutsetw(8)i+1setw(16)Visetw(16)atan2(fi,ei)*180/3.14159setw(16)Pisetw(16)Qisetw(16)0setw(16)0endl; fout支路 endl; foutsetw(4)isetw(4)jsetw(10)i_j有功setw(10)i_j无功setw(10)j_i有功setw(12)j_i无功setw(12)有功损耗setw(12)无功损耗endl; for (k=0;kZLs;k+) i=Lk.busi-1;j=Lk.busj-1; foutsetw(4)Lk.busisetw(4) Lk.busj setw(10)PZLij setw(10)QZLijsetw(10) PZLji setw

温馨提示

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

评论

0/150

提交评论