function [MVAbase, bus, gen, branch, success, et] =runpf [baseMVA, bus, gen, branch] = loadcase('caseRTS79'); [i2e, bus, gen, branch] = ext2int(bus, gen, branch); [probline,probgen]=failprob;+ S" ?6 i c) w: p7 y [A,lpr,equ,Pgmax,goalA,busPg]=loadpro; 6 V! i3 Y7 P0 p9 A; t limB=zeros(1,48); %limB是1x48的全0矩阵 ranbr=size(branch,1); %ranbr=矩阵branch的行数 lineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵 for i=1:ranbr %i从0到ranbr lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数 end Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素# t- w* z4 P0 C% t Pload(13,:=[]; %删除Pload的第13行的所有元素 sumload=0; %定义sumload=09 b3 W6 V1 J" j1 W3 J for i=1:size(bus,1) %i从1到矩阵bus的行数 sumload=sumload+bus(i,3); h7 z6 P/ Y2 N$ f3 l- A end %sumload=矩阵bus第3列所有元素之和 sumpg=0; %定义sumpg=04 f( u* `; _$ @4 a. P6 y. `0 M for i=1:length(busPg) %i从1到矩阵busPg的长度 sumpg=sumpg+busPg(i,1); end %sumpg=busPg第1列所有元素之和2 {* ]% W) Z& S X, d! u3 ` refPg=591-sumload+sumpg; $ I- j+ `. ~( x1 `$ c Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素0 t0 ?6 F o: A; M! x lolp=0; %定义电力不足概率LOLP=0$ i+ y3 p% f! @! o3 m/ Z edns=0; %定义缺供期望电力EDNS=0 {7 \5 F7 w f% H3 @: D" M vari=0; % sumcut=0; %定义sumcut=0 sumsqcut=0; %定义sumsqcut=0 B=[];, ~% P, M' H9 ]- t* [ state=[];$ _8 H% p! G7 e1 M& r8 J1 i for stct=1:50000; { Q1 p2 i2 I4 p, ^ stvari=mc(probline,probgen); lengthst=length(stvari);3 g. x2 M; R& t( J numstate=length(state);( p- g! r8 { ]5 c3 T& c1 | lolp=lolp*(stct-1)/stct; edns=edns*(stct-1)/stct;/ C/ S! e2 |5 |/ b. T ednsarray(1,stct)=edns;4 a1 n4 C$ o. \3 P$ x6 r# t lolparray(1,stct)=lolp;; L i( t# L5 h* C i( p# e! W. k5 B( I if ~lengthst% _% m' o7 y, Q7 r9 |0 Z5 g vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2;! @6 B% Y' b% @% x/ K. _. ? vindex(1,stct)=sqrt(vari)/edns;& y' R4 J6 ]( I3 o ednsarray(1,stct)=edns;0 h/ H' \% o& y) K9 G# s r4 q lolparray(1,stct)=lolp;9 g$ [4 x; @/ t9 @) l3 R# G continue; else7 L4 [6 i4 W& m# {' \$ E; Z flag=0;: X# i+ \. ^# [6 l8 ~ for k=1:length(state) if lengthst==length(state(1,k).st);- w1 O: K0 K% t0 ]& Z if stvari==state(1,k).st* {( m0 A6 P N- ]. |( U" j state(1,k).num=state(1,k).num+1; flag=1;2 t$ x8 c6 c3 q7 l1 P4 ?; I" s break; end end end if ~flag6 b+ k5 x, k3 M state(1,numstate+1).st=stvari; state(1,numstate+1).num=1; end end. k" h" u2 ~4 ?0 p if flag Y: Q; x# L; b7 |; [ if state(1,k).cutload sumcut=sumcut+state(1,k).cutload; sumsqcut=sumsqcut+state(1,k).cutload^2;: v) r) `4 ~, I7 o! V lolp=lolp+1/stct;9 N, i6 ]( j* G2 B) I& Y; a edns=edns+state(1,k).cutload/stct;% N9 q! e$ x3 O0 T; K vari=sumsqcut-2*sumcut*edns+stct*edns^2;9 W( U( G2 @) D0 g9 X+ q vari=vari/stct^2;8 s& V% R7 f5 g% ^, y3 G ednsarray(1,stct)=edns;$ ]7 G/ E$ A' i" ]) e3 _+ P2 g lolparray(1,stct)=lolp; end6 w% B, u# h& \/ |" t5 k vindex(1,stct)=sqrt(vari)/edns;! r: c( s* ~. U* Z! Q continue;' y* P( W: d( s+ u# e0 U end clear stvari; ischange=0; sPgmax=Pgmax;9 H# q+ Z- @8 T3 T( [0 f2 { sbusPg=busPg;1 }7 @; p. Y4 f4 \ srefPg=refPg; outbr=0;$ x/ a- u ] w) o0 f4 ^ outgen=0;* N1 v1 |/ k, k/ m/ S6 ` for lenct=1:length(state(1,length(state)).st)' A( _9 d T6 T1 Z if state(1,length(state)).st(1,lenct)<39 outbr=outbr+1; branch(state(1,length(state)).st(1,lenct),11)=0;9 y, l5 _6 u! l! A, j! Y2 m. C memobr(1,outbr).loc=state(1,length(state)).st(1,lenct); memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);/ J. s% c3 K* E! Y6 k. Z Y$ q lineB(state(1,length(state)).st(1,lenct),4)=0; ischange=1; clear B;8 x* Q" x e8 \* }' T2 w4 ~- n+ ` $ q" O3 z: o: W; H else3 O: I2 u) g/ _( Y0 a; M gavri=state(1,length(state)).st(1,lenct)-38; gen(gavri,8)=0; srefPg=srefPg-gen(gavri,2);6 a3 \1 K1 L% W0 @; o: c8 C/ Z+ y/ W outgen=outgen+1; memogen(1,outgen)=gavri;' z- X. t3 G3 w if gen(gavri,1)<13 sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9); sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2); end- d. f5 c1 I& i! K" t# E( p7 j if gen(gavri,1)==13 srefPg=-1; sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);# m! ?, L% x% e; {- Q end i" f( P" l' Z; M if gen(gavri,1)>130 W+ d& M" W, `- r( N: Z5 o0 ?4 o sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9); sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2); end end+ X9 p* `7 w `2 u( n, {- k9 m$ { end % if (stct==1)|ischange! E2 B# n5 s, R1 I. b B = makeBdc(baseMVA, bus, branch); subB=full(B); subB(13,:=[]; subB(:,13)=[];0 A" n6 z, p7 { swp=lineB*A*inv(subB); swp1=swp*Pload;! `1 U& H* ~ C3 W maxArray=Pmax+swp1; minArray=swp1-Pmax;+ h; K& A/ @1 t: {" j: I( _$ I+ _ maxArray=[maxArray;-minArray]; lprA=swp*lpr;- ?7 k! f. e, }$ U/ r lprA=[lprA;-lprA];4 T _+ d b. q" C clear minArray clear B; d/ K" H$ x8 ^( a1 e9 f clear subB" i/ i0 ~1 I7 ^) S8 E % end # i6 d5 C( k! `& I O/ \/ Q# ^' o9 M state(1,length(state)).cutload=0.0;; b+ ?. a6 _$ D, w" ~ if srefPg>0- r' q3 k P/ ?2 w$ m5 f brflow=swp*(sbusPg-Pload); cutload=0;1 h1 a3 \' V& J for ctbranch=1:38 if abs(brflow(ctbranch,1))>branch(ctbranch,8)! N$ T; v$ T) o7 d# c c; G) V2 \7 y limA=[Pload',bus(13,3),sPgmax]; [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);+ B# ?9 l) T& x/ M- o6 N if cutload>1/ ^2 W I, X# \/ d7 y, } state(1,length(state)).cutload=cutload; end break;9 b& V: W+ M- B# w7 ]! Y end end else; n5 W7 T9 t' S limA=[Pload',bus(13,3),sPgmax];! G$ q0 f: r/ F( Z' x+ q [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);7 h4 _1 X# a0 M1 w) W if cutload>11 s7 a+ X1 S; ]- A, J state(1,length(state)).cutload=cutload; end end6 n& D2 |1 ^; H8 L# v0 i if state(1,length(state)).cutload sumcut=sumcut+state(1,length(state)).cutload;. P6 D: }: w% N/ h sumsqcut=sumsqcut+state(1,length(state)).cutload^2;) ^( A8 ]- d& J+ A U5 r y lolp=lolp+1/stct;& D, i! ^! |5 i4 B# h+ B/ ]) Y2 ? edns=edns+state(1,length(state)).cutload/stct; vari=sumsqcut-2*sumcut*edns+stct*edns^2;0 W9 d, U# G; k g' | vari=vari/stct^2; ednsarray(1,stct)=edns;: Q- T- B: @9 a( }3 P( I0 e lolparray(1,stct)=lolp; end8 i V6 I3 \3 [; Z( N vindex(1,stct)=sqrt(vari)/edns;. g- s, K9 H; p. M success = 1;) O# U9 b! D9 ^5 j. y* x% z* n for i=1: outbr branch(memobr(1,i).loc,11)=1; lineB(memobr(1,i).loc,4)=memobr(1,i).b;/ p" H1 b O+ x" w' K, h2 [ end. V r* O2 U/ b6 J5 k4 [' m# G0 I5 w for i=1: outgen7 k* U- y4 O$ E. J2 w, K; n- B, r gen(memogen(1,i),8)=1; end9 N) Z( ^0 F# ~: g clear memobr;4 C- @- b" X; d+ Q8 _! W7 C clear memogen;. K& ^) j1 P) W5 X % if (stct>10)&(vindex(1,stct)<0.017) % break % end end layer=zeros(1,15);4 J; m) g. y# k d( | for i=1:length(state)- h: `0 `0 |! p5 E layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct; end # j* y. G7 L @7 N9 o+ b- a- v lolp1 X, |. J# } w( x6 ~. q9 U* N9 C0 D edns dlmwrite('E:\study\edns1.txt', ednsarray); dlmwrite('E:\study\lolp1.txt', lolparray);! a% A' O2 N6 Q dlmwrite('E:\study\var1.txt', vindex);0 W+ V' j" k4 I dlmwrite('E:\study\layer1.txt', layer);8 p0 _( Q, k. s" M; h plot(vindex);( g% B. Z4 M3 P+ A9 @5 h hold on plot(layer)+ M" i/ U& t1 `3 r" | return;% \; A) c( [& J# \* k! ` ![]() |
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |