- 在线时间
- 1497 小时
- 最后登录
- 2017-5-18
- 注册时间
- 2014-8-20
- 听众数
- 160
- 收听数
- 0
- 能力
- 70 分
- 体力
- 17799 点
- 威望
- 5 点
- 阅读权限
- 150
- 积分
- 8920
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 3830
- 主题
- 2802
- 精华
- 14
- 分享
- 1
- 好友
- 756
TA的每日心情 | 开心 2017-4-26 10:25 |
|---|
签到天数: 491 天 [LV.9]以坛为家II
- 自我介绍
- 即使不开心也不要皱眉,因为你永远不知道有谁会爱上你的微笑!
 群组: 数学中国试看培训视频 群组: 2017美赛两天强训 群组: 2015司守奎matlab培训 群组: 2016国赛优秀论文解析 群组: 国赛护航思路养成班 |
function [MVAbase, bus, gen, branch, success, et] =runpf
/ `6 U0 |% z2 ~/ y* j8 O) D, `" U9 w. ^[baseMVA, bus, gen, branch] = loadcase('caseRTS79');* Z" Y: g% I$ M9 W: C( p, M8 |
[i2e, bus, gen, branch] = ext2int(bus, gen, branch);
* o. B/ t0 _, q3 `9 a6 \4 I2 T[probline,probgen]=failprob;$ p' T0 @' J/ _( K
[A,lpr,equ,Pgmax,goalA,busPg]=loadpro;
8 D- U6 @+ A/ h) v- B+ p1 m% r; J' z ~; v$ V) Q4 ?
limB=zeros(1,48); %limB是1x48的全0矩阵
3 @7 @1 l! Q5 f4 Y' y+ uranbr=size(branch,1); %ranbr=矩阵branch的行数0 C* }) c, R" h! q
lineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵# M: C6 \) H' C0 d; X* U
for i=1:ranbr %i从0到ranbr
3 D4 I! l" i# {, B lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数
" t! ] j: v7 Y( _end; o9 C' \" Z2 a$ L- U6 h* ]7 G
Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素8 Q n% b' u: p# b: M3 l+ l3 U
Pload(13,:=[]; %删除Pload的第13行的所有元素0 h6 F! y9 ^) K3 I3 J2 }7 R
sumload=0; %定义sumload=03 S8 a! M V0 ^
for i=1:size(bus,1) %i从1到矩阵bus的行数
0 }& K$ t! u% |$ x. e7 ` sumload=sumload+bus(i,3);
% b6 L" N5 Z7 Q3 | g# Lend %sumload=矩阵bus第3列所有元素之和4 \/ t& `1 o# q) p
sumpg=0; %定义sumpg=0
7 Q4 T% p; Y2 p4 R& U+ f' M, v2 g& }for i=1:length(busPg) %i从1到矩阵busPg的长度
& u& D% b- t; k& [# D+ m sumpg=sumpg+busPg(i,1);
" w, Q' ?, f; D) J& F7 k) u8 Y7 L& Gend %sumpg=busPg第1列所有元素之和% F8 c, l3 e4 ]; s
refPg=591-sumload+sumpg; % k$ Z4 A1 E/ R: S9 m* d5 _
Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素
4 m4 _+ u. ~( P( ololp=0; %定义电力不足概率LOLP=0' O5 p: J' @2 D* T
edns=0; %定义缺供期望电力EDNS=0; K7 o a/ ?( u& ?
vari=0; %
, I5 N2 A& k+ `2 ]sumcut=0; %定义sumcut=0
2 l* s$ Q- X- l2 h7 Tsumsqcut=0; %定义sumsqcut=0
/ g# b% ]% F8 d5 m" CB=[];
. f" p. f$ G7 h$ Tstate=[];3 X6 |5 v% x5 Z# ]
for stct=1:500005 F1 n0 J- |7 x" g8 @
stvari=mc(probline,probgen);" L! V% W! x1 L) P! d' B1 L
lengthst=length(stvari);6 _5 D$ G; `6 D# z i
numstate=length(state);1 n* E4 y' @3 g* f
lolp=lolp*(stct-1)/stct;
7 D: `5 y& R" d( `" Q% i5 ] edns=edns*(stct-1)/stct;
- i7 f; R& A6 x6 x t9 v ednsarray(1,stct)=edns;
) I1 Q3 X- h# W8 C) L k lolparray(1,stct)=lolp;
. f A, F% k9 }- P4 P
2 _( w8 N) J; S# X if ~lengthst1 R2 |# w6 X. p. k; r- C+ n
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
+ Y# N5 R2 O! x1 S; `6 J vari=vari/stct^2;5 g1 q/ w$ F+ x7 j* ]2 B
vindex(1,stct)=sqrt(vari)/edns;
) j @- U% r" I ednsarray(1,stct)=edns;9 L3 {% V+ Y- y6 W6 u; Z J
lolparray(1,stct)=lolp;
. Z9 x) L1 T+ o. C8 H- d& n6 Q, P0 e continue;
/ ~% @5 R/ _ } @# Z2 D( Z else
. g# Q- X6 U# O" L* f" | flag=0;3 u" t+ q! g _3 g. ~5 r
for k=1:length(state)) F" p m2 d' g" l. Y2 f0 R4 ~
if lengthst==length(state(1,k).st);' p3 F" Q9 ^; E
if stvari==state(1,k).st% r( q* V0 T: ] d
state(1,k).num=state(1,k).num+1;' n$ |2 F6 l" G: ^8 h2 p
flag=1;
% j- o4 m; f7 P" b& g break;
6 d K; H) W9 f. u5 W end% P ?7 E+ o& r5 `
end
- O2 y+ d" d* D end
+ c& ^/ g- q( E) e2 p if ~flag
6 N6 n$ \( {3 u, H. I8 e- w state(1,numstate+1).st=stvari;
! H/ r; f% d9 F" p4 x state(1,numstate+1).num=1;
+ k- }! t2 C& i! E, ` end( @! {/ a- x2 C/ W% N
end
/ ?" E Z5 n B& C4 u9 ^ if flag
; k2 O0 d5 J+ @! x if state(1,k).cutload. v& @1 V( T- b( [% m- Z! @# g3 a: _
sumcut=sumcut+state(1,k).cutload;
6 e, ~" w% f* O sumsqcut=sumsqcut+state(1,k).cutload^2;
0 S: s L! R2 s: P lolp=lolp+1/stct;
+ ]( X; A1 g9 Q% d1 L2 W+ I edns=edns+state(1,k).cutload/stct;
+ k# f) a+ x" R0 U) ~# ]9 C vari=sumsqcut-2*sumcut*edns+stct*edns^2;5 G6 p% y% b Z! J/ T! E' b; o& j# l
vari=vari/stct^2;; o, v6 q1 f$ {! i5 t4 W
ednsarray(1,stct)=edns;
& |5 o, `. k* h7 C# y, O, p0 k0 S; h lolparray(1,stct)=lolp;
( O. e2 C6 q; Z6 E) C( ] end* y' N1 N% R5 _+ `! ]2 n
vindex(1,stct)=sqrt(vari)/edns;- Z+ {* j3 g3 }6 o5 W
continue;
: p1 F o- _ ~: g5 _ end) w& Z' v( N6 z& y; L+ t- X
clear stvari;
y) t. u/ }, h# x2 u9 m
# ]3 `) A" J& a ischange=0;
6 z! f$ c0 @) s3 X9 f sPgmax=Pgmax;
0 v' e% O( R! @. ~ sbusPg=busPg;
) `4 c5 g5 n: K$ M/ X# n srefPg=refPg;
- c, H, _) u# P outbr=0;2 k5 f! C- T% C
outgen=0;
& Q- h' ~4 H, o8 @2 i for lenct=1:length(state(1,length(state)).st)
- k2 S; V" P! k" B if state(1,length(state)).st(1,lenct)<393 s. h% V. v/ u h, H& N; i
outbr=outbr+1;( y2 }' [: C, N5 O, h9 M a
branch(state(1,length(state)).st(1,lenct),11)=0;
3 z/ r8 B& f8 C+ `. {5 i memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);
. \/ s% l6 k- L% d' I; _) H& \0 w5 V6 W memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);
, q& U: ^8 W) h' e: x8 g; g3 m# C& U lineB(state(1,length(state)).st(1,lenct),4)=0;( `3 T7 [6 D) w. h/ h' z2 @
ischange=1; e" I1 S. f, `/ R: O
clear B;
+ K3 Y' [. @) Z" J! D- C; ]# m * h5 ` E( a% f" l7 U
else
* @& `% W/ w/ P& {" `( H gavri=state(1,length(state)).st(1,lenct)-38;! s5 ^ [! K$ U7 O
gen(gavri,8)=0;
% F& d2 D3 [9 f( F6 p: J srefPg=srefPg-gen(gavri,2);# u- M9 u; H0 W
outgen=outgen+1;
" [) p& c3 y* |5 J" J; y2 P memogen(1,outgen)=gavri;/ ?' J. D" X: }; B
if gen(gavri,1)<13
, H, h5 E6 i' s6 ?4 B sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);$ V. l, t/ I: r: Q
sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);
7 J! ]6 E) P; A9 b end: H- H$ E) ~ e+ n! B0 a
if gen(gavri,1)==134 ^ Z! W( n d, r6 Z
srefPg=-1; U* D, V0 l X5 u" t
sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);. @6 B' r& F+ `, k- A
end
7 W6 X- f1 ]- r- C, Z: a% W, B K if gen(gavri,1)>135 W+ N* m/ l2 W [
sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);1 b* J' o x* w
sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2);
7 G/ q% X" a% W4 z end0 ?8 I# `, [+ a6 w0 ~
end
, b2 z5 z/ |- y5 s end; s; A A3 A8 r* X( z6 C g
% if (stct==1)|ischange
U( q" i, F5 K0 Q: L7 C B = makeBdc(baseMVA, bus, branch); U( ]' v* j1 I$ ]. B) ~! B
subB=full(B);
! I z1 J6 O* y* T( T N subB(13,:=[];% }- {+ h# i- t# f( D. v
subB(:,13)=[];8 W- |0 ^: V( }2 H3 f. H( T) y' F" d
swp=lineB*A*inv(subB);
# T' G' E, G d7 k swp1=swp*Pload;
7 W9 }/ y4 m% _! u4 q/ ~& C6 ? maxArray=Pmax+swp1;
0 Y6 ~1 U3 N' K y& [- T5 W8 k1 e minArray=swp1-Pmax;
9 {2 |* B# A* T2 P3 D& ~8 O maxArray=[maxArray;-minArray];4 J9 @7 J( [1 S6 `9 q
lprA=swp*lpr;3 X+ N5 [* g% V! j6 ^4 U
lprA=[lprA;-lprA];3 M1 ]' z% ] _; L6 I
clear minArray/ G) z8 B; ~$ `* y( @% C3 \& e/ G
clear B5 C/ A: ?" B- M. R- [
clear subB
# l ~. R" h+ p% end
, t$ j3 m; n8 I( g
8 Q, m1 P5 i7 H$ l9 j+ } state(1,length(state)).cutload=0.0;
# r+ R" w4 @2 l: b if srefPg>0
u# U* B6 X+ n6 j8 _: `7 g brflow=swp*(sbusPg-Pload);+ D0 s( m E/ r" a
cutload=0;; a2 k+ r4 J! _, K" N( l1 z
for ctbranch=1:38
+ Z; j" {) R( D7 \ if abs(brflow(ctbranch,1))>branch(ctbranch,8)
( s6 n; T2 X8 i limA=[Pload',bus(13,3),sPgmax];8 }" D& E$ G( f2 P
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);
2 U2 }7 l5 N7 [8 O9 w) F# x u: _ if cutload>1
: x# Z' a+ n6 ^ state(1,length(state)).cutload=cutload;
) d$ e6 Z5 Z) @6 p" ^% F end' n! ~) B3 s4 H2 @: m3 M
break;7 ?: e0 K' l1 P
end
4 O+ T) x" T8 F4 z+ t3 f- y) E end
; M% j$ x. R2 ] else
$ a( \7 F; t9 D) }9 H limA=[Pload',bus(13,3),sPgmax];
6 t& f4 d' H6 P7 z1 Q3 |2 j8 a; ? [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);, b, S7 l) g. V
if cutload>1
' Q5 l& Y1 _ d8 i9 t! x# |4 e state(1,length(state)).cutload=cutload;( U, V4 {% B* z. |2 y
end
! H: s5 l4 d+ ?) L" h) z9 _/ [. X end
2 A7 @) W# W- V4 r7 g7 }4 J if state(1,length(state)).cutload2 Y' O1 w# |0 t# m6 R+ q
sumcut=sumcut+state(1,length(state)).cutload;. V" n9 E2 {" @$ H
sumsqcut=sumsqcut+state(1,length(state)).cutload^2;
& A7 T# e8 T" e7 k$ F$ G lolp=lolp+1/stct;
* [- a* a* z. f( b) G edns=edns+state(1,length(state)).cutload/stct;
6 D! t' e0 V+ }& a! p, q vari=sumsqcut-2*sumcut*edns+stct*edns^2;
$ |0 O( z9 X; ^6 n, R vari=vari/stct^2;
" Z' t/ l `1 d6 E/ K$ S ednsarray(1,stct)=edns;/ x; k5 o, J2 v9 K2 ]
lolparray(1,stct)=lolp;
5 p2 b a! h5 n5 J# ~6 g; r end1 h9 s/ W9 s/ {& B6 p% m2 d
vindex(1,stct)=sqrt(vari)/edns;
$ k" w2 R) M% O+ J8 H1 c6 ` success = 1;
i( r0 m) m5 |. P/ K for i=1: outbr
2 P& ~" @% |, h( U2 n# r/ a2 h branch(memobr(1,i).loc,11)=1;
1 x* p K; O2 [) @ lineB(memobr(1,i).loc,4)=memobr(1,i).b;
! P# N" x' A: I$ P6 C end
% ~: U0 m& N5 I8 u- W8 o for i=1: outgen
; s' D) ]& H: e! F gen(memogen(1,i),8)=1;5 }" N, v+ h9 h
end
4 S+ D! n3 D# {/ O$ Q5 i clear memobr;/ r1 y [$ J1 x+ X( N
clear memogen;
' E' Z% _: B; [% l% if (stct>10)&(vindex(1,stct)<0.017)
8 j S% d' B: q( g% break$ f% E/ d8 `$ ^" Y5 Z
% end) k% j* a0 x+ Y
end
1 C2 a6 h! N8 |( tlayer=zeros(1,15);
9 N9 @2 o1 H \+ z) B- Tfor i=1:length(state)
/ v+ ?7 i! h) { layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;- r% E* C) R; ^# q9 K% W
end
u# h& f' y( h
/ V7 {! M$ v) plolp
, h/ O$ p7 a) `9 Medns0 X, f* K9 U2 l
dlmwrite('E:\study\edns1.txt', ednsarray);" {5 Q+ ?8 r9 U& p- u0 U
dlmwrite('E:\study\lolp1.txt', lolparray);5 C+ q) w# H7 w8 l0 x3 x
dlmwrite('E:\study\var1.txt', vindex);5 Z: @1 I' R9 i
dlmwrite('E:\study\layer1.txt', layer);
5 {) ~8 u- o: c" j% {plot(vindex);
5 T, |. M, B B2 Lhold on2 _: b% S) k/ k1 a
plot(layer)* `( R* y4 |5 T& `1 k, n
return;
* F, w: a% C8 F) }: M3 e7 a- S, `6 [
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
| " D( E9 ]5 U6 }
3 e, @6 J$ m& k& k. m
' H! n6 U2 }8 F8 ~5 n# z+ n( \4 a9 @6 O4 l* {$ _' @6 }
|
zan
|