| function [MVAbase, bus, gen, branch, success, et] =runpf4 |' S/ i9 W: Z+ T/ r [baseMVA, bus, gen, branch] = loadcase('caseRTS79'); [i2e, bus, gen, branch] = ext2int(bus, gen, branch);. L$ H% p/ m2 }" I [probline,probgen]=failprob; [A,lpr,equ,Pgmax,goalA,busPg]=loadpro;/ Y) e5 U4 h o& u; V' g - u" W" Y. ^8 M) O$ y0 A 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列的相应行数 end7 m! a; v( }) p/ z, S3 Y7 h4 f Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素 Pload(13,:=[]; %删除Pload的第13行的所有元素 sumload=0; %定义sumload=0 for i=1:size(bus,1) %i从1到矩阵bus的行数 sumload=sumload+bus(i,3); & T- K8 D9 P4 F0 b end %sumload=矩阵bus第3列所有元素之和 sumpg=0; %定义sumpg=0* p2 c: M4 s. Z( E* r2 p for i=1:length(busPg) %i从1到矩阵busPg的长度+ m+ i* m: _! `3 @6 M sumpg=sumpg+busPg(i,1);) x( c3 q% t: M+ J& ?! R& b( o+ ~ end %sumpg=busPg第1列所有元素之和 refPg=591-sumload+sumpg; 6 `7 H) k$ I5 z+ {6 Z Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素- M; z9 A4 p' s lolp=0; %定义电力不足概率LOLP=01 Z" P1 Y8 X# J. R/ ?5 r7 { edns=0; %定义缺供期望电力EDNS=0 vari=0; %3 f; d5 t3 l. g9 w8 p! V3 a- l sumcut=0; %定义sumcut=0/ T3 c! ]9 s$ o7 s1 E% | sumsqcut=0; %定义sumsqcut=0 B=[]; state=[]; for stct=1:50000* ? z+ c& R$ d' k/ N- Y8 p6 W8 ] stvari=mc(probline,probgen);7 p: [: f6 M1 b O lengthst=length(stvari); numstate=length(state); lolp=lolp*(stct-1)/stct;! g# T- H$ W" S; C; H edns=edns*(stct-1)/stct;- U' R6 @& |$ I3 e ednsarray(1,stct)=edns; lolparray(1,stct)=lolp; if ~lengthst vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2; vindex(1,stct)=sqrt(vari)/edns;, G) K( h& q" |7 M ednsarray(1,stct)=edns;9 z: |, D4 J" P' a+ p& q5 Z9 B7 ]/ k- t lolparray(1,stct)=lolp;1 P' j3 {/ \: ]+ P& L8 n' u continue;% ^8 q$ S( {0 o0 n; @5 I" t5 Z else0 \# d# r3 \( O- S. A1 y) r flag=0;4 S; ]( M0 i* x) { for k=1:length(state) if lengthst==length(state(1,k).st);7 [* w, N( U/ v6 `. H- e. s3 X6 x if stvari==state(1,k).st; _3 F7 G* U- p# b$ Q+ p) a state(1,k).num=state(1,k).num+1;0 w$ g& z9 L y; s# D flag=1; break; end* Z% i! f% {: @" [- T- A end! [6 w0 b0 J/ y6 U4 @% d/ R end if ~flag state(1,numstate+1).st=stvari; state(1,numstate+1).num=1;3 x8 i$ |; N# ~& y* Y, Q end* K6 [3 w. Q+ c end if flag if state(1,k).cutload2 E- }0 P+ h' e6 z6 I sumcut=sumcut+state(1,k).cutload; sumsqcut=sumsqcut+state(1,k).cutload^2; lolp=lolp+1/stct; edns=edns+state(1,k).cutload/stct;: ~) S; y+ r6 Z+ \8 ` vari=sumsqcut-2*sumcut*edns+stct*edns^2;+ G9 V( U: d, Z7 ?! X7 A/ \ vari=vari/stct^2; ednsarray(1,stct)=edns;$ b* [) R% s% B$ e lolparray(1,stct)=lolp; end( }1 N, l1 y- B vindex(1,stct)=sqrt(vari)/edns;+ ~+ {0 r+ n4 V6 p; ^5 \# v continue;3 N! u( @0 k# L" o end/ Z' V6 @$ f- u" e5 h U clear stvari;3 C( m* o' b5 k- y$ d 5 C$ z. D# c: t# } s4 K* c ischange=0;4 z( M% B6 G1 ?- ^! d$ `6 D) } sPgmax=Pgmax;: y) x5 g: V! l9 n8 K& f6 B# n* v! a sbusPg=busPg; srefPg=refPg; outbr=0;3 b$ K; f) S( t2 H2 Q. }2 z outgen=0;6 P* j/ J/ @# H2 G$ q6 C 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; f! i7 ~+ v$ Y. r4 W; w9 L memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);* P* N1 w, J% Y6 r memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);+ g' f: ?: `+ n3 K9 v: K5 k lineB(state(1,length(state)).st(1,lenct),4)=0; ischange=1; clear B; : z- n5 b* M. N, M2 j else0 V) k' u* M$ v gavri=state(1,length(state)).st(1,lenct)-38;( `4 i$ X; x; v- H9 y' r: t gen(gavri,8)=0;% X5 E* }7 S" j: n srefPg=srefPg-gen(gavri,2); outgen=outgen+1;/ }: M7 F$ o: o8 w( H T memogen(1,outgen)=gavri;; a3 e+ r; f6 A if gen(gavri,1)<138 @/ X7 _2 c" Z, o5 D, \ sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9); W6 [) P1 U- \* g- i8 M& ? sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);8 x3 k. l% c* }6 L& R1 } end if gen(gavri,1)==13* k5 d+ G( R( a% ?+ m5 o1 ?- L$ e srefPg=-1; sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);8 M) v6 `2 c0 D* a end if gen(gavri,1)>13% U0 { h8 R# G 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 end6 Y1 {& @$ f/ ?$ R6 T" L end Z; k) g" b4 D % if (stct==1)|ischange B = makeBdc(baseMVA, bus, branch); subB=full(B);$ V R0 f7 n- o0 b* D6 _1 S subB(13,:=[];9 ?) M2 i/ ^8 G subB(:,13)=[]; swp=lineB*A*inv(subB);- I. R% v4 V8 N9 v! J) N. P/ Y swp1=swp*Pload;' j" @# f" R1 d Y maxArray=Pmax+swp1; minArray=swp1-Pmax; maxArray=[maxArray;-minArray]; lprA=swp*lpr; lprA=[lprA;-lprA]; clear minArray clear B clear subB+ A- o- \7 \% E. G % end - \! D" s z1 N9 i$ \7 u& \, P state(1,length(state)).cutload=0.0;( H. k, V L {6 c7 a2 I if srefPg>0 brflow=swp*(sbusPg-Pload); cutload=0;" s2 c1 k; B2 Y; M for ctbranch=1:38/ W4 J+ Z/ N$ T5 `' C+ `, X if abs(brflow(ctbranch,1))>branch(ctbranch,8)4 m& \! v! g( f( j limA=[Pload',bus(13,3),sPgmax];8 s+ N; a2 d/ G: a4 k, N [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA); if cutload>1, `# Z% \ q7 X4 j state(1,length(state)).cutload=cutload; end break; end, l, I; K5 j! ?. F, J( w& g& T end. M4 n7 `7 P: u else limA=[Pload',bus(13,3),sPgmax];( @# W, |& Z9 N% Q7 A5 C [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);8 m- N; M* P1 C# v8 t4 t if cutload>11 a9 u% k. E" C/ R state(1,length(state)).cutload=cutload; end end4 j3 F9 L' }5 [; f- ^2 O+ l if state(1,length(state)).cutload/ `7 T/ C0 H5 m4 x W! V sumcut=sumcut+state(1,length(state)).cutload; sumsqcut=sumsqcut+state(1,length(state)).cutload^2;' f' ~* s! g1 B lolp=lolp+1/stct;) c: O8 h) e) E' | edns=edns+state(1,length(state)).cutload/stct; vari=sumsqcut-2*sumcut*edns+stct*edns^2;" o. M; G" a3 a. S4 T; Q% J vari=vari/stct^2;6 [& `4 V0 R. ^ ednsarray(1,stct)=edns;3 r+ t! K$ H7 C4 H7 W3 P lolparray(1,stct)=lolp; end vindex(1,stct)=sqrt(vari)/edns; success = 1;% m' F6 M6 J1 R/ I( ?1 q for i=1: outbr% f0 Z3 c, k; u8 J6 X) e9 O branch(memobr(1,i).loc,11)=1; lineB(memobr(1,i).loc,4)=memobr(1,i).b; end for i=1: outgen gen(memogen(1,i),8)=1; end! e9 u; T& Q8 V# k2 S clear memobr; clear memogen; % if (stct>10)&(vindex(1,stct)<0.017) % break % end0 N! K/ m0 F' S- Q end layer=zeros(1,15); for i=1:length(state); T7 j$ S, @( ^5 b layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct; end ) C$ v$ g8 @0 j/ e$ [ lolp; h, B3 A$ g6 ?1 Q v edns M' [! H- E' D( K- _$ U dlmwrite('E:\study\edns1.txt', ednsarray); dlmwrite('E:\study\lolp1.txt', lolparray); dlmwrite('E:\study\var1.txt', vindex);, r3 c. r- [/ ~2 I4 y dlmwrite('E:\study\layer1.txt', layer); plot(vindex);# O2 f& Z! R4 T3 X! f* b: e hold on plot(layer)/ A/ L. r7 ~8 u: \# R: E6 J$ ] return;4 V9 b9 U9 U# N 4 z) r8 I4 C* t# ^, s- `
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |