- 在线时间
- 1497 小时
- 最后登录
- 2017-5-18
- 注册时间
- 2014-8-20
- 听众数
- 160
- 收听数
- 0
- 能力
- 70 分
- 体力
- 17769 点
- 威望
- 5 点
- 阅读权限
- 150
- 积分
- 8911
- 相册
- 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
. P8 t+ l+ ]3 w) _) r: s5 |9 u[baseMVA, bus, gen, branch] = loadcase('caseRTS79');4 E0 ` X$ f! I. w. e2 _
[i2e, bus, gen, branch] = ext2int(bus, gen, branch);6 s7 E* U4 q) u4 g6 d/ ~
[probline,probgen]=failprob;
% n }( o9 M5 {6 m) v[A,lpr,equ,Pgmax,goalA,busPg]=loadpro;
# r) l! S/ S' q A9 r' [. H* p/ r
limB=zeros(1,48); %limB是1x48的全0矩阵
; `& L5 I+ q6 o2 H' S1 p& k; pranbr=size(branch,1); %ranbr=矩阵branch的行数/ @) ~/ `4 |7 o
lineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵/ c( R& r0 p4 Z& C( K
for i=1:ranbr %i从0到ranbr" E: t6 E3 O8 |1 D, z3 J' H
lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数
( e: ] Z( h. Q$ U$ ]& ]2 y6 nend
% h1 |* E' M0 OPload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素
$ P' U) A- P- l M4 o) f" HPload(13,:=[]; %删除Pload的第13行的所有元素$ j/ J- _) A' J: ?3 F6 i
sumload=0; %定义sumload=0
* h& r7 a- ~, R2 B$ I. kfor i=1:size(bus,1) %i从1到矩阵bus的行数
( Z+ ~7 B6 {( u" z h3 b% A8 T sumload=sumload+bus(i,3);
' S1 i8 v( E) u8 jend %sumload=矩阵bus第3列所有元素之和
* W M% @4 g7 G8 k% o5 Msumpg=0; %定义sumpg=0
2 s: k( k6 \, n) p3 y" F; ifor i=1:length(busPg) %i从1到矩阵busPg的长度$ c- Y; ~* E6 O+ {4 H w
sumpg=sumpg+busPg(i,1);
; N& f) C1 c& v7 f. n2 cend %sumpg=busPg第1列所有元素之和4 [' K ]3 K$ ~7 C( K( g- V
refPg=591-sumload+sumpg; ! v; Q' [& R) o% Z9 j$ k' ] {8 l
Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素' Q1 C/ D6 v+ f$ {4 b
lolp=0; %定义电力不足概率LOLP=0
; M2 l: d2 o# e* L+ p$ ]8 R. P* `edns=0; %定义缺供期望电力EDNS=0
; r1 R4 y% L: H# K9 o4 \! ?& k, svari=0; %; E: P, d* {! p% n; x2 d6 w
sumcut=0; %定义sumcut=01 w J& W* [) s- N; ?
sumsqcut=0; %定义sumsqcut=0
& c9 d* I0 H( t4 B1 F p/ @5 [: aB=[];
! a( V( W8 c- s; `2 Zstate=[];
1 x+ k* G0 g8 V% |+ {2 Cfor stct=1:50000" _7 ^7 H# y# F) |
stvari=mc(probline,probgen);
, l' j0 }# l( { lengthst=length(stvari);2 q4 Y# X7 x5 l' D: r
numstate=length(state);' q8 H7 j8 u7 R3 d, D* ?
lolp=lolp*(stct-1)/stct;
3 f* M3 |$ n2 m2 s9 Y3 d7 f edns=edns*(stct-1)/stct;
9 d6 O% ~7 H3 P5 Z ednsarray(1,stct)=edns;
4 p( }7 X& j# k lolparray(1,stct)=lolp;
7 V5 Y, N$ E3 _6 X7 v/ ^, A0 P- o9 K1 l* D! S7 Q9 y
if ~lengthst* ~4 j8 Z; o- c9 T$ l1 e7 @
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
; `: E- ~( e' h- _: D vari=vari/stct^2;; F# y9 N7 Z, _2 x9 H& n |' B ~
vindex(1,stct)=sqrt(vari)/edns;: B& e: N& J/ B4 O
ednsarray(1,stct)=edns;
5 t' X5 G" |% _' z7 P lolparray(1,stct)=lolp;5 ~. e" X6 A0 C6 u! \ u7 w1 z
continue;
. S5 z3 F8 \4 O6 a! K R8 [ else
# T' d! l& P# n1 ]' t flag=0;% R! l$ H R4 f" ?8 b1 q0 ]
for k=1:length(state)( _+ h( [3 v& ~# e5 V# B) e! F
if lengthst==length(state(1,k).st);
8 L. L0 i4 t4 s if stvari==state(1,k).st
3 e1 S; w! K: A k% o8 _: k state(1,k).num=state(1,k).num+1;0 Z6 @9 r+ d# j2 _( ~+ j4 d) c4 g' f# J
flag=1;( m- D: G3 o: Y
break;
0 {# @3 l l* L% t7 B+ g% p+ B end
& J3 @. D. M$ k$ H end
# e. l! {9 J5 z. i9 m end) i) o4 z% k0 B& Q+ Z
if ~flag
) p# f" v4 c! j6 b state(1,numstate+1).st=stvari;
/ a' ^; A4 g7 ~1 b) y$ i" M state(1,numstate+1).num=1;
" s7 l2 Q6 \' U' {- H G5 j end8 `; k5 [7 D# Q# x/ j2 t7 a8 l# A6 p. c
end' ~% b z9 f% }9 E, Z1 p& o l
if flag
( J6 F/ w% A1 U4 F/ }7 \ if state(1,k).cutload
% g/ k& R2 S6 Q2 N# D sumcut=sumcut+state(1,k).cutload;
) ?) L+ |- t& e& k/ w1 o2 h sumsqcut=sumsqcut+state(1,k).cutload^2;$ s: r/ D/ D6 @
lolp=lolp+1/stct;
, W" Q8 t" Q X& j4 z edns=edns+state(1,k).cutload/stct;
+ B* R$ H1 b2 P& A vari=sumsqcut-2*sumcut*edns+stct*edns^2;4 r- ^6 f; L0 Z$ E& @ a; ~
vari=vari/stct^2;
; ?+ j) @& C4 J. O+ C8 l ednsarray(1,stct)=edns;
# h: \9 P* s7 O0 T' U$ H8 c, h lolparray(1,stct)=lolp;$ | Z7 B7 y& P# M- C+ z& q: K
end
. C" P: J4 } h1 D' I vindex(1,stct)=sqrt(vari)/edns;
: Z/ D# \! l/ L8 r continue;* A, G; W7 M6 G1 m$ X
end% |5 \" I% n _/ |
clear stvari;
% J( W8 {1 j0 f! F/ Z6 G7 o% A
$ W2 i. `* o; }( Z+ X' U ischange=0;
" C9 U9 U$ q' T8 ~* {' g2 F sPgmax=Pgmax;
- a9 D% N. i8 U3 {! X: \ sbusPg=busPg;
& O$ N& Z$ n$ A4 ~! L: e, [1 l: V srefPg=refPg;! B2 u. C1 M2 z) V
outbr=0;, ] K& h& J# O2 w- H
outgen=0;* J- B) @0 ^0 E7 F4 r
for lenct=1:length(state(1,length(state)).st)
+ R& p0 A2 j, m/ K8 ^5 B$ n# U if state(1,length(state)).st(1,lenct)<39
6 H: e% w# ~9 D! F" u6 W outbr=outbr+1;* L# S& E; r3 E- b9 ?4 x! J
branch(state(1,length(state)).st(1,lenct),11)=0;5 Z# W6 d i. _ Z
memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);
) C4 z+ i2 _/ z0 ^7 p memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);' G1 Q& R9 ^. S. l; H
lineB(state(1,length(state)).st(1,lenct),4)=0;$ s* N9 C8 [' L
ischange=1;) q2 y* a( t5 g
clear B;
7 x$ K& |$ b# w; d* ? & h( C/ ^- c1 u/ y, E
else
$ u, X* a! }& a2 h* A; {+ G8 n2 N. T- c gavri=state(1,length(state)).st(1,lenct)-38;3 j k' g! A$ e: j, I
gen(gavri,8)=0;1 E. v4 ]9 E9 o8 F3 z$ k
srefPg=srefPg-gen(gavri,2);( d3 [& j! f2 B/ u ?
outgen=outgen+1;2 {. y" S! r v
memogen(1,outgen)=gavri;
6 T3 b: P3 P3 |: A if gen(gavri,1)<13' t0 o' M4 {& i% j$ R
sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);
# {. O+ w' ~; m2 ^ sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);! Q" v6 N; [+ R9 n" U5 G) }
end
1 V5 x" y" d2 t- N' G/ _2 l if gen(gavri,1)==133 W; e( Y* y' ]' A! t! y' B7 r/ k
srefPg=-1;( {2 K7 E C$ \1 x" u
sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);8 L- L, A, A' e3 L# Q; g _
end2 Q' u$ b6 {7 s- `" |) o# B$ l
if gen(gavri,1)>13
h( C# ?; L" _' d- O M8 m+ s sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);
% N& v1 B, w' j. u% P% v a sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2);
: z* x! U1 J. j end
( Q7 j- O/ j; y' b; w2 A end
' _( w" ?1 o) [: V$ ~* I1 P end, t) _% l# i6 t! E% M1 j
% if (stct==1)|ischange
+ K1 ^4 E$ K% n! Z1 Q4 d, L" c* m B = makeBdc(baseMVA, bus, branch);
( v, \# B; l" w2 i9 S |+ j subB=full(B);1 ]& Y9 q( L8 b) O
subB(13,:=[];7 T k% o+ d( ` x: ]8 k) i9 W: J! T
subB(:,13)=[];
0 }0 t/ C s) ^ swp=lineB*A*inv(subB);
/ }" B: |9 B4 A- v8 h" k swp1=swp*Pload;1 F* J1 i3 u! `0 w* e- \4 X( N- f
maxArray=Pmax+swp1;
: J, j: U. l9 h# N: B4 H minArray=swp1-Pmax;
8 H/ H+ D4 N" o# P+ x' O0 T8 Q maxArray=[maxArray;-minArray];7 m/ t; L! ^0 }/ E- p
lprA=swp*lpr;
6 u9 p4 P* v0 \: n6 u# D) s- q- } lprA=[lprA;-lprA];3 R2 b2 V: r3 h# ]5 e: d
clear minArray7 R9 j" i" l$ t$ M
clear B
0 ]) r2 }6 ]1 m. Q clear subB, s8 i2 B+ H+ u+ R
% end3 T5 j' t8 l2 o& K) L4 E3 u
5 V# t! k( U5 E/ ?4 o& i) p/ s state(1,length(state)).cutload=0.0;
$ N, B+ r. r9 A C. k. W if srefPg>07 T8 T3 A& L& ?+ p
brflow=swp*(sbusPg-Pload);
0 p6 e6 O& c4 m/ i: } cutload=0;3 z/ ~8 b3 f2 g2 Z7 l7 x
for ctbranch=1:38
" Z) |$ B0 k: m) L( k) v, [) x if abs(brflow(ctbranch,1))>branch(ctbranch,8)
& G. I+ R- R8 C4 @ x: c limA=[Pload',bus(13,3),sPgmax];9 }7 x" N; \( M# c* _
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);
& O/ C2 Q! B0 g4 B if cutload>15 L& L. I- Z% P- T6 J& b
state(1,length(state)).cutload=cutload;
5 n# z3 A- m+ n; v end
! O- u5 G2 a0 Q' B* J2 [ break;
) M/ Y u: {0 U. W! ?4 T" X end
8 _: r o k) F3 ]: a) O6 | ^& w9 V- o end
, F0 b' ~# U! o- O else
; Z, `- h1 N9 B: z limA=[Pload',bus(13,3),sPgmax];$ L4 [7 B) e) m' B' z
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);, `! J3 _7 H5 C- A& ]5 a+ i& A8 b9 n
if cutload>1
' W9 z1 V1 K: V: i state(1,length(state)).cutload=cutload;! R* n* Z5 ~) P5 `9 l/ F3 B
end& y7 m2 e, G" T6 E
end
; p+ O- ?' x, x if state(1,length(state)).cutload
+ u( {) _7 u/ p5 o sumcut=sumcut+state(1,length(state)).cutload;
% P2 A0 P4 b2 x5 t! j' j sumsqcut=sumsqcut+state(1,length(state)).cutload^2;
: T. u* o4 r# X' {) d6 S6 T) p lolp=lolp+1/stct;2 {5 ?- d6 {3 F! ^' X& W! `7 B
edns=edns+state(1,length(state)).cutload/stct; Z/ i/ W8 I" S0 P1 P
vari=sumsqcut-2*sumcut*edns+stct*edns^2;/ k5 A4 N* F0 ~( |. J e C
vari=vari/stct^2;
: J( p3 \/ D' R! L/ u# F8 i n ednsarray(1,stct)=edns;# q8 q1 _( B& U" k/ T3 w
lolparray(1,stct)=lolp;+ B8 n+ o! _' ]1 ]
end
, _3 r% J9 Q7 L0 U* A7 B* _; Y vindex(1,stct)=sqrt(vari)/edns;
* i" c5 z$ f5 {. d success = 1;
; g5 X" M$ F! \7 Q for i=1: outbr, T" F: S% O6 d: A. H! B, N
branch(memobr(1,i).loc,11)=1;4 i: c5 _3 c: o3 c
lineB(memobr(1,i).loc,4)=memobr(1,i).b;
3 q+ _; O' K/ \6 H7 ` end
+ e5 u' g2 M+ ]; S+ H, h for i=1: outgen
8 v: \- p0 R1 |# F" i9 G& J9 b gen(memogen(1,i),8)=1;* Q( W$ b; ~ q0 W( M G1 L* w
end7 f1 n: h" I5 }% ?$ _7 m5 Z+ ^
clear memobr;+ f |% L' F8 X: m# C, D& \: o
clear memogen;
' ]# m/ u# X& ?1 h6 k/ g% if (stct>10)&(vindex(1,stct)<0.017)4 S# n8 P2 d/ ]6 p- ~
% break
: h: {0 k+ X6 u0 K/ C i% end1 W N* s# \; U! I; R( A5 ]
end
; D/ c) V0 {! klayer=zeros(1,15);* V2 S: G2 X( {: Q4 C! X
for i=1:length(state)
' [ S: H- ?5 d/ f2 ^ layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;
" A6 z9 M$ i/ s: zend! j% r9 B1 I. F' X6 H$ X8 ~
- y3 w+ [, e* \$ ]9 |/ w6 W$ H' _1 Nlolp4 b/ C! _- x& R
edns% y. }6 W5 ?$ @3 E
dlmwrite('E:\study\edns1.txt', ednsarray);' ^' ]" m! q0 e
dlmwrite('E:\study\lolp1.txt', lolparray);
7 ?: D. ?- p- }( G2 w# m" S0 ddlmwrite('E:\study\var1.txt', vindex);
$ x$ w% t8 |1 }2 ?8 ^# o6 Udlmwrite('E:\study\layer1.txt', layer);- D+ p2 O) w9 r; H& |+ P" q
plot(vindex);& M- E9 T: [. @0 E4 K, a8 R
hold on
; o' h- g: U7 O2 l& V' T3 dplot(layer)' R/ E+ U! V* @
return;
1 f& T! ^9 h2 M3 W
- D- `0 F/ l7 K7 H7 X; ? @% a- V
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
| |. W) ?$ E o$ Q/ x' k; a
, D6 L `" k9 l" v) R
, Z {( o/ m8 U ]6 J9 F y3 Y j8 {6 @0 O# p
|
zan
|