潮流計(jì)算的pq分解法,用c語(yǔ)言實(shí)現(xiàn)的_第1頁(yè)
潮流計(jì)算的pq分解法,用c語(yǔ)言實(shí)現(xiàn)的_第2頁(yè)
潮流計(jì)算的pq分解法,用c語(yǔ)言實(shí)現(xiàn)的_第3頁(yè)
潮流計(jì)算的pq分解法,用c語(yǔ)言實(shí)現(xiàn)的_第4頁(yè)
潮流計(jì)算的pq分解法,用c語(yǔ)言實(shí)現(xiàn)的_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TOC\o"1-5"\h\z//PQ分解法潮流//〃文件輸入格式:節(jié)點(diǎn)總數(shù)n(包括聯(lián)絡(luò)節(jié)點(diǎn)),支路數(shù)zls//〃節(jié)點(diǎn)數(shù)(發(fā)電機(jī)和負(fù)荷)nb,接地電抗數(shù)mdk,迭代精度eps//〃考慮負(fù)荷靜特性標(biāo)志kk2(0考慮),平衡節(jié)點(diǎn)號(hào),優(yōu)化標(biāo)志(0不優(yōu)化)〃〃最大迭代次數(shù)itl,支路左右節(jié)點(diǎn)號(hào)izl[]Jzl[],支路電阻zr[],電抗zx[]//〃支路容納zyk[],節(jié)點(diǎn)號(hào)nob[]及標(biāo)志nobt[](0-PQ,-l-PV)//〃發(fā)電機(jī)和負(fù)荷有功、無功pg[],qg[],pl[],ql[]//〃電壓v0[](pv節(jié)點(diǎn)輸入實(shí)際值,PQ節(jié)點(diǎn)任輸入一值)〃〃電抗節(jié)點(diǎn)號(hào)idk[],電抗值dkk[]//□include"math.h”□include"stdio.h”#defineNS2000〃最大節(jié)點(diǎn)數(shù)#defineNS2NS*2#defineNS41000〃NS4、NS必須大于2*zls。#defineZS3000〃最大支路數(shù)#defineZS2ZS*2#defineDKS200〃最大電抗器數(shù)#defineN2ZS*4SdefineN3ZS*8+NS*4FILE*fpl,*fp2;charinname[12],outname[12];//fpl輸入數(shù)據(jù)文件指針fp2輸出文件指針//inname[]輸入數(shù)據(jù)文件名outname[]輸出數(shù)據(jù)文件名intn,zls,nb,mdk,mpj,bnsopton,itl,dsdzkk2,nzls;//節(jié)點(diǎn)總數(shù)n(包括聯(lián)絡(luò)節(jié)點(diǎn))支路數(shù)(回路數(shù))zls節(jié)點(diǎn)數(shù)nb(發(fā)電機(jī)和負(fù)荷)//接地電抗數(shù)mdk精度eps平衡節(jié)點(diǎn)號(hào)mpj//節(jié)點(diǎn)優(yōu)化(標(biāo)志)bnsopton(=0節(jié)點(diǎn)不優(yōu)化,!=0節(jié)點(diǎn)優(yōu)化)//最大迭代次數(shù)itl最低電壓或最大功率誤差節(jié)點(diǎn)號(hào)dsd//負(fù)荷靜特性標(biāo)志(=0考慮負(fù)荷靜特性)//支路數(shù)(雙回線算一條支路)intizl[ZS]zjzl[ZS]zidk[DKS],yds[NS],ydz[NS],iy[ZS2];//izl[]Jzl[]Jdk[]:分別存放左、右節(jié)點(diǎn)號(hào)和電抗器節(jié)點(diǎn)號(hào)。//yds。存放各行非零非對(duì)角元素的個(gè)數(shù)。//ydz[i]是第i行第一個(gè)非零非對(duì)角元素的首地址,//即在所有非零非對(duì)角元素中的次序號(hào)//M]存放列足碼。intnnew[NS4],old[NS],nob[NS],nobt[NS];//nnew[]zold[]存放的是新、舊節(jié)點(diǎn)號(hào)。//nnew[i]中為i對(duì)應(yīng)的新號(hào)//nob。存放的是節(jié)點(diǎn)號(hào)。nobt[]存放的是節(jié)點(diǎn)類型,0:pq節(jié)點(diǎn),?1:pv節(jié)點(diǎn)。doubleeps,dsm,vmin,dph,dqh,af[3];//eps迭代收斂精度,dsm最大功率誤差//vmin:系統(tǒng)最低電壓值。dph,dqh:系統(tǒng)有、無功損耗。//af[O]和af[l]分別是負(fù)荷有功功率、無功功率靜態(tài)特性系數(shù)。doublev00;//v00:系統(tǒng)平均電壓ci,cj分別作為節(jié)點(diǎn)i,j的電壓相角的臨時(shí)存儲(chǔ)單元。doublezr[ZS],zx[ZS],zyk[ZS],dkk[DKS],gii[NS],bii[NS],yg[ZS2],yb[ZS2];doublepg[NS],qg[NS],pl[NS],ql[NS]zvO[NS]zv[NS],va[NS];//支路電阻zr[]支路電抗zx[]輸電線路充電容納zyk[](yO/2)//接地電抗dkk[]對(duì)角元實(shí)部gii[]對(duì)角元虛部//非對(duì)角元實(shí)部yg[]非對(duì)角元虛部yb[]//Pg[],qg[],pl[],ql[]:發(fā)電機(jī),負(fù)荷功率實(shí)、虛部//v[]是電壓幅值,va[]是電壓相角。doublew[NS2],kg[3],b[NS2];intnewsort[NS4];//newsort[i]存放i對(duì)應(yīng)的老號(hào)voidinitial();voidpqflow();voidout();voiddataio();voidbnsopt();voidzlsort(int*nnew);voidprinto();voidprinty();voidy2();voidyaO();voidyzb();voidjdgl(intkqO);voidbbhl(intkqO);voidcalc();intiabs(inta);voidbranch_output();voidnewval(double*aa);voidprintc();voidiswap();voidswap();voidprintf2(double*aa,double*bb,intn);voidcalc(int*iuzdouble*u,double*di,int*nfd,double*b);voidprinti(int*aa,intn);voidprintfl(double*aa,intn);intfind(intk,inta[],int*z);voidyzb(intt,int*iu,double*u,double*dizint*nfd);intisgn(inta,intb);voidyyl();voidy3();voidnewtoold();intmain(void)initial();//初始化pqflow();//pq潮流計(jì)算out();〃輸出節(jié)點(diǎn)和支路數(shù)據(jù)return1;}intisgn(inta,intb)//****本函數(shù)功能返回值為a的絕對(duì)值b的符號(hào)****//〃參數(shù)1提供值,參數(shù)2提供符號(hào)〃if(b<0)if(a>0)a=-a;returna;}intfind(intk,inta[],int*z)//****本函數(shù)查找a[]中是否有fabs(k)有則返回0,無則返回1****〃〃參數(shù)1為待查找量,參數(shù)2待搜索數(shù)組,參數(shù)3返回k在a[]中的次序號(hào)〃inti;for(i=1;i<=n;i++)if(iabs(k)==a[i]){*z=i;return1;}return0;}voidoldtonew()//****本函數(shù)將輸入數(shù)據(jù)中的節(jié)點(diǎn)號(hào)變成從1開始的連續(xù)節(jié)點(diǎn)號(hào)****//inti,j,k,iil,ii2,zls2,kl,k2,k3,k4,ip;zls2=zls+zls;for(i=1;i<=zls2;i++)newsort[i]=0;iil=0;for(i=1;i<=zls;i++){k=izl[i];if(!find(k,newsort,&ii2)){iil++;newsort[iil]=iabs(k);}k=jzl[i];if(!find(k,newsort,&ii2)){iil++;newsort[iil]=iabs(k);}}for(i=1;i<=iil-1;i++){for(j=i+1;j<=iil;j++){if(newsort[i]>newsortQ]){k=newsort[i];newsort[i]=newsort[j];newsort[j]=k;}}}for(i=1;i<=zls;i++){k=izl[i];if(findfk,newsort,&ii2))izl[i]=isgn(ii2,k);)elseprintf("error!");k=jzl[i];if(find(kznewsort,&ii2)){jzl[i]=isgn(ii2,k);)elseprintf("error!");printf("izl[%d]=%d,jzl[%d]=%d\n",i,izl[i]f\,jzl[i]);}for(i=1;i<=nb;i++){for(j=l;j<=n;j++)if(nob[i]==newsort[j]){nob[i]=j;break;)printf("nob[%d]=%d\n"/i,nob[i]);}for(j=1;j<=n;j++){if(mpj==newsortfj]){mpj=j;break;)}〃電抗器節(jié)點(diǎn)號(hào)轉(zhuǎn)變for(j=1;j<=mdk;j++){for(i=1;i<=n;i++){if(idk[j]==newsort[i]){idk[j]=i;break;)//****本函數(shù)進(jìn)行初始化工作****11inti,kl;dataio();//輸入原始數(shù)據(jù)oldtonew();〃轉(zhuǎn)化為新號(hào)if(bnsopton==0)〃節(jié)點(diǎn)不優(yōu)化,新節(jié)點(diǎn)號(hào)即為老節(jié)點(diǎn)號(hào)。for(i=1;i<=n;i++){old[i]=i;nnew[i]=i;}elsebnsopt();〃節(jié)點(diǎn)優(yōu)化mpj=nnew[mpj];//mpj:平衡節(jié)點(diǎn)zlsort(nnew);//sortther,xandbfor(i=1;i<=mdk;i++){kl=idk[i];idk[i]=nnew[kl];}for(i=1;i<=n;i++){v[i]=vOO;va[i]=0.0;}//所有節(jié)點(diǎn)的電壓幅值初值都為1.000(v00),電壓相角初值都為0。//exchangethenodebeforeandaftersortfor(i=1;i<=n;i++)yds[i]=0;//theimmediatefor(i=1;i<=nb;i++){kl=nnew[nob[i]];yds[kl]=nobt[i];}for(i=1;i<=n;i++)nobt[i]=yds[i];newval(pg);newval(qg);newval(pl);newval(ql);newval(vO);for(i=1;i<=n;i++)〃nobt[]istypeofnodeif(nobt[i]==-1)v[i]=vO[i];//nob[]isserialsnumbe//nobt[]=-1:pv節(jié)點(diǎn),v0[]存放的是最后一個(gè)節(jié)點(diǎn)數(shù)據(jù),〃對(duì)于pv節(jié)點(diǎn),即為該點(diǎn)應(yīng)維持的電壓值。//nobt[]=0:pq節(jié)點(diǎn),v0[]存放的是最后一個(gè)節(jié)點(diǎn)數(shù)據(jù),〃對(duì)于pq節(jié)點(diǎn),即為系統(tǒng)平均電壓值。printo();〃輸出af[]、v00和節(jié)點(diǎn)排序后的支路、節(jié)點(diǎn)和〃接地電抗數(shù)據(jù)(僅僅查看中間結(jié)果)yaO();//獲得yds。、ydz[]>列足碼iy[]。(P407)}voidprinto()(//****輸出af[]、vOO和節(jié)點(diǎn)排序后的支路、節(jié)點(diǎn)和接地電抗數(shù)據(jù)****//inti;fprintf(fp2z"\n******AFANDVO******\nH);fprintf(fp2,H\n%7.3f%7.3f%7.3f\n,,/af[O],af[l],vOO);printc(IJz78);fprintf(fp2,"\n\n*******zi_B*******\n");for(i=1;i<=zls;i++)(fprintf(fp2z”\n”);fprintf(fp2,"%8d%8d%8d%8d",izl[i],jzl[i],old[abs(izl[i])]zold[abs(jzl[i])]);fprintf(fp2,,,%9.4f%9.4f%9.4f,I/zr[i]zzx[i],zyk[i]);}printc(,Jz78);fprintf(fp2,"\n\n*******bUS*******\n");for(i=1;i<=nb;i++)(fprintf(fp2z”\n”);fprintf(fp2,"%8d%8d%8cT,nob[i],old[nob[i]Lnobt[i]);fprintf(fp2,,,%9.4f%9.4f%9.4f%9.4f%9.4f,,,pg[i],qg[i]zpl[i],ql[i],v0[i]);}printc(,Jz78);fprintf(fp2,"\n\n******DKK******\n");for(i=1;i<=mdk;i++)fprintf(fp2z”\n”);fprintf(fp2z"%8d%8d%7.4f”,idk[i],old[idk[i]],dkk[i]);

)voiddataio()(//****系統(tǒng)數(shù)據(jù)初始化****//inti;af[O]=0.6;af[l]=2.0;//af[0]和af[l]分別是負(fù)荷有功功率、無功功率靜態(tài)特性系數(shù)。v00=1.000;//系統(tǒng)平均電壓printf(H\npleaseinputthenameofdatafile\nH);scanf(,,%s,,/inname);fpl=fopenfinname,,,rH);printf(H\npleaseoutputthenameofdatafile\nn);scanf(,,%s,,/outname);fp2=fopen(outname,"w");fscanf(fplz"%d%d%d%d,,/&n,&zls,&nb,&mdk);//thenumberofnode,branches,nodefscanf(fplz"%lf%d%d%d%d,,/&eps,&kk2,&mpj,&bnsopton,&itl);//precision,swingnode,sortthenodejterationnumbersfor(i=1;i<=zls;i++)(fscanf(fpl,“%d%d”,&izl[i],&jzl[i]);fscanf(fpl,"%lf%lf%lf”,&zr[i],&zx[i],&zyk[i]);}for(i=1;i<=nb;i++){fscanf(fpl,”%d%d",&nob[i],&nobt[i]);fscanf(fpl,“%lf%lf%lf%lf%lf”,&pg[i],&qg「],&pl[i],&ql[i],&v0[i]);}for(i=1;i<=mdk;i++){fscanf(fpl,"%d%lf",&idk[i],&dkk[i]);}fclose(fpl);}***?voidpqflow()***?PQ分解法計(jì)算潮流,程序框圖見P164圖3-16(從第7步起)****//intkqO,iul[N2],nfdl[NS]ziu2[N2],nfd2[NS];inti,t;doubleul[N2Lu2[N2],dil[NS],di2[NS];yyi();yzb(O,iul,ul,dil,nfdl);//formtheBmatrixofP-0iterationy2();yzb(l,\u2,u2zd\2,nfd2);//formtheBmatrixofQ-Viterationt=0;kqO=0;kg[O]=kg[l]=1;do{jdgl(kqO);//calculatingthepowerbbhl(kqO);//findoutthemaxiif(kqO==0)printf(HP:%d\t%d\t%f\n,,/1,dsd,dsm);elseprintff'Q:%d\t%d\t%f\n”,t,dsd,dsm);if(fabs(dsm)>eps){kg[kqO]=l;if(kqO==0)calc(iul,ul,dil,nfdl,b);if(kqO==1)calc(iu2,u2,di2,nfd2,b);for(i=1;i<=n;i++){if(kqO==0)va[i]=va[i]?b[i]/vOO;elsev[i]=v[i]-b[i];))elsekg[kqO]=0;if(kqO==0)kqO=1;else{kqO=0;t++;)if(t>itl)break;}while((fabs(dsm)>eps)11(kg[kqO]!=0));fprintf(fp2z"\n%s%d”,Htimes=",t);}voidout()(//****本函數(shù)輸出節(jié)點(diǎn)和支路數(shù)據(jù)****//zlsort(old);//recoverthedataifsorted//newtoold();node_output();//nodedatabranch_output();//branchdataprintc('-‘,78);printcC*;78);fprintf(fp2,"\n");}voidnewval(double*aa)(//****本函數(shù)將舊號(hào)換成新號(hào)****//inti,kl;for(i=1;i<=n;i++)b[i]=0.0;for(i=1;i<=nb;i++){kl=nnew[nob[i]];b[kl]=aa[i];(for(i=1;i<=n;i++)aa[i]=b[i];}voidyzb(intt,int*iu,double*u,double*dizint*nfd)(//****本函數(shù)求因子表****//〃參數(shù)1為標(biāo)志(t=0求B>1求B11)//〃參數(shù)2因子表上三角矩陣非零非對(duì)角元素的列足碼〃參數(shù)3因子表上三角矩陣非零非對(duì)角元素的數(shù)值〃參數(shù)4因子表上三角矩陣對(duì)角元素〃參數(shù)5因子表上三角各行非零元素個(gè)數(shù)inti,j,k,il,i2;intjj,jjl,jj2,imzx,fd[NS];doubleai,b[NS];nfd[l]=1;for(i=1;i<=n;i++){//nobt[]存放的是節(jié)點(diǎn)類型,0:pq節(jié)點(diǎn),-1:pv節(jié)點(diǎn)。if(((t!=1)11(nobt[i]!=-1))&&i!=mpj)//<-|TOC\o"1-5"\h\z{//Ifor(j=i+1;j<=n;j++)//|b[j]=0.0;//Ib[i]=bii[i];//Iif((kk2==0)&&(t==1)&&(nobt[i]!=-1))//存在(t==1)的情況,不多余。b[i]=b[i]+af[1]*ql[i]/v0[i]/v0[i];//af[l]=ydz[i];=ydz[i+1]-1;for(j=il;j<=i2;j++){k=iy[j];b[k]=ybU];}b[mpj]=0.0;if(t==1)for(j=1;j<=n;j++)if(nobt[j]==-1)b[j]=O.O;il=i-1;for(im=1;im<=il;im++){jjl=nfd[im];jj2=nfd[im+1]-1;forjj<=jj2;jj++)(if(iu[jj]==i)(ai=u[jj]/di[im];for(k=jj;k<=jj2;k++)j=iu[k];b[jl=bU]-ai*u[k];

break;}}x=nfd[i];di[i]=1.0/b[i];ai=di[i];k=0;il=i+l;for(j=il;j<=n;j++){if(fabs(b[j])>1.0e-15)(u[x]=b[j]*ai;iu[x]=j;k++;x++;}}fd[i]=k;}else{fd[i]=O;di[i]=0.0;}nfd[i+l]=nfd[i]+fd[i];fprintf(fp2zH\n********u*********”)?for(i=1;i<=x;i++){if(i%3==1)fprintf(fp2,"\n");fprintf(fp2,,,%10.5f%8i,,/u[i],iu[i]);fprintf(fp2z“\n********DI********”);printfl(di,n);)voidprintfl(double*aa,intn)(//****本函數(shù)輸出aa[i]J=l-n****//inti;for(i=1;i<=n;i++)(if(i%5==1)fprintf(fp2,"\n");fprintf(fp2,aa[i]);}fprintf(fp2,”\n\n");voidcalc(int*iu,double*u,double*di,int*nfd,double*b)//****本函數(shù)利用因子表解線形方程組o(P417圖Fl?9)****//doublebi;inti,j,k,il,i2;for(i=1;i<=n;i++)〃前代過程。(bi=b[i];=nfd[i];=nfd[i+1];for(j=il;j<i2;j++){k=iu[j];b[k]=b[k]-bi*u[j];}b[i]=bi*di[i];}for(i=n;i>=1;i-)//回代過程。(bi=b[i];=nfd[i];=nfd[i+1]-1;for(j=i2;j>=il;j-){k=iu[j];bi=bi-b[k]*u[j];}b[i]=bi;voidzlsortfint*nnew)////。//****本函數(shù)進(jìn)行支路數(shù)據(jù)排序****//〃小節(jié)點(diǎn)號(hào)放左邊,大節(jié)點(diǎn)號(hào)放右邊〃〃左右皆按從小到大順序排列〃intip,kl,k2,k3,k4;inti,j;for(i=1;i<=zls;i++)(k3=izl[i];k4=jzl[i];kl=iabs(k3);k2=iabs(k4);//原節(jié)點(diǎn)號(hào)。izl[i]=isgn(nnew[kl]zk3);//新節(jié)點(diǎn)號(hào)。jzl[i]=isgn(nnew[k2]zk4);k3=izl[i];k4=jzl[i];kl=iabs(k3);k2=iabs(k4);if(kl>k2){izl[i]=k4;jzl[i]=k3;)}for(i=1;i<=zls-1;i++)(ip=i;kl=iabs(izl[i]);k3=iabs(jzl[i]);for(j=i+1;j<=zls;j++){k2=iabs(izl[j]);k4=iabs(jzl[j]);if(k2<kl11(k2==kl&&k4<k3)){ip=j;kl=k2;k3=k4;))if(i!=ip)iswap(&izl「],&izl[ip]);iswap(&jzl[i],&jzl[ip]);swap(&zr[i],&zr[ip]);swap(&zx[i]z&zx[ip]);swap(&zyk[i],&zyk[ip]);}}}voidbnsopt()(//****節(jié)點(diǎn)優(yōu)化****//intiil,\\2,zls2,nomax;inti,j,I,kl,k;inttemp;zls2=zls+zls;for(i=1;i<=zls2;i++)old[i]=nnew[i]=0;〃先清零。由此可知:NS4、NS必須大于2*zls。for(i=1;i<=zls;i++){old[i]=iabs(izl[i]);old[i+zls]=iabs(jzl[i]);}〃變壓器節(jié)點(diǎn)號(hào)由正變負(fù),Old。前zls個(gè)為左節(jié)點(diǎn)號(hào),后zls個(gè)為右節(jié)點(diǎn)號(hào)。for(i=1;i<=zls2;i++)〃冒泡法排序。(kl=i+l;for(j=kl;j<=zls2;j++)if(old[i]>old[j])iswap(&old[i],&old[j]);〃交換整數(shù)old[i]、old。]。小節(jié)點(diǎn)號(hào)排在支路左側(cè)。}nomax=old[zls2];//nomax即是最大節(jié)點(diǎn)號(hào)。lee30.dat301=1;for(i=1;i<=n;i++)(iil=old[l];old[i]=iil;for(j=I;j<=zls2;j++)ii2=old[j];if(iil!=ii2)I=j;break;}nnew[i]++;}}for(i=1;i<=n-1;i++)(for(j=i+1;j<=n;j++)if(nnew[j]<=nnew[i])if((nnew[j]!=nnew[i])11(old[j]<old[i]))(iswap(&old[i],&old[j]);iswap(&nnew[i],&nnew[j]);}}for(i=1;i<=nomax;i++)nnew[i]=0;for(i=1;i<=n;i++){j=old[i];nnew[j]=i;}}voidya0()//(P407)(//****本函數(shù)獲得yds。、ydzfh列足碼iy[]****//inti,j,I,II;for(i=1;i<=n;i++)yds[i]=0;//yds[]存放各行非零非對(duì)角元素的個(gè)數(shù)。11=1;for(I=1;I<=zls;I++)(i=iabs(izl[l]);j=iabs(jzl[l]);if(i==j)continue;iy[ll]=j;if((i!=iabs(izl[l+1]))11(j!=iabs(jzl[l+1])))II++;

//II統(tǒng)計(jì)總支路數(shù)(雙回線算一條支路)yds[i]++;)}nzls=11-1;〃總支路數(shù)(雙回線算一條支路)ydz[i]=1;for(i=1;i<=n-1;i++)ydz[i+1]=yds[i]+ydz[i];〃由yds。得ydz[]。//ydz[i]是第i行第一個(gè)非零非對(duì)角元素的首地址,//即在所有非零非對(duì)角元素中的順序號(hào)。fprintf(fp2zH\n*******YDZ********”printi(ydz,n);fprintf(fp2zH\n******fprintf(fp2zH\n*******YDZ********”printi(ydz,n);fprintf(fp2zH\n*******YDS********”voidprintifint*aa,intn)(//****本函數(shù)輸出aa[l]-aa[n]的值****//inti;for(i=1;i<=n;i++)(if(i%10==1)fprintf(fp2,"\n");fprintf(fp2,"%5d",aa[i]);}}voidy2()(//****本函數(shù)形成節(jié)點(diǎn)導(dǎo)納陣,一次形成,不分B,和B”****//intjl;doubler,x,yk,zf,gij,bij;inti,j,il,I,II;for(i=1;i<=n;i++){gii[i]=0.0;bii[i]=0.0;}//導(dǎo)納陣對(duì)角元(與節(jié)點(diǎn)一一對(duì)應(yīng))先清零。for(i=1;i<=mdk;i++)

j=idk[i];bii[j]=-1.0/dkk[i];}〃計(jì)算接地支路導(dǎo)納,只影響導(dǎo)納陣對(duì)角元(自導(dǎo)納)。for(i=1;i<=zls;i++)yg[i]=0.0;yb[i]=0.0;}〃導(dǎo)納陣非零非對(duì)角元(與支路一一對(duì)應(yīng))先清零。11=1;for(I=1;I<=zls;I++)il=il=izl[l];//jl=jzl[l];//i=iabs(il);j=iabs(jl);if(i==j)continue;支路右節(jié)點(diǎn)號(hào)。//排除左、右節(jié)點(diǎn)號(hào)相等的情況。//排除左、右節(jié)點(diǎn)號(hào)相等的情況。r=zr[l];X=zx[l];yk=zyk[l];//zr[],zx[],zyk[]:支路三參數(shù)。zf=r*r+x*x;gij=r/zf;bij=-x/zf;if((il>0)&&(jl>0))//不是變壓器支路。是一般支路。yg[H]=yg[ll]-gij;yb[ll]=yb[ll]-bij;gii[i]=gii[i]+gij;bii[i]=bii[i]+bij+yk;gii[j]=gii[j]+gij;bii[j]=bii[j]+bij+yk;}else//變壓器支路。{if(jl<0){i=iabs(jl);j=iabs(il);}//若非標(biāo)準(zhǔn)變比在右(j)側(cè),則左、右互換,保證非標(biāo)準(zhǔn)變比在左側(cè)。gii[j]=gii[j]+gij;bii[j]=bii[j]+bij;//標(biāo)準(zhǔn)變比側(cè)。gii[i]=gii[i]+gij/yk/yk;//yk=zyk[],對(duì)變壓器支路指非標(biāo)準(zhǔn)變比(設(shè)在節(jié)點(diǎn)號(hào)為負(fù)的一側(cè))。

