| 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; [A,lpr,equ,Pgmax,goalA,busPg]=loadpro;: H- F) h* Z: ~2 j2 Z3 _6 b 1 G' u7 b- c# I6 r5 B6 W( i limB=zeros(1,48); %limB是1x48的全0矩阵 ranbr=size(branch,1); %ranbr=矩阵branch的行数* m" C' ?" V& U8 U4 u 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列的相应行数. e* X- p: G8 N( b1 W end( N E$ N% M4 n! O9 u, M8 ?4 R Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素5 {2 Y1 Y! b7 g5 X f Pload(13,:=[]; %删除Pload的第13行的所有元素% p8 j, a- b |) A sumload=0; %定义sumload=0( U% J: t2 a6 T3 C4 \5 U for i=1:size(bus,1) %i从1到矩阵bus的行数 sumload=sumload+bus(i,3); end %sumload=矩阵bus第3列所有元素之和 sumpg=0; %定义sumpg=0 for i=1:length(busPg) %i从1到矩阵busPg的长度 sumpg=sumpg+busPg(i,1);. V Z8 ]/ j r; Q end %sumpg=busPg第1列所有元素之和7 ^. Z* g" l! n( r S; O refPg=591-sumload+sumpg; Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素( w" X6 Y" s A7 @3 } lolp=0; %定义电力不足概率LOLP=0 edns=0; %定义缺供期望电力EDNS=0 vari=0; %8 g& D! K& D/ N5 i4 S sumcut=0; %定义sumcut=01 x, O* @8 D4 `; x) { sumsqcut=0; %定义sumsqcut=0* T- b) ^3 ]) P: B2 c B=[]; state=[]; for stct=1:50000 stvari=mc(probline,probgen); lengthst=length(stvari);0 F2 o! i$ T( Y" R. f" Z8 u numstate=length(state);, v! B' q4 Q- A6 n9 D- [2 \ lolp=lolp*(stct-1)/stct; edns=edns*(stct-1)/stct; ednsarray(1,stct)=edns; lolparray(1,stct)=lolp; if ~lengthst' _- a2 |! b8 A0 e- T3 |8 G vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2; vindex(1,stct)=sqrt(vari)/edns;( w& |3 v1 d5 T0 R ednsarray(1,stct)=edns;( ^) v% F+ G9 m+ X9 j; { lolparray(1,stct)=lolp;+ @+ g5 U2 Q' ~, d$ u8 C continue;: d' H9 S M: w, x/ e, Z- C else flag=0;+ ` |0 h( N2 v5 D9 i for k=1:length(state)2 Y6 d, k* q* C/ J' _8 Y0 f if lengthst==length(state(1,k).st);- x& o7 ^! ?& S5 N* U if stvari==state(1,k).st4 M( Z. [+ D# f- s, k0 t. M" \ state(1,k).num=state(1,k).num+1;; {9 h+ Z7 t' \' X flag=1; break;( ?6 m, x! S+ _- }) P3 V end end end q0 v9 E9 k- D8 s if ~flag/ ^! l* ^2 e6 Z! |5 G state(1,numstate+1).st=stvari; state(1,numstate+1).num=1;. _, I5 g: l, ~: U& z) U end end; p+ H- L$ ~4 x( Q! d& x if flag if state(1,k).cutload sumcut=sumcut+state(1,k).cutload;- v: T3 j5 ]: S1 `* g* v& ? sumsqcut=sumsqcut+state(1,k).cutload^2; lolp=lolp+1/stct;+ V: B/ i# a3 o, q edns=edns+state(1,k).cutload/stct; vari=sumsqcut-2*sumcut*edns+stct*edns^2; vari=vari/stct^2; ednsarray(1,stct)=edns;& i9 c6 z" c! |7 V lolparray(1,stct)=lolp; end vindex(1,stct)=sqrt(vari)/edns;1 ?! S: s7 r' h0 a continue;5 r; D9 l j8 j" P0 l+ z end! J9 _; o% o% J4 {1 \5 n% ~ clear stvari; ( H) s3 X# s4 }2 i" q2 d' G* a" a ischange=0; sPgmax=Pgmax;- |/ o+ A; Q# c$ @- h- S( J sbusPg=busPg; srefPg=refPg; outbr=0;0 }$ v6 p" E! j" e4 z( \' m% a outgen=0; 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; memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);1 x m3 v) O; Q. p7 J memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);) x& V' j0 G# G# r lineB(state(1,length(state)).st(1,lenct),4)=0; ischange=1;4 z7 ^9 d. G7 C clear B; else gavri=state(1,length(state)).st(1,lenct)-38;3 F0 g) F) e7 d" O gen(gavri,8)=0;, X1 X9 |7 V% W* {2 A) q. \ srefPg=srefPg-gen(gavri,2); outgen=outgen+1; memogen(1,outgen)=gavri; if gen(gavri,1)<13. R/ Q$ `) y5 r$ P" p/ I" k 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);& D( C& S4 u- W3 I end% ?" Y: J% U( ?- M3 e if gen(gavri,1)==13 srefPg=-1; sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9); end if gen(gavri,1)>13 sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);* K* y+ w5 J! {" x( k$ }+ x5 f. q sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2); end, d* y* |# x% x. M% J9 E end( J. r8 p- i* I- a! J7 K end % if (stct==1)|ischange B = makeBdc(baseMVA, bus, branch); subB=full(B); subB(13,:=[];; P: n& x* o" c& {4 J subB(:,13)=[]; swp=lineB*A*inv(subB);. C" g) L: }2 y V; g1 e# b, {/ T swp1=swp*Pload; maxArray=Pmax+swp1; minArray=swp1-Pmax;1 z# g0 f8 r* m, I maxArray=[maxArray;-minArray];2 [4 j+ N! a& j$ X k# L lprA=swp*lpr;9 i, @# L8 O7 L) Y9 t/ b lprA=[lprA;-lprA];3 P# B% p6 E: y7 K% h1 U clear minArray clear B. \( U2 L- k+ W7 l0 T9 r clear subB' w# U7 p) i8 ~ t+ M+ x1 ~ % end : N# {/ ^2 q9 }+ v8 }4 m% x state(1,length(state)).cutload=0.0; if srefPg>0 brflow=swp*(sbusPg-Pload); cutload=0;( H( p4 a/ x+ W: e for ctbranch=1:38 if abs(brflow(ctbranch,1))>branch(ctbranch,8)$ Y2 R7 M( L9 B- K8 i4 { limA=[Pload',bus(13,3),sPgmax];- i% U2 p! r6 C$ r7 ]: \% z [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);% ?. d1 O: O/ d" F0 a" w3 H c2 h if cutload>13 X) w ?: k* T' c3 E% m2 W state(1,length(state)).cutload=cutload; end break; end; E' s ]: ~; y; I/ L end) y. V$ ~" V3 c3 j6 P8 d/ z else. V- F9 D O: o# _ limA=[Pload',bus(13,3),sPgmax];3 g8 [; s$ H5 A; }& g [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);( W, s! l H4 Z$ g7 m7 x1 I if cutload>1 state(1,length(state)).cutload=cutload; end, b n. X$ c: h! {7 F9 d( d. y end if state(1,length(state)).cutload sumcut=sumcut+state(1,length(state)).cutload;# O0 J% l g( _" x: I+ E sumsqcut=sumsqcut+state(1,length(state)).cutload^2; lolp=lolp+1/stct;, K$ F! @2 p W. d: s9 C edns=edns+state(1,length(state)).cutload/stct; vari=sumsqcut-2*sumcut*edns+stct*edns^2;0 ^5 ~: r9 I: D8 u' E( V2 q- L vari=vari/stct^2; ednsarray(1,stct)=edns; lolparray(1,stct)=lolp;: o6 H+ Y+ I: ?5 u end vindex(1,stct)=sqrt(vari)/edns; success = 1;6 Z6 k- K0 B6 C' m for i=1: outbr9 ]' Q4 k# [; r) { branch(memobr(1,i).loc,11)=1; lineB(memobr(1,i).loc,4)=memobr(1,i).b;' b: ?2 R0 V# K+ p* g- |/ i end* _2 H E s* A" l for i=1: outgen& M( Z+ r) P# P5 g6 r, o* Z) g gen(memogen(1,i),8)=1;# m% z$ c' m E end+ ^; I! X/ z/ T- X, Q0 j clear memobr;& t% t2 K" D8 _8 ? clear memogen; U* x$ P; M9 K% C7 Q3 A* H % if (stct>10)&(vindex(1,stct)<0.017) % break6 }1 X8 {/ P I* ^2 N % end+ V) D+ k+ O+ O8 Q! @: G! L; F( c; I end6 ^* k6 F3 X- s2 M+ B3 G layer=zeros(1,15);% q; z Z& l7 |# W; p for i=1:length(state): g8 s8 K/ L f3 x5 S! S layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;, T! L: t1 Q; u$ T9 U9 W9 R end 9 w, O$ b j4 Q1 p lolp edns dlmwrite('E:\study\edns1.txt', ednsarray);" f* [ {: b" g dlmwrite('E:\study\lolp1.txt', lolparray); dlmwrite('E:\study\var1.txt', vindex);. U2 P6 G- p2 z, e: P dlmwrite('E:\study\layer1.txt', layer); plot(vindex);% M% _' ]0 w7 l, x, n, v hold on- [ o- m2 X; B plot(layer) return;- f i8 A( S/ ~. J$ `3 {1 ~5 b( o
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |