| function [MVAbase, bus, gen, branch, success, et] =runpf [baseMVA, bus, gen, branch] = loadcase('caseRTS79'); [i2e, bus, gen, branch] = ext2int(bus, gen, branch);; `% Z7 Q9 C0 V [probline,probgen]=failprob;/ F; @% `, t" h7 E; f! @: O7 n( R [A,lpr,equ,Pgmax,goalA,busPg]=loadpro; 2 W1 F0 v* k% C6 ]/ C, g; m& S limB=zeros(1,48); %limB是1x48的全0矩阵 ranbr=size(branch,1); %ranbr=矩阵branch的行数 lineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵" D7 N0 l, v2 M% c; t) v for i=1:ranbr %i从0到ranbr lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数( c4 c& f2 J% V' W end Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素- Y" U6 d: m1 \; T9 q4 Z9 | Pload(13,:=[]; %删除Pload的第13行的所有元素4 J, Y' X0 g/ I) L sumload=0; %定义sumload=0 for i=1:size(bus,1) %i从1到矩阵bus的行数 sumload=sumload+bus(i,3); * T# a( R) Y( S! D* f5 o' y2 @: n end %sumload=矩阵bus第3列所有元素之和 sumpg=0; %定义sumpg=04 s4 C- W6 L* V# U" J7 p for i=1:length(busPg) %i从1到矩阵busPg的长度8 L1 s( W" i0 h$ F9 A/ T& ]$ F sumpg=sumpg+busPg(i,1); end %sumpg=busPg第1列所有元素之和 refPg=591-sumload+sumpg; 6 a- y( Z: f- k7 ` Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素' Q/ v2 Z9 C7 E( v1 t lolp=0; %定义电力不足概率LOLP=05 W2 m# F" ~ @1 N7 g5 P+ N edns=0; %定义缺供期望电力EDNS=0 vari=0; % sumcut=0; %定义sumcut=0 sumsqcut=0; %定义sumsqcut=0 B=[];; H' _/ r% p, j8 D, L- ~ state=[];" a# x" b7 G m& S5 O: Z3 p2 z for stct=1:50000) b$ G; ? L- s stvari=mc(probline,probgen); lengthst=length(stvari);! {5 y2 S+ K m0 b( o) l% F4 \/ t; ^ numstate=length(state); lolp=lolp*(stct-1)/stct;$ L+ A! t6 s, {+ d0 s- l edns=edns*(stct-1)/stct; ednsarray(1,stct)=edns;/ c6 D3 S# R; g, V) B% V lolparray(1,stct)=lolp; 6 x1 C! Y, C7 M) I, x if ~lengthst. |- i1 v1 _5 j5 s% o# Z3 p5 L: n vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2; vindex(1,stct)=sqrt(vari)/edns; ednsarray(1,stct)=edns;" @7 I8 K0 }2 Q4 R7 E lolparray(1,stct)=lolp;. s& x Y3 v2 x$ R" x. H4 v" b6 d% n continue; else* r' j/ z! q* p flag=0;& V: ^- {! f# L: L# [& [, e for k=1:length(state) if lengthst==length(state(1,k).st);/ k" M# U: S1 R% u; \ if stvari==state(1,k).st F: v+ D+ N/ ]/ h. w# B6 x state(1,k).num=state(1,k).num+1;0 T [1 w2 Z; [! \3 j$ W flag=1;- a: n& h1 g! p0 ? break;3 Y6 z- }: z8 ` ~8 P; ]: B end end end if ~flag state(1,numstate+1).st=stvari; state(1,numstate+1).num=1; end end if flag if state(1,k).cutload sumcut=sumcut+state(1,k).cutload; sumsqcut=sumsqcut+state(1,k).cutload^2;3 E6 `7 | k) }! m/ j# d lolp=lolp+1/stct;4 Y2 q% _% J! |5 Z: v+ [8 F edns=edns+state(1,k).cutload/stct;7 Q$ H6 l+ {" U/ O7 G vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2;- ]) V4 S( M9 B4 i+ H$ m. i9 L ednsarray(1,stct)=edns; lolparray(1,stct)=lolp; end/ z, B; C+ E* I" U9 q vindex(1,stct)=sqrt(vari)/edns;8 D0 x9 s" h5 H9 W' F continue; end clear stvari;+ K5 D. j* K# l/ A6 f$ R1 b 8 R" Q9 |6 B) N1 x; l ischange=0; sPgmax=Pgmax; sbusPg=busPg;% v7 j# m! _5 }, L9 D srefPg=refPg; outbr=0; outgen=0;0 \& c u! l1 N4 X2 d+ O9 z for lenct=1:length(state(1,length(state)).st) if state(1,length(state)).st(1,lenct)<39 outbr=outbr+1; branch(state(1,length(state)).st(1,lenct),11)=0; t6 M7 B+ c9 W) c8 l memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);: \ |! H4 I Q% k B memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);/ _9 T4 W I. x- i9 W lineB(state(1,length(state)).st(1,lenct),4)=0; ischange=1;5 L4 U" G' c7 s( K5 l% X5 U6 | clear B;6 T3 ~& E6 t4 c5 L9 N, H* ] else gavri=state(1,length(state)).st(1,lenct)-38;" ?0 {: }5 q) J6 B) H gen(gavri,8)=0; srefPg=srefPg-gen(gavri,2);& _% E3 j- z8 }& M outgen=outgen+1; memogen(1,outgen)=gavri;/ C! V3 [8 H, f3 a- T6 U if gen(gavri,1)<13, D9 d' F0 p% O: K3 X, ] sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);9 I) }9 v* q( H9 T6 k p A sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);! ?; M n+ y8 w l2 L& l% Q end# P6 |& {. B4 ~ o- P. v: M9 m if gen(gavri,1)==13 srefPg=-1; sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);* ^% Y7 G( L% u( B1 [5 j end8 ?; Z7 J2 `/ Y& w7 f8 V" L% ^. c if gen(gavri,1)>13* h) z8 ]7 `& r3 @ |" a sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);- b5 Y$ U( x1 x& C sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2); end7 o; J/ z( u4 _. V" J9 z4 u$ q end end % if (stct==1)|ischange- { T1 O4 S* l, ^+ t3 x; r B = makeBdc(baseMVA, bus, branch);4 H( s7 i$ v% q* ~( q( i subB=full(B); subB(13,:=[];. G# s% }4 G1 y! Y subB(:,13)=[];, o" I( Z" u$ N; p7 {; p swp=lineB*A*inv(subB); swp1=swp*Pload;: ^ b9 v0 p! {4 v maxArray=Pmax+swp1;: S% I. P3 X! q$ H; h& {8 `9 | minArray=swp1-Pmax;/ A8 a! M: f `- K; @ maxArray=[maxArray;-minArray]; lprA=swp*lpr; lprA=[lprA;-lprA]; clear minArray clear B n H7 Z# L: J4 D$ H4 T clear subB5 g0 h9 r4 Z6 P % end " @( e- j. D7 l& M state(1,length(state)).cutload=0.0; if srefPg>0 brflow=swp*(sbusPg-Pload);4 W' B; n1 W) s! D1 T$ g8 L$ \, k cutload=0; for ctbranch=1:38 if abs(brflow(ctbranch,1))>branch(ctbranch,8)9 k3 F- e& b9 @* p, { limA=[Pload',bus(13,3),sPgmax];. r4 D3 v; e' \) q [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA); if cutload>1& I9 T( {& E! j- S* m state(1,length(state)).cutload=cutload; end break; end end1 m8 l0 ?7 ^- }+ L- I) |4 J else limA=[Pload',bus(13,3),sPgmax];* c1 q/ G9 p4 U7 r- h( q [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);* r2 ~. ]+ S$ a* K% H if cutload>1 state(1,length(state)).cutload=cutload;% o6 h. }) ?$ X+ L end3 H* u; y3 S* Q" S; ?4 y. F/ q end. h2 p0 A" L L if state(1,length(state)).cutload, K. a" f$ W% e7 W" R& k sumcut=sumcut+state(1,length(state)).cutload;7 x; v- Y6 [+ k7 i5 B6 q! L sumsqcut=sumsqcut+state(1,length(state)).cutload^2; lolp=lolp+1/stct;$ n3 j9 g4 L4 H( x edns=edns+state(1,length(state)).cutload/stct; vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2;# b0 u: C g2 o* W, d. p6 }0 T ednsarray(1,stct)=edns;$ R: _% K% ]" K. k lolparray(1,stct)=lolp;& y8 N" f3 N! J' Q1 r end1 ^% R' t D) S4 N2 ^) C2 ` vindex(1,stct)=sqrt(vari)/edns; success = 1;) x0 h3 `& S8 y% x6 W5 n8 V for i=1: outbr branch(memobr(1,i).loc,11)=1;' z* t, N4 w1 V* S4 l+ ~ lineB(memobr(1,i).loc,4)=memobr(1,i).b;) C) z5 R e: Q, p end for i=1: outgen/ u1 \, c- x6 V) J& F2 l# U1 t7 j gen(memogen(1,i),8)=1; end6 N: U" M7 k x- u clear memobr; clear memogen;4 U# n) I8 z" t, x* l( A % if (stct>10)&(vindex(1,stct)<0.017)* s7 `% r! q9 b1 u/ O0 f % break % end! V5 J: y. a& b" _1 F3 h end layer=zeros(1,15); for i=1:length(state) layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct; end lolp edns/ D) z5 }7 N1 ]; ^4 }0 w) q! v: J dlmwrite('E:\study\edns1.txt', ednsarray);. D9 a, w; C3 b% s$ x dlmwrite('E:\study\lolp1.txt', lolparray); dlmwrite('E:\study\var1.txt', vindex);( r! `( p* Q" k) o2 C8 z dlmwrite('E:\study\layer1.txt', layer);- d: O) W8 F% M- h% s plot(vindex);* O' L# U8 z4 r5 J) }/ ?( _ hold on plot(layer) return;
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |