- 在线时间
- 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
3 S j2 B* l1 U/ o[baseMVA, bus, gen, branch] = loadcase('caseRTS79');
3 S) H$ r( H2 o: _: z2 R5 F[i2e, bus, gen, branch] = ext2int(bus, gen, branch);
9 a6 r \' G% W" r[probline,probgen]=failprob;/ i$ t! A- S+ W+ Q
[A,lpr,equ,Pgmax,goalA,busPg]=loadpro;" ^5 o$ t7 h7 h$ l
2 x- k2 S% ~% g7 ?4 X- K5 J& ZlimB=zeros(1,48); %limB是1x48的全0矩阵, g. o+ v, o0 K; I
ranbr=size(branch,1); %ranbr=矩阵branch的行数
$ L+ I9 z0 Y( }/ L! |: qlineB=zeros(ranbr,ranbr); %lineB是ranbr x ranbr的全0矩阵' m. B) p/ p' l; n
for i=1:ranbr %i从0到ranbr6 T9 f) e/ V! W' I' n, a
lineB(i,i)=1/branch(i,4); %方阵lineB的对角元素分别是1除以branch第4列的相应行数
, P4 Z% o) l7 Q% ~) [end* J6 o; K0 }- L2 x& j5 \& ?
Pload=bus(:,3); %Pload是取矩阵bus的第3列的所有元素. n' d2 B. _9 @
Pload(13,:=[]; %删除Pload的第13行的所有元素
5 s4 D4 y* V$ N& W- {, d: Rsumload=0; %定义sumload=0
% P) _8 r9 N* P J4 Ofor i=1:size(bus,1) %i从1到矩阵bus的行数/ B* m8 u4 U' x
sumload=sumload+bus(i,3); % _7 {* {9 P0 i+ C% s
end %sumload=矩阵bus第3列所有元素之和& |+ L/ L0 _( z4 U0 k6 L
sumpg=0; %定义sumpg=0
# m! q3 J. G* H/ h9 S! Ufor i=1:length(busPg) %i从1到矩阵busPg的长度
( u. w: c' D1 y9 r' g, C' O sumpg=sumpg+busPg(i,1);8 Y' o& I7 L I: E; a. r; \
end %sumpg=busPg第1列所有元素之和
+ A4 _* [9 t' U l% e& g8 LrefPg=591-sumload+sumpg; 9 j. S* C: P% x" l, y
Pmax=branch(:,8); %Pmax是矩阵branch第8列的所有元素
. c. C3 ]* G! ilolp=0; %定义电力不足概率LOLP=0
! g* B6 o0 U# [. xedns=0; %定义缺供期望电力EDNS=06 h2 X' U5 Z9 L
vari=0; %3 H7 K: Y+ J l3 a: w" f" P
sumcut=0; %定义sumcut=0" v* D' z9 `6 x/ ^( L
sumsqcut=0; %定义sumsqcut=0! |* k7 {0 t8 Q
B=[];
/ p6 b# r; ?, x z% I& Fstate=[];9 V% u: b% S G, j+ }
for stct=1:50000. x- |& ]. R! `
stvari=mc(probline,probgen);
- n8 e. u3 [3 O lengthst=length(stvari);
% u! J) O- ~4 N4 m1 q! ~2 I3 l" K numstate=length(state);; q4 ]( d. F6 Y
lolp=lolp*(stct-1)/stct;
( S* T7 ]8 a8 I" s4 k5 B5 Q edns=edns*(stct-1)/stct;
7 O) B# v4 K* b1 i S ednsarray(1,stct)=edns;/ O2 z5 d7 F l+ m0 D% `. [: P
lolparray(1,stct)=lolp;3 {" l5 R& q" D# V$ P- `+ C, ?
& X5 w2 r) d! ]( D/ ~2 n0 S, x if ~lengthst* L9 |0 y3 x; b: X; h) x1 e
vari=sumsqcut-2*sumcut*edns+stct*edns^2;
% J, [" ` y) [$ x; K vari=vari/stct^2;
( c7 W' u% Y1 c$ I vindex(1,stct)=sqrt(vari)/edns; _2 A) ?6 G3 q" _, n8 F2 v
ednsarray(1,stct)=edns;
$ h0 |% ?4 G! {" w3 D0 R Q; V lolparray(1,stct)=lolp; D" ]) n+ D/ B$ b' d9 z
continue;
0 L4 v6 y/ c7 @$ @' E; ? else; z' t5 y+ l, q# e3 @: O, L
flag=0;& ?0 A( c/ s [
for k=1:length(state)3 K+ J( m/ H4 i: a: V( i
if lengthst==length(state(1,k).st);: ~. P& ]# o: @$ f2 v& Q. H5 w
if stvari==state(1,k).st
, a; ]: K5 B- B3 N state(1,k).num=state(1,k).num+1;
; w0 u( t2 A l" ^ flag=1;
' w8 _9 v* s( z: m/ e# R2 W break;
+ Q( @9 v8 r. U$ G: j. t3 [ end
; {8 ^4 U: q$ J end
2 ]# F% a) k/ y: C) a end
$ a4 i1 V" V N- \" k$ d8 L. x" \ if ~flag
6 I/ K: m/ Q+ a; T l state(1,numstate+1).st=stvari;
) d9 A* r6 ?' j: U state(1,numstate+1).num=1;
s: l) s2 i* Z; U v end
6 x9 P) W& T8 |( P9 L$ O& Z2 o2 R end0 @9 D f3 |" o3 J# [
if flag1 v9 \$ A) z* |1 w8 S" r* v
if state(1,k).cutload& L1 h, N# A/ t: Z. ?7 ?% i ~
sumcut=sumcut+state(1,k).cutload;
, y) G5 D7 j# B! J g sumsqcut=sumsqcut+state(1,k).cutload^2;' n/ k6 x8 Y. T6 Z: D, Z' s) h5 y
lolp=lolp+1/stct;% l* ^$ t2 c2 S; Q) h
edns=edns+state(1,k).cutload/stct;8 _2 s1 @' ]& k3 G2 q
vari=sumsqcut-2*sumcut*edns+stct*edns^2;- H9 W8 H! f- p; X s) O6 ~4 j2 {/ F4 ^
vari=vari/stct^2;( Y* Q2 A6 z8 t( z2 n, v
ednsarray(1,stct)=edns;
/ e% ?9 g1 p& V' y. B lolparray(1,stct)=lolp;
2 ]+ Y2 q0 E( q2 G& a- }. u' `7 ^ end+ G3 A- _! x1 `* Z- U/ H. y Q+ Q
vindex(1,stct)=sqrt(vari)/edns;
0 O' D F$ p! A. L% V/ e; ?! y continue;2 X, A% y/ C) h3 P V; P
end
1 o: F- g. L5 W1 u) y$ { clear stvari;
( s6 O, C$ i: _3 d9 u
7 G; T- G$ E$ z) g/ l5 w7 d ischange=0;/ Y( S( b, T7 Y: b- J1 H0 Q
sPgmax=Pgmax;2 _" \$ _6 r: H6 l* q/ D& C. A! l5 |
sbusPg=busPg;, ~( D2 F/ _0 {6 y
srefPg=refPg;1 c) s) v- @1 d2 \. W6 x
outbr=0;0 z; J8 `3 @! a* a3 ]
outgen=0;
; X, m& P# m5 ~. E& B9 } for lenct=1:length(state(1,length(state)).st)
6 g+ A" y2 K6 {3 B9 J/ X! X if state(1,length(state)).st(1,lenct)<39
6 g: r' n$ I& W. u9 p outbr=outbr+1;
; x" `9 t& A! A' D branch(state(1,length(state)).st(1,lenct),11)=0;
" F0 p: v0 W' ] memobr(1,outbr).loc=state(1,length(state)).st(1,lenct);
. B3 ?! F3 s. M6 C2 c9 N4 T memobr(1,outbr).b=lineB(state(1,length(state)).st(1,lenct),4);
$ G+ ~* w" ?1 ?& ], V lineB(state(1,length(state)).st(1,lenct),4)=0;
) I: O8 @2 |- R. k3 |/ g ischange=1;
7 j9 {5 E. T* @5 w) I7 `+ r clear B;) O3 J& K7 c4 H$ i/ `( I: G) X
4 l: h" d' d8 ]
else
' T4 I% h; @( a3 X+ k, t gavri=state(1,length(state)).st(1,lenct)-38;
3 u, x! y' y' R z5 }& Y* A, { gen(gavri,8)=0;# j+ G% {0 a$ ?" h. V
srefPg=srefPg-gen(gavri,2);; E( z7 Q; r- w* [
outgen=outgen+1;9 V! w6 X$ N# v( { n6 j5 _9 n
memogen(1,outgen)=gavri;, V* i( d" \5 C$ R# V+ E6 ~1 P
if gen(gavri,1)<13
0 R2 b4 c5 z* U: H' c) q sPgmax(1,gen(gavri,1))=sPgmax(1,gen(gavri,1))-gen(gavri,9);
5 c N8 N, ^- g( W sbusPg(gen(gavri,1),1)=sbusPg(gen(gavri,1),1)-gen(gavri,2);
& w. Z2 z- N% D1 f& ^ end
% L ?1 z3 H: P# f3 p$ }* w if gen(gavri,1)==130 S) a- ?& P; t- U0 \6 C- d
srefPg=-1;
, j. M$ N0 Z$ B( w s, f sPgmax(1,24)=Pgmax(1,24)-gen(gavri,9);, @+ r6 n, K! Y' L% H
end' b; w& U* d9 U, j- }, H
if gen(gavri,1)>13
) d4 N- R7 p+ b sPgmax(1,gen(gavri,1)-1)=sPgmax(1,gen(gavri,1)-1)-gen(gavri,9);
) Q) Z$ q8 m J sbusPg(gen(gavri,1)-1,1)=sbusPg(gen(gavri,1)-1,1)-gen(gavri,2);; d& D* @* K- S3 v; P0 e/ y+ `3 P- C& d
end- O2 l8 Q% u1 h0 ?* d
end
/ m; b/ J2 Z! d1 B" Z4 q% J end- t0 f: q2 J6 C3 {/ H. P
% if (stct==1)|ischange
% y. m# n# i0 Q! U q" C+ _% ? O1 H B = makeBdc(baseMVA, bus, branch);& ]* @1 ?- ]/ |8 h
subB=full(B);
+ A- Q+ W' c2 I9 a: P6 E subB(13,:=[];) O' ?4 `/ D' f* w' Q# H
subB(:,13)=[];
4 \9 ^9 x6 `1 u+ y W) i4 Q* j1 B swp=lineB*A*inv(subB);
* [6 ~8 D1 S" |1 u" c swp1=swp*Pload;
2 c5 K) O! c6 Y& v @ maxArray=Pmax+swp1;% }! {1 J$ K# T
minArray=swp1-Pmax;
7 M- v1 o; a& D p7 j7 x maxArray=[maxArray;-minArray];6 O2 Q6 [! |6 l! S/ `$ ^# @
lprA=swp*lpr;3 H: C1 h4 v7 F
lprA=[lprA;-lprA];3 ~, s* ]6 I* G, m5 L1 R* f) Y4 X t
clear minArray8 A U8 z) f9 z& x4 E" t
clear B$ ^7 v/ |! e, J5 J$ b7 c2 i7 u7 [
clear subB, K+ R+ r9 n8 A+ `; w& ?4 g' a
% end
; |, f5 J- T* D* A / G. F3 u7 f: x0 ^
state(1,length(state)).cutload=0.0;8 s; \# c3 J5 q3 x& [+ r9 Z) b
if srefPg>0
& i' D3 ]! n( v& D brflow=swp*(sbusPg-Pload);4 T" ^. X) L! K0 ]
cutload=0;
3 j* q! V, o8 F. v& n for ctbranch=1:38
0 Y/ s/ [1 N: q8 i/ O5 y0 e* K if abs(brflow(ctbranch,1))>branch(ctbranch,8)
4 m* ~8 T& R9 g: y9 R) } limA=[Pload',bus(13,3),sPgmax];. w5 e4 H2 ]: m# N' K! @/ _2 T
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);) M* C/ N0 J6 K5 @) O: N/ ]* q9 h
if cutload>1
+ a2 v% {5 o9 I. S0 a/ W9 e1 U0 O( F state(1,length(state)).cutload=cutload;
, `1 i3 J, {- D* ~$ z9 O, {* V end
2 [; E6 A, Q6 u( {. v- E break;( I" T! G3 ]3 ~5 j6 ]# M) G
end' R" U8 W& w1 Y5 r
end
' O* B. Q0 N$ U# J2 [2 } t) ^) j else
% v; @% a2 g( T7 X& L# m" E limA=[Pload',bus(13,3),sPgmax];+ M4 ]2 X% w6 W
[m,cutload]=linprog(goalA,lprA,maxArray,equ,sumload,limB,limA);
3 b& }2 ]! Y& j& { if cutload>17 q+ M* o0 K: R+ F: p
state(1,length(state)).cutload=cutload;
4 ~( L# [+ ]( u% a# i6 w end, y$ G* S% d5 E7 ]% L! @
end
7 z! o8 Z7 Y/ k; A g2 X if state(1,length(state)).cutload5 N2 o$ F- q4 y2 i; k
sumcut=sumcut+state(1,length(state)).cutload;
3 v* B2 K6 ~3 L. a sumsqcut=sumsqcut+state(1,length(state)).cutload^2;# O/ ~( M2 i1 X7 Q, J1 N
lolp=lolp+1/stct;
% n0 E0 j6 U. ] q3 E" q edns=edns+state(1,length(state)).cutload/stct;
# j% _! M8 z5 o8 g vari=sumsqcut-2*sumcut*edns+stct*edns^2;
! b& @# `* O1 n- Q vari=vari/stct^2;0 K( x2 ? ~6 E4 U7 L; j
ednsarray(1,stct)=edns; t0 i h* D* \, t" @8 U
lolparray(1,stct)=lolp;
& C0 \2 A! d9 y+ K+ [9 J end
& F+ v0 |7 i2 G" N) x n vindex(1,stct)=sqrt(vari)/edns;
+ o+ V, y% H' c, w1 u: A success = 1;! z! M8 R3 V! I
for i=1: outbr
7 k7 m% y0 r- a* }5 \; F branch(memobr(1,i).loc,11)=1;3 T2 e; A1 @( ~6 S/ `2 c
lineB(memobr(1,i).loc,4)=memobr(1,i).b;
1 P, i; z3 b$ R9 L6 i1 F7 \ end
1 O+ S% K" L! ^9 ~. {/ _+ c) A: r for i=1: outgen
1 U4 W3 ^# A" P# Y: ^) J gen(memogen(1,i),8)=1;
7 y& o& z4 a. E; t5 m; Q, f end- ?' Z" b5 m: C3 @
clear memobr;1 M. J( j. L& M7 b
clear memogen;
8 `( w' c' ^+ i, t$ {5 o# F% if (stct>10)&(vindex(1,stct)<0.017)2 ~7 f; A* V$ S o: D
% break
: M' d+ z$ G9 T" ]6 b6 z% end
% \& Q/ ?& h# \. k; H" X/ d' [end+ P0 g1 o9 _0 N# i9 C
layer=zeros(1,15);
2 ^/ V& \6 k3 F e% O1 d# V% efor i=1:length(state)5 @) q6 z( K) D% a, D! O
layer(1,length(state(1,i).st))=layer(1,length(state(1,i).st))+state(1,i).num*state(1,i).cutload/stct;
+ \/ U, r$ @6 g6 ^end
; |) a+ Q$ S2 t% [ ]6 g
8 Z. f. z0 i# N9 R, n; Ylolp5 g6 W9 ]$ ^) I# X% O0 g- c) n" ^
edns
3 s% ?& a4 T9 cdlmwrite('E:\study\edns1.txt', ednsarray);
5 B9 O+ t( d D8 X% Vdlmwrite('E:\study\lolp1.txt', lolparray);
8 s- R' _7 [ ?( A& M& Adlmwrite('E:\study\var1.txt', vindex);2 A0 F8 A: p- u1 B. q0 S
dlmwrite('E:\study\layer1.txt', layer);
+ [/ Y8 ]( H1 N1 J# q! |2 tplot(vindex);5 A; t7 f' ~+ y0 V8 j* o
hold on
0 e0 n' E! n0 P7 w7 Rplot(layer)
: S& |& T4 v; V/ V7 ^+ Rreturn;
9 J/ ]/ L9 f k! W: o- K4 V1 @+ b5 y
" g) H! V4 Q1 M6 F5 }
rudeMC.rar
(18.16 KB, 下载次数: 8, 售价: 2 点体力)
|
( ` G; V" p7 i! p8 z: t
* j9 @4 q4 s: _
0 ?; a! x; N$ L) ]/ m- e( C2 r! P- J( j$ P
|
zan
|