- 在线时间
- 1497 小时
- 最后登录
- 2017-5-18
- 注册时间
- 2014-8-20
- 听众数
- 160
- 收听数
- 0
- 能力
- 70 分
- 体力
- 17924 点
- 威望
- 5 点
- 阅读权限
- 150
- 积分
- 8858
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 3830
- 主题
- 2802
- 精华
- 4
- 分享
- 1
- 好友
- 756
TA的每日心情 | 开心 2017-4-26 10:25 |
|---|
签到天数: 491 天 [LV.9]以坛为家II
- 自我介绍
- 即使不开心也不要皱眉,因为你永远不知道有谁会爱上你的微笑!
 群组: 数学中国试看培训视频 群组: 2017美赛两天强训 群组: 2015司守奎matlab培训 群组: 2016国赛优秀论文解析 群组: 国赛护航思路养成班 |
function [MVAbase, bus, gen, branch, success, et] =runpf
, R6 y5 q2 T4 M! p[baseMVA, bus, gen, branch] = loadcase('caseRTS79');
+ z" I5 A b5 E E. K4 w* l[i2e, bus, gen, branch] = ext2int(bus, gen, branch);( k8 w% v m* T
[probline,probgen]=failprob;
' W( B |+ C, X' u, [, P[A,lpr,equ,Pgmax,goalA,busPg]=loadpro;6 a8 y; O" Q3 V; k2 D
. u1 [7 J/ C% e) h# {7 U! q6 O
limB=zeros(1,48); %limB是1x48的全0矩阵
+ K5 U! t Y7 [6 h! Eranbr=size(branch,1); %ranbr=矩阵branch的行数
4 Q1 q2 f3 @6 w4 FlineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵
% r) z9 z* E* Y2 Ufor i=1:ranbr %i从0到ranbr& r$ V6 [; A9 S [& O6 j& i
lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数
% O9 j- z! k% }" s4 E0 D! ^; d/ k- n: rend
3 a' S5 f+ Q8 R2 hPload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素% c# F- b8 _* k/ q) [, |
Pload(13,:=[]; %删除Pload的第13行的所有元素
1 a4 O) H* r6 D. Zsumload=0; %定义sumload=0- ]; k0 f. }) a, ?0 U: n
for i=1:size(bus,1) %i从1到矩阵bus的行数, s( I. X3 y# x
sumload=sumload+bus(i,3);
2 K$ y4 ?( p' J; }end %sumload=矩阵bus第3列所有元素之和
" i/ Q2 s: ]: L0 R1 n4 Zsumpg=0; %定义sumpg=0
+ y$ Z4 a7 C& }5 t- H" l; y& Tfor i=1:length(busPg) %i从1到矩阵busPg的长度
: K5 l' G8 B/ k sumpg=sumpg+busPg(i,1);
2 V8 e, W( c' q3 m& Q" bend %sumpg=busPg第1列所有元素之和+ K1 O& B0 |/ R4 f! k1 j
refPg=591-sumload+sumpg; 4 [" Q8 \2 L/ k
Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素
" r* u+ u5 w1 s" H, slolp=0; %定义电力不足概率LOLP=0
% v9 T) e$ q8 Vedns=0; %定义缺供期望电力EDNS=0, g5 j. j6 M M" W
vari=0; %
. k- z0 t' q& O; s( h, W- F2 nsumcut=0; %定义sumcut=0
: V; u$ w& }* R |; U( U$ P8 l1 B: Hsumsqcut=0; %定义sumsqcut=0: U3 O1 {. A3 i, p
B=[];
' A- {9 c9 q# {3 wstate=[];) r' p3 ?; i- ~1 n8 k0 C( U" s
for stct=1:50000
$ Q' f( ?, ]3 o$ _6 C stvari=mc(probline,probgen);! W2 H, O: L' x
lengthst=length(stvari);
' K6 Y) J+ h+ H numstate=length(state);' m2 n2 [# F/ {$ e
lolp=lolp*(stct-1)/stct;9 U/ r& h0 [- l# u4 R% ~; I
edns=edns*(stct-1)/stct;: Q3 F* B/ O- ~# [: R* E: M
ednsarray(1,stct)=edns;
' f: b; p* p: R8 k) @ lolparray(1,stct)=lolp;2 U j* U5 ~: p; n
+ i# o% o5 {. z( u3 X/ q1 r if ~lengthst9 E# ?" }! i$ l* h" M+ g1 I
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
6 {9 m* x* }% L0 Q1 B vari=vari/stct^2;3 n$ f7 \- @1 J2 |! o, e
vindex(1,stct)=sqrt(vari)/edns;
3 |5 e( C# V$ q' B' t5 @7 r ednsarray(1,stct)=edns;
9 b3 T2 n, P2 [ lolparray(1,stct)=lolp;
' D1 d( l% q' |; M& \6 e continue;) `' |0 v8 x6 G; n6 M
else
0 T9 Y; E& {, M5 J% m) a5 Q flag=0;
8 s9 A- o9 W* Y for k=1:length(state)
+ L$ o: p: T$ y; r3 ^1 U5 R7 { if lengthst==length(state(1,k).st);1 A! ^3 b) n+ x8 q; U+ h6 g
if stvari==state(1,k).st& W- Y$ J. X2 z! b6 Q% Z2 Q
state(1,k).num=state(1,k).num+1;
: Q2 V9 E- k7 v7 O- I( |+ U4 v flag=1;. U, {% e( U' j
break;
! p8 {9 m4 X9 _+ D+ J- q" x end2 O: u$ S6 d5 c/ i/ T* S3 d6 a
end
1 e" T# H8 i7 h& O2 ` end+ C" @4 ` h# k" @
if ~flag4 r$ i' [; ~0 ]
state(1,numstate+1).st=stvari;/ E( B* O/ }1 P R$ y9 O$ }+ h5 P( |
state(1,numstate+1).num=1;% k1 D. T$ `/ F& ]4 h
end# N( k3 A9 @+ j2 |
end
2 e' n( o7 K2 P5 d if flag4 S7 D9 R5 m3 n2 s; t. i
if state(1,k).cutload
' b6 \' G% Y) t2 I9 j. A sumcut=sumcut+state(1,k).cutload;
4 C# U$ ^" g4 y2 r sumsqcut=sumsqcut+state(1,k).cutload^2;
: m& o8 |+ v" q W: P' ?0 y0 G lolp=lolp+1/stct;
& C* d% u: k" j: N7 s5 t7 m4 v edns=edns+state(1,k).cutload/stct;% {, N, J, U, e% N6 z2 w h8 x
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
8 n8 ?- [: O% A* R0 U4 `) v5 z9 h vari=vari/stct^2;
3 N; O9 {2 k2 q4 v7 }) t C ednsarray(1,stct)=edns;4 e/ F6 |6 E+ H
lolparray(1,stct)=lolp;9 M1 R4 f! S/ d4 ^
end
9 \3 w2 e+ A$ Z( k- Q vindex(1,stct)=sqrt(vari)/edns;
* X. A a! F$ z' H! _ continue;
g! J, i) [! [. ~& L3 H! } end" k6 r5 W R! |4 B1 N% ^# L
clear stvari;4 ]9 W& t' O1 u
@5 B- j& D5 S; b: A2 V ischange=0;9 q. C: L5 e2 e- s; z
sPgmax=Pgmax;, x& z9 C4 Z4 k6 P# ?' z. g. w
sbusPg=busPg;
+ {7 r. `' ^9 w; r srefPg=refPg;
4 t3 |, J+ \6 O# _1 s, S outbr=0;5 s' W& a$ x* |
outgen=0;4 z) v0 W* Q4 T7 u( O! T3 n3 P
for lenct=1:length(state(1,length(state)).st)
; q4 c3 Q2 y+ [2 Y if state(1,length(state)).st(1,lenct)<39
# f. D/ ?8 P" e' ]8 h) w, n1 D2 v outbr=outbr+1;
5 z8 X" P* e. _1 w" n branch(state(1,length(state)).st(1,lenct),11)=0;5 d2 X! F1 K" a1 i
memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);
5 i( t& ~" [6 t7 z2 _2 K$ h memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);$ O D5 Y: i8 f+ x. C- h
lineB(state(1,length(state)).st(1,lenct),4)=0;
9 \' f6 G; G$ u# `; J+ B. K ischange=1;
# i* t4 o# G1 j5 l. } clear B;
* ~: n8 a2 }, f7 a R
! z! H t+ q" ~, ], d+ Y else1 R! n' I% Q2 M1 W; \
gavri=state(1,length(state)).st(1,lenct)-38;
: W0 F+ L' q9 ? gen(gavri,8)=0;! K' W# `* w0 j- v) s# L
srefPg=srefPg-gen(gavri,2);- P! v! z& G: m6 Q& F: }( R5 k
outgen=outgen+1;2 h, [" s8 g* `4 V" E# E
memogen(1,outgen)=gavri;: s3 U3 f& v0 F2 d5 K- E
if gen(gavri,1)<13
$ n4 O" ~" x9 x4 n6 q sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);- c' ?2 u; v3 O1 `) k
sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);8 x/ N7 Y$ e1 L) P8 v6 g
end
2 W O& U5 V, d& Z5 e# v if gen(gavri,1)==13; E- o2 s, V' P4 W& W! r
srefPg=-1;, X: l1 L5 Q3 I- F6 \( J$ d
sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);! U/ V s4 X3 S t" ^2 S
end1 d& ^2 o) U6 a A# b
if gen(gavri,1)>13( b( \" `0 a) Y4 _' b# A
sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);. d8 J0 }6 ~' @$ ]% X% i
sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2);2 p- H4 Z9 k0 z2 @$ [
end) D* I- s. e" V z
end: v" P. C! C* a) g k: T
end1 {- I. `2 C& M( G
% if (stct==1)|ischange
9 y% |, P6 N8 g) s( E B = makeBdc(baseMVA, bus, branch);! v' {; R: k) Z% P4 p$ o, [
subB=full(B);
' N% o; Y& I/ D subB(13,:=[];- F& [6 [8 n/ o4 d5 X6 M7 F
subB(:,13)=[];
p ~% W3 g! J) b* a swp=lineB*A*inv(subB);
4 d0 q( {% Y4 `, t" ~ m swp1=swp*Pload;
8 k" A9 X* d6 q2 o6 i2 T) B maxArray=Pmax+swp1;
. s# M. a& e4 Q1 M i, O# D minArray=swp1-Pmax;. s2 P/ x0 c* F" N" H+ Q5 q6 W! r
maxArray=[maxArray;-minArray];
; `" |' S, w. u lprA=swp*lpr;
1 Q+ o! A5 q5 R/ j" L lprA=[lprA;-lprA];: _ s5 c/ d, X5 D; j* u
clear minArray$ b- j5 ~4 B4 ]3 r3 m( l5 \8 Y9 E
clear B
( s& s0 T S% N$ m clear subB F) L* e5 K, ^, p: g( ~ F
% end2 H$ K" T6 y5 l& C
7 q. n- Z5 p' G) i
state(1,length(state)).cutload=0.0;
5 `% k+ \- |; ?9 q9 `; y/ V1 {* \ if srefPg>0
' ^$ }2 L1 [( T2 T brflow=swp*(sbusPg-Pload);
& K1 \4 Y6 h% }1 I8 A cutload=0;2 f. q, z( O0 I+ j3 y1 G, c
for ctbranch=1:38- L5 q7 m# X7 ?$ V0 J
if abs(brflow(ctbranch,1))>branch(ctbranch,8)
7 o. [$ ~/ d6 [' G) ^0 R limA=[Pload',bus(13,3),sPgmax];3 K% L- x% B' f0 {3 D O
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);6 O- G: l Y6 @; B9 p! I" y
if cutload>1
- o9 B' j% x. i: ~% N/ }9 o; E) U state(1,length(state)).cutload=cutload;& R0 c4 h9 j! u8 z, l* v! A0 K
end6 ~6 Q6 Y9 C9 K0 u, F: E$ h% G
break;
N2 L/ J5 z: P) `! Q( e end
N: q) v/ a& z& V end+ t1 f4 W+ m) V, w- f2 h; b& O" q
else
) u4 s8 P. q! b6 ]) k; i# r limA=[Pload',bus(13,3),sPgmax];" n5 _/ W6 Q& V4 S
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);
# v% I# @: m; y' K. h Y if cutload>1& A$ {! W$ z0 h( [3 V; a
state(1,length(state)).cutload=cutload; q/ l) Q- e1 O/ G8 u
end
9 F0 d. H/ N( Y end
' B% w& N+ ]- T4 ] if state(1,length(state)).cutload) D8 _% j. e+ M$ M
sumcut=sumcut+state(1,length(state)).cutload;. A+ Q* v1 N4 H
sumsqcut=sumsqcut+state(1,length(state)).cutload^2;5 o0 N1 E2 g, X# C5 V, e/ d6 @! t
lolp=lolp+1/stct;
0 U1 ^4 V5 w! R- V2 \1 L edns=edns+state(1,length(state)).cutload/stct;
5 x2 o! R4 X2 m/ T vari=sumsqcut-2*sumcut*edns+stct*edns^2;+ P$ r' F, {$ q! k( y# m% L
vari=vari/stct^2;: \, |& O0 X4 q: d! x
ednsarray(1,stct)=edns;# r4 ?0 f+ x8 J
lolparray(1,stct)=lolp;) ]0 G9 y i, |5 X" e
end$ y9 H! ^& {# B4 a% Z
vindex(1,stct)=sqrt(vari)/edns;# p: R9 g2 t3 R" \0 S/ R
success = 1;
, z3 ^6 \- I0 v for i=1: outbr, z& `( N2 t# t9 ]8 R
branch(memobr(1,i).loc,11)=1;) A/ r& Z; j2 S9 v8 W$ o
lineB(memobr(1,i).loc,4)=memobr(1,i).b;) S' c8 `5 @! d) ^; M2 Y
end" P! G6 f( n6 k+ j% W
for i=1: outgen
, @2 K* _) T2 |) @6 G$ p gen(memogen(1,i),8)=1;5 |" n2 @' w. q% m: ]
end
+ C# G7 X* ?+ K+ D( { clear memobr;, E: Z. U o0 Q' k, z
clear memogen;
3 e2 [% P8 w* Z% S/ N% if (stct>10)&(vindex(1,stct)<0.017); F3 l" [0 M6 W5 B" p, @
% break! i H3 a p0 l. b+ Y9 [3 ^; M
% end
9 A6 O, |/ x9 v7 `* ~& Cend
+ f; c2 D3 v0 P8 `" @4 S( flayer=zeros(1,15);
& y3 b& f2 T r7 t2 s2 Ffor i=1:length(state)* E& D5 B& y, \4 m: Y
layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;
2 t1 j% {9 e8 f- w8 l1 Tend3 \' Q! J* P3 M
% o+ k. p, a: c2 k( ]- H
lolp
$ |: I6 ^7 K' wedns* i& ?6 T5 x$ N/ o* [
dlmwrite('E:\study\edns1.txt', ednsarray);
1 S7 G8 v2 Y2 adlmwrite('E:\study\lolp1.txt', lolparray);7 Q+ Q! j H8 ~0 l$ v* y1 v7 o7 `
dlmwrite('E:\study\var1.txt', vindex);
) F) s4 U9 c9 ]' s5 r- wdlmwrite('E:\study\layer1.txt', layer);: ~6 q% L3 _& P2 l, ?5 i' X
plot(vindex);
' c& @2 ]0 N2 q: bhold on% J/ l! C: J: k- w: r
plot(layer); J4 t4 ^$ n {! o
return;
9 \6 a, L8 b; m! M1 E5 [& F( \) c, t( A) q/ P9 [
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
{: l% Q. Y9 I: a; T" k% s5 r; C+ k9 z7 u# i
9 d! F+ O+ _0 a
* \8 `% @" `7 ^% ]$ g
|
zan
|