bii[i]=bii[i]+bij/yk/yk;//非標(biāo)準(zhǔn)變比側(cè)阻抗計(jì)算。yg[H]=yg[ll]-gij/yk;yb[ll]=yb[ll]-bij/yk;}//??????????????????〃注意此處處理雙回線和導(dǎo)納陣一不一樣if((il!=izl[l+l])||(jl!=jzl[l+l]))II++;////打印導(dǎo)納矩陣。對(duì)角元實(shí)部為gii,虛部為bii,非零非對(duì)角元實(shí)部為yb[],虛部為yb[],列足碼為iy[]°fprintf(fp2,“*******gii,BII********");////printf2(gii,bii,n);fprintf(fp2zH\n*******yyyyy*fprintf(fp2zH\n*******yyyyy********”);for(i=1;i<=nzls;i++)(if(i%2==1)fprintf(fp2,”\n");fprintf(fp2,,,%10.4f%10.4f%8d,,/yg[i]zyb[i]ziy[i]);}}voidprintf2(double*aa,double*bb,intn)(//***?本函數(shù)打印aa[iLbb[i]i=l-n****//inti;for(i=1;i<=n;i++)(if(i%2==1)fprintf(fp2,"\n");fprintf(fp2,“%5d%10.4f%10.4f”,i,aa[i]zbb[i]);}}voidjdgl(intkqO)(//****本函數(shù)計(jì)算節(jié)點(diǎn)功率(流程圖見p421)****//doubleai,bi;//ai,bi是臨時(shí)工作單元。doublevizvj,ci,sn,cs;inti,j,k,il,i2;for(i=1;i<=n;i++)w[i]=0.0;〃w[]存放節(jié)點(diǎn)功率,首先清零。for(i=1;i<=n;i++)(vi=v[i];〃v[]存放節(jié)點(diǎn)電壓幅值。ai=-bii「];〃bii[]存放導(dǎo)納陣對(duì)角元的虛部(gii[]+j*bii[])if(kqO==0)ai=gii[i];//gii[]存放導(dǎo)納陣對(duì)角元的實(shí)B(gii[]+j*bii[])w[i]=w[i]+vi*vi*ai;〃對(duì)角元素的節(jié)點(diǎn)功率p=vi*vi*gii,q=vi*vi*biiif(i<n)〃導(dǎo)納陣最后一行沒有非對(duì)角元,故i<n而不能i=n.{=ydz[i];//ydz[i]是第i行第一個(gè)元素的首地址,〃既在所有非零非對(duì)角元素中的順序號(hào)。=ydz[i+1]-1;〃即為第i行的非零元素個(gè)數(shù)。for(k=il;k<=i2;k++)〃對(duì)第i行的所有非零元素進(jìn)行操作。{if(kqO!=0)(ai=-yb[k];bi=yg[k];}〃yb[]存放導(dǎo)納陣非對(duì)角元的虛部(yg[]+j*yb[])else(ai=yg[k];bi=yb[k];}//yg[]存放導(dǎo)納陣非對(duì)角元的實(shí)部(妃]+j*yb[])j=iy[k];〃iy[]存放的是列足碼。vj=vi*v[j];//v[]存放節(jié)點(diǎn)電壓幅值。ci=va[i]-va[j];〃va[]存放節(jié)點(diǎn)電壓相角,ci即為節(jié)點(diǎn)i和〃節(jié)點(diǎn)j之間的相角差(i-j)。sn=sin(ci);〃sin()的近似計(jì)算式cs=cos(ci);〃cos()的近似計(jì)算式bi=bi*vj*sn;ai=ai*vj*cs;w[i]=w[i]+ai+bi;〃非對(duì)角元素i的功率w[j]=w[j]+ai?bi;〃非對(duì)角元素j的功率voidbbhl(intkqO)//****本函數(shù)計(jì)算各節(jié)點(diǎn)的功率誤差,求最大功率誤差dsm****////****和常數(shù)項(xiàng)b[i]。(程序框圖見P423)****//inti;doublevi,vj;doubleplO,pgO;dsm=0.0;//dsm即為最大功率誤差。for(i=1;i<=n;i++){vi=v[i];//v[]存放節(jié)點(diǎn)電壓幅值。vj=v0[i];〃v0[]存放節(jié)點(diǎn)初始電壓幅值。v0[]存放的是最后一個(gè)節(jié)點(diǎn)數(shù)據(jù)。//vi[]//nopt[]=-1:pv節(jié)點(diǎn),對(duì)于pv節(jié)點(diǎn),即為該點(diǎn)應(yīng)維持的電壓值。//nopt[]=0:pq節(jié)點(diǎn),對(duì)于pq節(jié)點(diǎn),即為系統(tǒng)平均電壓值。//vj此時(shí)表示的是節(jié)點(diǎn)正常電壓的會(huì)定值。if(kqO==0){plO=pl[i];PgO=Pg[i];}//負(fù)荷p,發(fā)電機(jī)pelse{plO=ql[i];PgO=qg[i];}//負(fù)荷q,發(fā)電機(jī)qif(kk2==0)plO=plO*((vi-vj)*af[kqO]/vj+1.0);//考慮負(fù)荷靜特性。(公式Fl-39,P423)if(nobt[i]==-1&&kqO==1)qg[i]=w[i]-plO;//pv節(jié)點(diǎn)if(i==mpj&&kqO==0)pg[i]=w[i]-plO;//平衡節(jié)點(diǎn)b[i]=pgO+plO-w[i];//pv節(jié)點(diǎn)(nobt[]=-1)和平衡節(jié)點(diǎn)(mpj)不參與〃求最大功率誤差和常數(shù)項(xiàng)的運(yùn)算if(((kqO!=l)||(nobt[i]!=-1))&&(i!=mpj))if(fabs(b[i])>fabs(dsm))dsm=b[i];dsd=i;)//dsm即為最大功率誤差,dsd存放其對(duì)應(yīng)的節(jié)點(diǎn)號(hào)。b[i]=b[i]/vi;//計(jì)算修正方程式的常數(shù)項(xiàng)。}elseb[i]=O.O;//pv節(jié)點(diǎn)(nobt[]=-1)和平衡節(jié)點(diǎn)(mpj)不參與//求最大功率誤差和常數(shù)項(xiàng)的運(yùn)算。}}node_output()////****輸出節(jié)點(diǎn)數(shù)據(jù)和最小電壓幅值、相角(角度)及其節(jié)點(diǎn)號(hào)****////****(程序框圖見p426F1-16)****//doublevi,ci;inti,j,oldnumber;printc(l+'/72);fprintf(fp2,,,\n%5s%8s%10s%lls%lls%lls%lls\n,,/T,”V”,”CA”,"PL”,”QL”,"PG","QG");vmin=v[l];dsd=1;for(i=1;i<=n;i++){j=nnew[i];oldnumber=newsort[i];//轉(zhuǎn)化為相應(yīng)舊號(hào)ci=va[j]*180.0/3.1416;//弧度轉(zhuǎn)化為角度。vi=v[j];if(vi<vmin){vmin=vi;dsd=j;)//vmin即為最小電壓,dsd存放其對(duì)應(yīng)的新節(jié)點(diǎn)號(hào)。fprintf(fp2,,,\n%5d%11.5f%12.6f"/oldnumber,vizci);fprintf(fp2,pl[j],ql[j],pgU]/qgUD;printc(,J,72);voidbranch_output()//****本函數(shù)輸出支路數(shù)據(jù)。(程序框圖見p428F1-17)****//????■■mtii,jj;doubler,x,yk,zf,vi,vj,ci,cj;inti,j,I;doublede,df,ei,ejzfi,fj,fii,fir,pij,pji,qij,qji;dph=0.0;//統(tǒng)計(jì)系統(tǒng)有功網(wǎng)損。dqh=0.0;//統(tǒng)計(jì)系統(tǒng)無功網(wǎng)損。fprintf(fp2,”\n%5s%5s%10s%12s%12s%12s\n",T,"J","PIJ","QIJ",“PJI","QJI");for(i=1;i<=mdk;i++)(j=idk[i];dkk[i]=v[j]*v[j]/dkk[i];}for(I=1;I<=zls;I++)(ii=iabs(izl[l]);//izl[]:支路左節(jié)點(diǎn)號(hào)。jj=iabs(jzl[l]);//jzl[]:支路右節(jié)點(diǎn)號(hào)。i=nnew[ii];j=nnew[jj];//轉(zhuǎn)換為新節(jié)點(diǎn)號(hào)。ii=newsort[ii];jj=newsortOj];//轉(zhuǎn)化為相應(yīng)舊號(hào)r=zr[l];X=zx[l];yk=zyk[l];vi=v[i];//v[]:電壓幅值。ci=va[i];//va[]:電壓相角。vj=v[j];cj=va[j];〃支路左、右節(jié)點(diǎn)電壓值由極坐標(biāo)轉(zhuǎn)換為直角坐標(biāo)ei=vi*cos(ci);fi=vi*sin(ci);//ei:支路左節(jié)點(diǎn)電壓實(shí)部,fi:支路左節(jié)點(diǎn)電壓虛部。ej=vj*cos(cj);fj=vj*sin(cj);//ej:支路右節(jié)點(diǎn)電壓實(shí)部,fj:支路右節(jié)點(diǎn)電壓虛部。if((izl[l]<0)||(jzl[l]<0))//變壓器支路。ei=ei/yk;fi=fi/yk;)//yk=zyk[l]else{ej=ej/yk;fj=fj/yk;}yk=0.0;}de=ei-ej;df=fi-fj;zf=r*r+x*x;fii=(de*r+df*x)/zf;fir=(df*r-de*x)/zf;pij=fii*ei+fir*fi;qij=fn*fi-fir*ei;pji=-fii*ej-fir*fj;qji=-fii*fj+fir*ej;qij=qij-vi*vi*yk;qji=qji-vj*vj*yk;dph=dph+pij+pji;dqh=dqh+qij+qji;fprintf(fp2/i,\n%5d%5d%12.5f%12.5f%12.5f%12.5f,/ii,jj,pij,qij,pjLqji);}fprintf(fp2,”\n\n%8s%19s%18s%13s“,”DPH”,“DQH”,”VMIN“,“DSD”);fprintf(fp2/H\n%10.5f%18.5f%18.5f%12d,,/dph,dqh,vmin,newsort[old[dsd]]);fprintf(fp4"\n\n%22sTHEENDOFOUTPUT",””);}voidiswap(int*m,int*n)//****本函數(shù)交換m和n值****//intp;p=*m;*m=*n;*n=p;}voidswapfdouble*m,double*n)//****本函數(shù)交換m和n值****//doublep;p=*m;*m=*n;*n=p;}intiabs(inta)(//***?本函數(shù)求絕對(duì)值****//a=(a>=0)?a:-a;returna;}voidprintc(charaa,intn)(//****本函數(shù)輸出n個(gè)aa字符****//inti;fprintf(fp2,"\n");for(i=1;i<=n;i++)fprintf(fp2,aa);}voidnewtoold()(inti,j,k,iil,ii2,zls2,kl,k2,k3,k4,ip;zls2=zls+zls;iil=0;for(i=1;i<=zls;i++){k=izl[i];ii2=newsort[(int)fabs(k)];izl[i]=isgn(ii2,izl[i]);k=jzl[i];ii2=newsort[(int)fabs(k)];jzl[i]=isgn(ii2,jzl[i]);printf("izl[%d]=%d,jzl[%d]=%d\n'\\,izl[i],i,jzl[i]);for(i=1;i<=zls-1;i++)(ip=i;kl=iabs(izl[i]);k3=iabs(jzl[i]);for(j=i+1;j<=zls;j++){k2=iabs(izl[j]);k4=iabs(jzl[j]);if(k2<kl11(k2=kl&&k4<k3)){ip=j;kl=k2;k3=k4;))if(i!=ip){iswap(&izl[i],&izl[ip]);iswap(&jzl[i]z&jzl[ip]);swap(&zr[i],&zr[ip]);swap(&zx[i],&zx[ip]);swap(&zyk[i],&zyk[ip]);)}for(i=1;i<=nb;i++){k=nob[i];nob[i]=newsort[k];printf("nob[%d]=%d\n,,/i,nob[i]);}for(i=1;i<=nb-1;i++){for(j=i+1;j<=nb;j++){if(nob[i]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論