1、华电 通用潮流上机程序#include stdafx.h#include #include #include NEquation.h#include math.h#include config.husing namespace std;void GetData(int& nBus, int& nBranch)/Read the data FILE *fp; int i; if(fopen_s(&fp,datadata5.txt,r)!=0) printf(Can not open the file named data.txt n); return; fscanf_s(fp,%d,%d,&nB
2、us,&nBranch,100); for(i=0;inBus;i+) fscanf_s(fp,%d,%f,%f,%f,%f,%f,%f,%d,&gBusi.No,&gBusi.Voltage,&gBusi.Phase, &gBusi.GenP,&gBusi.GenQ,&gBusi.LoadP,&gBusi.LoadQ,&gBusi.Type,100); for(i=0;inBranch;i+) fscanf_s(fp,%d,%d,%d,%f,%f,%f,%f,&gBranchi.No,&gBranchi.No_I,&gBranchi.No_J, &gBranchi.R,&gBranchi.X
3、,&gBranchi.B,&gBranchi.k,100); fclose(fp);void GetYMatrix(int& nBus, int& nBranch) int i,j,bus1,bus2; float r,x,d,g,b,k; FILE *fp; for(i=0;inBus;i+) for(j=0;jnBus;j+) gY_Gij=0; gY_Bij=0; for(i=0; inBranch; i+) bus1=gBranchi.No_I-1; bus2=gBranchi.No_J-1; r=gBranchi.R; x=gBranchi.X; d=r*r+x*x; g=r/d;
4、b=-x/d; if(gBranchi.k=0) if(bus1 != bus2) gY_Gbus1bus1=gY_Gbus1bus1+g; gY_Gbus2bus2=gY_Gbus2bus2+g; gY_Gbus1bus2=gY_Gbus1bus2-g; gY_Gbus2bus1=gY_Gbus2bus1-g; gY_Bbus1bus1=gY_Bbus1bus1+b+gBranchi.B; gY_Bbus2bus2=gY_Bbus2bus2+b+gBranchi.B; gY_Bbus1bus2=gY_Bbus1bus2-b; gY_Bbus2bus1=gY_Bbus2bus1-b; else
5、 break; else / add your codes / output the Y matrix if(fopen_s(&fp,dataymatrix1.txt,w)!=0) printf(Can not open the file named ymatrix.txt n); return ; fprintf(fp,-Y Matrix-n); for(i=0;inBus;i+) for(j=0;jnBus;j+) fprintf_s(fp,Y(%d,%d)=(%10.5f,%10.5f)n,i+1,j+1,gY_Gij,gY_Bij); fclose(fp); void SetIniti
6、al(int& nBus) int i; for(i=0;inBus;i+) if(gBusi.Type=2) gfi=gBusi.Voltage*sin(gBusi.Phase); gei=gBusi.Voltage*cos(gBusi.Phase); else gfi=0; gei=1; void GetUnbalance(int& nBus) int i,j; float sum1=0,sum2=0; FILE *fp; for(i=0;inBus;i+) if (gBusi.Type!=2) sum1=0; sum2=0; for(j=0;jnBus;j+) sum1=sum1+gei
7、*(gY_Gij*gej-gY_Bij*gfj)+gfi*(gY_Gij*gfj+gY_Bij*gej); /chuqu balance point add your codes sum2=sum2+gfi*(gY_Gij*gej-gY_Bij*gfj)-gei*(gY_Gij*gfj+gY_Bij*gej); gDelta_Pi= gBusi.GenP-gBusi.LoadP-sum1; gDelta_Qi= gBusi.GenQ-gBusi.LoadQ-sum2; if (gBusi.Type=1) gDelta_Qi= gBusi.Voltage* gBusi.Voltage-(gfi*
8、gfi+gei*gei); for (i=0;inBus;i+) j=2*i; gDelta_PQj=gDelta_Pi; gDelta_PQj+1=gDelta_Qi; void GetJaccobi(int& nBus) int i,j,k; float s1=0,s2=0; FILE *fp; for (i=0;i2*nBus;i=i+2) / add your codes for(j=0;j2*nBus;j=j+2) if (i/2=j/2) / i is or not=j. s1=0; s2=0; for (k=0;knBus;k+) s1=s1+gY_Gi/2k*gfk+gY_Bi
9、/2k*gek; s2=s2+gY_Gi/2k*gek-gY_Bi/2k*gfk; gJaccobiij=gY_Gi/2j/2*gfj/2-gY_Bi/2j/2*gej/2+s1; gJaccobiij+1=gY_Gi/2j/2*gej/2+gY_Bi/2j/2*gfj/2+s2; if (gBusi/2.Type=0) /PQ pioint and PV Point difference. gJaccobii+1j=-(gY_Gi/2j/2*gej/2+gY_Bi/2j/2*gfj/2)+s2; gJaccobii+1j+1=gY_Gi/2j/2*gfj/2-gY_Bi/2j/2*gej/2
10、-s1; else /pv bus. gJaccobii+1j=2*gfi/2; gJaccobii+1j+1=2*gei/2; else gJaccobiij=gY_Gi/2j/2*gfi/2-gY_Bi/2j/2*gei/2; gJaccobiij+1=gY_Gi/2j/2*gei/2+gY_Bi/2j/2*gfi/2; if (gBusi/2.Type=0) gJaccobii+1j=-gJaccobiij+1; gJaccobii+1j+1=gJaccobiij; else gJaccobii+1j=0; gJaccobii+1j+1=0; / output Jaccobimatrix
11、. if(fopen_s(&fp,dataJaccobimatrix.txt,w)!=0) printf(Can not open the file named Jaccobimatrix.txt n); return ; fprintf(fp,-JaccobiMatrix-n); for(i=0;i2*nBus;i+) fprintf_s(fp,%d ,i+1); for(j=0;j2*nBus;j+) fprintf_s(fp,%10.5f,gJaccobiij); fprintf_s(fp,n); fclose(fp); void GetRevised(int& nBus) int i,
12、j; NEquation ob1; FILE *fp; ob1.SetSize(2*nBus); for(i=0;i2*nBus;i+) for(j=0;j2*nBus;j+) ob1.Data(i,j)=gJaccobiij; ob1.Value(i)=gDelta_PQi; ob1.Run(); for(i=0;i2*nBus;i+) gDelta_fei=ob1.Value(i); for (i=0;inBus;i+) gDelta_fi=gDelta_fe2*i; gDelta_ei=gDelta_fe2*i+1; / output delta_f and delta_e. if(fo
13、pen_s(&fp,dataDelta_f and Delta_e matrix.txt,w)!=0) printf(Can not open the file named Delta_f and Delta_e matrix.txt n); return ; fprintf(fp,-Delta_f and Delta_e Matrix-n); for(i=0;i2*nBus;i+) fprintf(fp, Delta %d=%10.8f n,i+1,gDelta_fei); fprintf_s(fp,n); fclose(fp); void GetNewValue(int& nBus) in
14、t i; FILE *fp; for (i=0;inBus;i+) if(gBusi.Type!=2) gfi=gfi+gDelta_fi; gei=gei+gDelta_ei; if(fopen_s(&fp,datagf and ge matrix.txt,w)!=0) printf(Can not open the file named gf and ge matrix.txt n); return ; fprintf(fp,-gf and ge Matrix-n); for(i=0;inBus;i+) fprintf(fp, gf%d=%10.6f, ge%d=%10.6fn,i+1,g
15、fi,i+1,gei); fprintf_s(fp,n); fclose(fp); int main(int argc, char* argv) int i,Count_Num,j,n,nBus,nBranch; float maxValue,s1,s2,k,su1,su2,deltalinep1212=0,0,deltalineq1212=0,0,deltap1212=0,0,deltaq1212=0,0; FILE *fp; float g,b,d,r,x; GetData(nBus,nBranch); GetYMatrix(nBus,nBranch); SetInitial(nBus);
16、 for(Count_Num=0;Count_Num=20;Count_Num+) GetUnbalance(nBus); GetJaccobi(nBus); GetRevised(nBus); GetNewValue(nBus); maxValue=fabs(gDelta_fe0); for(i=1;i=2*(nBus-1)-1;i+) if(maxValuefabs(gDelta_fei) maxValue=fabs(gDelta_fei); if(maxValuePrecision) break; printf(countnumber %dn,Count_Num); for(i=0;in
17、Bus;i+) printf(bus(%d).voltage=%10.6f,angle=%.6f , e=%.6f,f=%.6fn,i+1,sqrt(gei*gei+gfi*gfi),atan(gfi/gei)/3.1415926*180,gei,gfi); /output zhuru power. for (i=0;inBus;i+) if(gBusi.Type!=0) su1=0; su2=0; for(j=0;jnBus;j+) su1=su1+gei*(gY_Gij*gej-gY_Bij*gfj)+gfi*(gY_Gij*gfj+gY_Bij*gej); su2=su2+gfi*(gY
18、_Gij*gej-gY_Bij*gfj)-gei*(gY_Gij*gfj+gY_Bij*gej); gBusi.GenP=su1; gBusi.GenQ=su2; printf(zhurup%d=%10.7f zhuruq%d=%10.7f n,i+1,gBusi.GenP,i+1,gBusi.GenQ); for(n=0; nnBranch; n+) i=gBranchn.No_I-1; j=gBranchn.No_J-1; r=gBranchn.R; x=gBranchn.X; d=r*r+x*x; g=r/d; b=-x/d; if(gBranchn.k=0) if(i!=j) delt
19、apij= (gei*(gei-gej)+gfi*(gfi-gfj)*g+(gei*gfj-gej*gfi)*b; deltaqij=-(gei*gei+gfi*gfi)*gBranchn.B+(gei*gfj-gej*gfi)*g-(gei*(gei-gej)+gfi*(gfi-gfj)*b; deltapji=(gej*(gej-gei)+gfj*(gfj-gfi)*g+(gej*gfi-gei*gfj)*b; deltaqji=-(gej*gej+gfj*gfj)*gBranchn.B+(gej*gfi-gei*gfj)*g-(gej*(gej-gei)+gfj*(gfj-gfi)*b;
20、 else break; else k=gBranchn.k; deltapij= (gei*gei+gfi*gfi)*k*(k-1)*g+(gei*(gei-gej)+gfi*(gfi-gfj)*g*k+(gei*gfj-gej*gfi)*b*k; deltaqij=-(gei*gei+gfi*gfi)*k*(k-1)*b+(gei*gfj-gej*gfi)*g*k-(gei*(gei-gej)+gfi*(gfi-gfj)*b*k; deltapji=(gej*gej+gfj*gfj)*(1-k)*g+(gej*(gej-gei)+gfj*(gfj-gfi)*g*k+(gej*gfi-gei
21、*gfj)*b*k; deltaqji=-(gej*gej+gfj*gfj)*(1-k)*b+(gej*gfi-gei*gfj)*g*k-(gej*(gej-gei)+gfj*(gfj-gfi)*b*k; for (i=0;inBus-1;i+) for(j=i+1;jnBus;j+) deltalinepij=deltapij+deltapji; deltalineqij=deltaqij+deltaqji; printf(deltalinep%d%d= %10.7f, deltalineq%d%d=%10.7f n,i+1,j+1,deltalinepij,i+1,j+1,deltalin
22、eqij); s1=0;s2=0; for(i=0;inBus;i+) for(j=0;jnBus;j+) s1=s1+deltalinepij; s2=s2+deltalineqij; printf(totallineP=%10.7f, totallineQ=%10.7fn,s1,s2); if(fopen_s(&fp,databus voltage and zhuru power.txt,w)!=0) printf(Can not open the file named bus voltage and zhuru power.txt n); return 0; fprintf(fp,-bu
23、s voltage and zhuru power-n); for(i=0;inBus;i+) fprintf_s(fp,zhurup%d=%10.7f, zhuruq%d=%10.7f n,i+1,gBusi.GenP-gBusi.LoadP,i+1,gBusi.GenQ-gBusi.LoadQ); fprintf_s(fp,n); for(i=0;inBus;i+) fprintf_s(fp,bus(%d).voltage=%10.5f,angle=%10.5fn,i+1,sqrt(gei*gei+gfi*gfi),atan(gfi/gei); fprintf_s(fp,n); for(i
24、=0;inBus;i+) for(j=i+1;jnBus;j+) fprintf_s(fp,deltalinep%d%d= %10.5f, deltalineq%d%d=%10.5f n,i+1,j+1,deltalinepij,i+1,j+1,deltalineqij); fprintf_s(fp,n); fclose(fp); return (0);4,41,1.00,0.00,0.00,0.00,0.30,0.18,02,1.00,0.00,0.00,0.00,0.55,0.13,03,1.10,0.00,0.50,0.00,0.00,0.00,14,1.05,0.00,0.00,0.00,0.00,0.00,21,1,2,0.10,0.41,0.01528,0.02,1,3,0.00,0.30,0.00000,1.13,1,4,0.12,
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2