- 在线时间
- 1497 小时
- 最后登录
- 2017-5-18
- 注册时间
- 2014-8-20
- 听众数
- 160
- 收听数
- 0
- 能力
- 70 分
- 体力
- 17442 点
- 威望
- 5 点
- 阅读权限
- 150
- 积分
- 8815
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 3833
- 主题
- 2802
- 精华
- 14
- 分享
- 1
- 好友
- 756
TA的每日心情 | 开心 2017-4-26 10:25 |
---|
签到天数: 491 天 [LV.9]以坛为家II
- 自我介绍
- 即使不开心也不要皱眉,因为你永远不知道有谁会爱上你的微笑!
群组: 数学中国试看培训视频 群组: 2017美赛两天强训 群组: 2015司守奎matlab培训 群组: 2016国赛优秀论文解析 群组: 国赛护航思路养成班 |
发表于 2015-11-30 10:03
|显示全部楼层
|
function [MVAbase, bus, gen, branch, success, et] =runpf
+ u+ L+ [! S' |6 D. t. a[baseMVA, bus, gen, branch] = loadcase('caseRTS79');7 U( I; [) U6 ~! Z) Y/ t" E Y/ f' G+ M
[i2e, bus, gen, branch] = ext2int(bus, gen, branch);4 u6 f$ ^, T9 p* n3 \# A7 y% t: Y
[probline,probgen]=failprob;! c# Q8 Q) z! I/ Z8 a; G/ `( V3 u: o
[A,lpr,equ,Pgmax,goalA,busPg]=loadpro;
5 d1 g, m9 ?' @* l
# {1 I6 o }, p: @# m$ j' `limB=zeros(1,48); %limB是1x48的全0矩阵3 q0 x4 p8 B. X* |- T
ranbr=size(branch,1); %ranbr=矩阵branch的行数
/ a- Y1 A1 w6 D% [& y2 e* \lineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵
) B) {1 q2 J$ N- l# Mfor i=1:ranbr %i从0到ranbr
6 }; ]% }1 G& T( ?6 ?3 `0 D lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数
: { ?3 B' B( P1 e. X7 S0 p; Qend& n& D' U" N' t* M& [7 E" h s
Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素% F- ^' `' K. V! j! M$ m" _' c
Pload(13,:=[]; %删除Pload的第13行的所有元素* n2 Z& p6 t8 z7 G8 ]- P3 m- g; S% E
sumload=0; %定义sumload=0- f1 W* X; M# Q" n2 y
for i=1:size(bus,1) %i从1到矩阵bus的行数
t+ Z7 D& N u7 U sumload=sumload+bus(i,3); : ~, S, B3 ?; p# C; |
end %sumload=矩阵bus第3列所有元素之和
/ O7 \ E }' [" `4 E* ?# ssumpg=0; %定义sumpg=0. K) r& i( x- @- e, P: X
for i=1:length(busPg) %i从1到矩阵busPg的长度
2 C9 O* x1 g' w sumpg=sumpg+busPg(i,1);3 q( K' }. ~3 S: a' y
end %sumpg=busPg第1列所有元素之和
7 u) U" w$ z+ u" r9 rrefPg=591-sumload+sumpg;
' x9 q5 J; ~8 M* V, Y! NPmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素
: z* g% a6 u$ ulolp=0; %定义电力不足概率LOLP=0$ O. |4 e- S- R3 q" O" l8 Y
edns=0; %定义缺供期望电力EDNS=0$ U1 i6 L" R9 u6 ?. U( ]8 C
vari=0; %4 h! F5 z& B( L' i9 M
sumcut=0; %定义sumcut=0
% ?& {0 k0 J$ p0 @* Xsumsqcut=0; %定义sumsqcut=0
* ]: \6 f2 C" B8 Z1 |% P8 RB=[];
. ]- G+ Q9 e5 ]/ j! {5 K0 J6 mstate=[];
! C: |- C" F, Tfor stct=1:500007 _" Z2 `' ^3 b2 q) _% U+ g
stvari=mc(probline,probgen);
, |! Y. j' _ @( Q" P8 G0 x lengthst=length(stvari);
4 |3 U2 k! P9 d" z6 E7 x* `# [+ } numstate=length(state);: y l+ y& m5 W, P
lolp=lolp*(stct-1)/stct;
. D% z% J8 ^1 V8 \+ W edns=edns*(stct-1)/stct;8 d2 I* A5 C6 d4 E d$ a
ednsarray(1,stct)=edns;0 [! I7 P# W* f1 L+ p8 P
lolparray(1,stct)=lolp;
# o" I2 P# g) f: j% ?4 p2 g$ E- e; L
- H% s9 s& @5 w: }9 J' h7 N/ ~ if ~lengthst
) R1 P! P) }9 K! ` c# q vari=sumsqcut-2*sumcut*edns+stct*edns^2;* f; K; h7 w; d1 E H
vari=vari/stct^2;
, M! W3 e; n- H vindex(1,stct)=sqrt(vari)/edns;2 k+ f7 u& _/ @9 Y: }
ednsarray(1,stct)=edns;
$ U9 a {1 {) \ lolparray(1,stct)=lolp;
: T7 }0 M; [3 }. F# T! L# ` continue;0 H. n: @ m. S- k, m5 q
else( w3 \& x. l, F* {
flag=0;# a* L% } i5 K( e5 h1 v! L
for k=1:length(state)
# p! h3 w* d' w. D+ i. b if lengthst==length(state(1,k).st);
$ u1 b; i& Y/ Q if stvari==state(1,k).st4 d* y2 F0 J" i/ R+ D
state(1,k).num=state(1,k).num+1;" L0 _1 X- r/ D9 q
flag=1;
0 K: _3 G3 Y* A+ N8 V! e, g3 W break;0 ^' W m8 m! Z
end9 Z6 x$ H8 f9 ~0 H
end4 ~" R8 a$ X9 u2 m7 m
end
& K. F3 j' r1 r: A) H. B if ~flag: k }1 [, d" D. ?: g- C& B
state(1,numstate+1).st=stvari;
8 s6 V6 `, j0 a% J# L state(1,numstate+1).num=1;4 K% o! G c: \1 s: R I
end
, y5 w" V) g5 q end
. p6 N8 v3 c( \0 w1 H' F if flag' [" H" o/ `$ J0 _- f) @; H ]2 Z
if state(1,k).cutload
' ?" t& V* i" }" o7 S# @ @ sumcut=sumcut+state(1,k).cutload;( x) H) s3 r6 D: K. q& S& y* p
sumsqcut=sumsqcut+state(1,k).cutload^2;
5 s0 |7 a7 M: I! O& {7 e lolp=lolp+1/stct;
C- U) |7 j' Z0 L edns=edns+state(1,k).cutload/stct;! ?4 f1 m9 v4 t4 A5 C
vari=sumsqcut-2*sumcut*edns+stct*edns^2;& m w5 Z# i% J) A& `0 R
vari=vari/stct^2;
# Y( ^7 }% }! n8 s7 G, _& y( F, N ednsarray(1,stct)=edns;
, P" x3 u* V$ D4 s$ ] lolparray(1,stct)=lolp;, h( J- w. F; W! B
end- O8 x- O F# }! r" Q
vindex(1,stct)=sqrt(vari)/edns;1 @. W0 _* j/ \
continue;/ T# K- z7 Z3 N; c
end% |) v0 r( n. P/ l& w" S
clear stvari;9 I3 w5 `; d* Z: E; Q
! ~* V! n: u9 E* q
ischange=0;
; Y. \: e3 j. O1 | e sPgmax=Pgmax;: l2 S4 b) d. b
sbusPg=busPg;
2 ?) C+ m1 a0 x- x/ a/ c srefPg=refPg;
% `! H. |4 \7 J. |, ] outbr=0;/ o. L5 v; [1 ]% n" V0 { H3 d
outgen=0;' N8 C! g8 k! [3 H
for lenct=1:length(state(1,length(state)).st)9 t1 t2 ~6 D& U, v
if state(1,length(state)).st(1,lenct)<39
4 m, U5 C" @, e) x5 _( K$ L) w1 u outbr=outbr+1; r/ W$ B$ A8 L4 u# \
branch(state(1,length(state)).st(1,lenct),11)=0;, {3 G0 P5 p% r7 R+ I( ~. |
memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);
- N9 G' d! v4 q6 z, o' X memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);
/ X* L( A% `5 z, l: ^ lineB(state(1,length(state)).st(1,lenct),4)=0;' e: {5 W7 L( A. K- Q
ischange=1;; x8 a* s& r% `/ R: m& f! Z
clear B;" v/ q0 z& k7 o, w3 V
+ S: F8 i0 u$ E0 t+ R( w+ D else
% y7 J, `( j9 M- C gavri=state(1,length(state)).st(1,lenct)-38;
. I( C/ W: W7 s# A- {; L0 j gen(gavri,8)=0;6 `# n5 N) n* R4 t1 L5 k
srefPg=srefPg-gen(gavri,2);
0 N7 \0 E3 n0 V9 { p& [, O outgen=outgen+1;
( ]" K, |% q; K; V. \ Z' d$ N memogen(1,outgen)=gavri;+ x4 G( \# V* }2 F
if gen(gavri,1)<13
* W* X% @7 F7 p4 A8 `4 t9 A sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);6 u- g$ C/ c! i/ i: k/ u" Q0 M; }
sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);
5 F! k4 R; F; V6 U1 _* P# u end
. ~, q' O+ D4 ^7 q- R. z+ B- S if gen(gavri,1)==13& R- _) _4 }4 o. |2 O5 M
srefPg=-1;
- D# ^4 M. h+ P3 Y+ C N$ d3 \ sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);
5 A- h& S: F: N3 K2 }8 M end2 {" v# v4 b6 ~* i
if gen(gavri,1)>13' Z F- L1 W2 b6 b% W
sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9); J7 b, q, c7 n. k, \' I5 F# ]( b
sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2);9 X/ A l# K( ?0 d5 w
end2 s& X: }% {$ T
end1 s3 i# p* [) s# m1 [ E6 q
end
^) }0 @: L4 k* U- V% if (stct==1)|ischange
0 Z$ L8 g/ E" C$ N; \ B = makeBdc(baseMVA, bus, branch);
: U0 x& \% c# ~! U' R% f, i subB=full(B);1 V3 M) ^1 o8 D$ B
subB(13,:=[];
L) S6 ~( W! E7 O3 |5 L subB(:,13)=[];
3 S t5 w9 \& H/ d2 x( _ swp=lineB*A*inv(subB);( F2 R6 s' O# N1 u
swp1=swp*Pload;
9 T- B) h5 Y* r maxArray=Pmax+swp1;- m. I1 n: ~: i; o) E$ p
minArray=swp1-Pmax;
1 H- O- t/ D5 a w% N0 r maxArray=[maxArray;-minArray];
/ b h1 P& ~" C& ]& R lprA=swp*lpr;
/ i& P0 H* i. K4 B; o, z2 r; c lprA=[lprA;-lprA];
1 n/ Z) K" f/ P clear minArray
$ H. i% W- G1 H$ _6 C2 k8 X clear B" F5 S3 c j9 @' J$ S
clear subB
6 X) Q) u t2 S# w: Q( r% end0 E2 D/ O9 u( U9 w
9 u4 X0 \- O: Q1 X state(1,length(state)).cutload=0.0;- |- s" T# I6 @, i- I
if srefPg>03 V# x4 [0 n# B
brflow=swp*(sbusPg-Pload);
' }# _7 Z. O/ u, K( N" f cutload=0;# W& P Y% G' R% x2 P
for ctbranch=1:38
( o0 x3 O2 r) C2 f- }! M if abs(brflow(ctbranch,1))>branch(ctbranch,8)& {3 E2 C, K- u" l
limA=[Pload',bus(13,3),sPgmax];- p7 V: M) |# l$ U
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);
: H1 ?. V: T7 N: g' y9 Y0 T if cutload>1$ X+ K% C% n( [' L
state(1,length(state)).cutload=cutload;
3 H) O' C5 j0 w) n end4 U3 {9 W# @5 z! j. z( ^1 U
break;- k, P5 o. k$ Q* O% |% m( W
end, y1 ~2 k0 x7 P1 }3 E
end
: W J2 b( \1 J9 G9 M: B s1 { else
_3 D1 G! p/ B2 ^ limA=[Pload',bus(13,3),sPgmax];
0 e6 L5 [/ p7 Z, A8 j [m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);# C% f& D7 x1 }
if cutload>1
& z/ \1 \2 K& h& H- E1 O2 X9 h state(1,length(state)).cutload=cutload;
3 X q! [$ t, @& ? end e6 s1 O- t( L2 n4 M
end
$ ?2 r: @3 [. ]) h6 y8 Z$ s2 ^ if state(1,length(state)).cutload
_% B& X& `5 P# C4 r) X$ G sumcut=sumcut+state(1,length(state)).cutload;) P# s7 S' R7 X) u4 D2 |
sumsqcut=sumsqcut+state(1,length(state)).cutload^2;: G# R* `2 w4 b
lolp=lolp+1/stct;2 i) K+ Q' K* Z8 ]! R$ \/ Q
edns=edns+state(1,length(state)).cutload/stct;1 l7 {8 c3 L! e5 M$ g
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
" \8 A( K) Z( `& I6 _, D vari=vari/stct^2;) a, b/ R2 V. Z' S
ednsarray(1,stct)=edns;: F( s0 g: ~9 D* h
lolparray(1,stct)=lolp;
6 ?9 `+ n/ N9 c- _) z( ] {! }4 u end4 } G% k/ X/ R
vindex(1,stct)=sqrt(vari)/edns;
5 j4 |# d- j5 p" V f success = 1;
0 K) x3 L$ G8 |% h. ]/ ?/ R for i=1: outbr# }4 v# y. k: D3 |0 H
branch(memobr(1,i).loc,11)=1;) Q; Y( y6 `& O4 U2 z- `% v1 d5 i
lineB(memobr(1,i).loc,4)=memobr(1,i).b;
+ T( k5 m0 Y! _ end
- D: ~$ D- u; v8 [) X for i=1: outgen
' N! h. Y* X4 }- T- K' r" t gen(memogen(1,i),8)=1;
7 e; O% h; ]# M end
5 g4 k: \6 I D0 C" x$ A/ q clear memobr;$ y$ l+ U; a9 S% T9 p
clear memogen;
3 q* y; `! [* f8 A6 c% if (stct>10)&(vindex(1,stct)<0.017), c# I* y& ~' `7 ^! V+ f4 }3 t& g
% break* |' ^) c/ U- q! p5 g
% end1 c# F( u/ x; c
end# S% Q8 }* l5 p: \6 _5 j
layer=zeros(1,15);( X$ w: Z1 I+ A# `$ {- v
for i=1:length(state)
& P4 K: O* M( U$ ?7 r& k, d3 T layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;5 [$ m: M, {6 A3 V$ V3 g) Y; _
end
4 o+ u: U- B1 G& K- P' z! X5 v) @9 v
lolp' n4 h- ?- C+ m2 G7 D+ `( N* l
edns
0 f- g8 f$ p) v# {3 b) i) Rdlmwrite('E:\study\edns1.txt', ednsarray);: E' m& n0 x9 H& D1 @ ~. S! H
dlmwrite('E:\study\lolp1.txt', lolparray);& {& \/ g3 h- _- Z0 X* U6 F8 o ]
dlmwrite('E:\study\var1.txt', vindex);
! W! H& w6 B) d9 g L9 \. Zdlmwrite('E:\study\layer1.txt', layer);
( Z0 L8 F! I( Z# m$ f, yplot(vindex);
- |9 z8 v9 C- W7 |7 u5 i$ m: {+ i+ Ihold on7 V# n2 }: }; ~
plot(layer)* B4 t) r s: Y
return;- e- o/ g0 l9 _8 H' A
, y/ c$ F: ~. E( W! I
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
7 x: u8 Z+ i. ^1 }" O7 K1 p
/ k( L2 M5 \* i! a. f3 R- q7 K+ n# n5 ?, D! b" M3 `
9 d8 K& R. W+ ]1 W |
zan
|