----------------------------- " L( g( b4 V3 E! b( N4 o Change history for MATPOWER9 m6 J1 j/ A, g+ `4 X7 G& O
-----------------------------2 I% q4 [/ L j. c
Version: 3.1b20 }0 s* S0 p) I2 M
maintained by Ray Zimmerman <rz10@cornell.edu> ' n& X2 b: }" e. q; cMATPOWER& Z8 g! @: H3 Z! B: E, i
$Id: CHANGES.txt,v 1.27 2006/09/14 18:20:40 ray Exp $ ! e$ r5 n- _6 [+ vCopyright (c) 1996-2006 by Power System Engineering Research Center (PSERC)5 |8 p+ {8 X8 w5 M. H8 z
See http://www.pserc.cornell.edu/matpower/ for more info. ( _9 a3 Z+ l! s ( L6 L) e/ K3 c0 Z: x. O, PChanges since 3.1b10 s1 T% ~! ?: G) L3 p7 k \
------------------- 3 o0 y _2 K; s8 p/ g+ c9/15/06 % [+ S; r/ a% o p D2 E - Released version 3.1b2.0 G, v2 R6 z. b3 h
9/12/06 : X+ W4 w4 L( s - Added makePDFT.m which builds the DC PTDF matrix for a specified , o8 u/ W+ X& u! t slack distribution. E6 @* [! H4 O) t) W& K4 c8/16/06 ( x7 Y+ K+ S/ s! K$ K1 ~& T - Added optional outputs xr, pimul to fmincopf and opf.m to make them 9 s& J, o& l9 C+ ^5 R* Z fully interchangeable with mopf.m. 9 Z) f% S1 Y7 G5 D! E8/15/06; _. B8 M: r# h" H/ Z( H
- Added branch angle difference constraints to general OPF formulation 5 [+ V) Q2 d/ g in fmincopf.m (and mopf.m). 8 s7 r8 A; c* A0 d6 c3 j - Fixed (invisible) bug with multipliers of lower bounded linear; [7 F3 v1 Z) x8 |7 R5 M4 f# Z* ^
constraints in fmincopf.m.3 Z0 J: _7 K% s" }' V: d
' U; m" [# |- u4 M( _
Changes since 3.0.0 " C" Q. f6 C6 n- i5 x5 ^-------------------6 T* H2 j! F- g5 t% }' Q
8/1/06( j6 W0 s) ]8 \. g$ V
- Released version 3.1b1. & R$ y1 t8 b- s" ?! R" {4/28/068 n$ a% w2 A O2 t) o8 q
- Fixed mpver.m so it will properly handle case where the Optimization& z5 y$ E$ E) M8 s1 L& y
Toolbox is not installed. + b* \' x/ B1 W( j& D3/15/065 V# }: O4 a2 F( T5 E, s5 o
- INCOMPATIBLE CHANGE: Updated opf.m, fmincopf.m, costfmin.m, consfmin.m to( e+ {$ D/ @! @6 {2 e. H, l( E
be able to be compatible with latest MINOPF. User supplied A matrix for 2 W( h9 h( k7 U6 \7 u general linear constraints no longer includes columns for y variables & m$ j, z. ~% w1 t3 L (helper vars for piecewise linear gen costs), and now requires columns7 B: W, [" V' a$ e' A; M6 m% j
for all x (OPF) variables. Added generalized cost model and generator PQ% X7 T1 E/ A4 v
capability curves.3 C- b6 E1 h$ |! ~, \
- Modified savecase.m to always save MAT files with -V6 under newer Matlab2 i2 a% I* U& K! u( D
versions. 1 b( m* ^& M6 X, u* ~- ~ - Added a number of tests to t_opf.m for MINOPF and fmincopf for generalized' s8 _" t9 h2 {% B8 h
costs and additional linear constraints. Added test for fmincopf for/ c4 P" C7 t* p8 k! L. a) Y
generator PQ capability curves.0 V& a4 b2 I/ m7 M% b) z$ e
3/10/06 ; u# q$ v1 {+ a$ ~* ~: ?+ { - Added baseKV data to case118.m from PSAP file " F ?! P6 X% Z6 N0 ^7 j3 S <http://www.ee.washington.edu/research/pstca/pf118/ieee118psp.txt>., L% J. z$ B8 g( S+ B1 M
3/8/06; g2 B ~; n( T& {
- Renamed col 5 of gencost from N to NCOST everywhere.: z5 p" Z5 j+ D$ \0 B1 D
10/14/05: K& p9 s; ^! ~& N+ p7 w" g0 ?7 b3 @
- Updated version 2 case file format to modify generator PQ capability7 m4 o7 q5 y9 |+ [
curve specifications. / S% N) v/ e9 E% G - Added hasPQcap.m and test for gen PQ capability curve in OPF.' K7 V4 W2 K) W) V8 W
8/22/05, R: d/ p! Y" D% w# g
- Added OPF_IGNORE_ANG_LIM option to mpoption.m.$ {. x: W' z, [, q2 e" ^
8/5/05% u2 a1 L; V3 h( ^0 |5 T' F2 c
- Modified identification of binding constraints in printpf.m. A' k' `2 A8 h* Y5 N
constraint is now considered to be binding if the tolerance is less, K9 B) u! M9 b, x5 }% V% f
than or equal to OPF_VIOLATION tolerance -OR- if the corresponding 8 k- f: P4 O# d- }0 p8 S3 h' @* D Kuhn-Tucker multiplier is non-zero. This allows binding generator5 v7 p9 a& M6 S8 \9 ?
capability curves to be reported via multipliers on Pg and Qg limits.$ D- s u7 i8 P1 A7 \
7/8/05 ) }+ I$ E$ o1 W+ ~( K - Updated loadcase.m, savecase.m, idx_bus.m, idx_gen.m, caseformat.m & O A6 D1 e3 n5 V# T and tests for version 2 case file format, which includes piece-wise 7 ]/ q% N7 [$ G# F1 W s) }8 u' L4 B linear generator capability curves, generator ramp rates and branch8 T1 `# f( G& M8 O7 i
angle difference limits./ b* b, u1 m/ `0 K& k
$ g% Z0 M' M" P" D. R, v
Changes since 3.0b4 3 R; t) R# l$ L- \-------------------! Y% L& H2 ]3 w4 l
2/14/05 & h5 S, H. x4 K - Released version 3.0.0. / N% {! s4 f" g# v! Y, b0 K3 f2/3/05/ k5 P, p; V: s) Y& t
- In mp_lp.m and mp_qp.m, on Windows it now makes sure BPMPD_MEX is not# _% @, W/ |+ A/ r8 P0 V
called in verbose mode which causes a Matlab crash.5 h1 X3 k5 Z L8 ~ X
* n$ F. |% H" E! ~8 W5 M; V* t" G
Changes since 3.0b3. f% |' ?; n2 j% B
------------------- $ n( h$ _/ u' ]6 a" f$ |1/28/05- d: r- o8 `0 f/ X; A
- Released version 3.0b4.! h: J D6 d8 J1 v! I# l1 d
1/27/05 % g" z- p3 d R - Added case6ww.m and case4gs.m.. j: Q& D5 g7 K5 \2 x
- Minor modifications to printpf.m to handle larger bus numbers. * ?+ m/ [( E* J$ C* R' R9 |/ p1/26/05 7 K% g8 e; N5 R/ c% g- Z' a - Minor changes to uopf.m to make sure it plays nicely with dispatchable* U: S# o. W: `9 M9 y1 p1 x% E
loads. . M: S7 B1 \+ ^; g1/25/05 l( Q9 h* j6 I- [8 t( N - Major updates to user manual. ) _9 G9 E( S/ ?. j" p2 K! ~9 x1/24/05 - i& R7 C. A9 t9 y: o - Switched to using the new isload() to check for dispatchable load.0 w& j+ J6 J% b3 J# a
- For dispatchable loads, switched from using PG and QG to PMIN and either* z: t, n) e- p& f* U+ y$ p5 f% i8 \
QMIN (for inductive loads) or QMAX (for capacitive loads) to define the * P1 q6 R: G7 c( r1 f constant power factor constraint. This prevents the power factor # H! a! i( h) \: n3 p) ~1 { Y information from being lost when it is dispatched to zero. If the initial + Z* N# U7 S: P! ^* C values of PG and QG are not consistent with the ratio defined by PMIN: [. j/ G/ H+ U4 A; U; Y5 }
and the appropriate Q limit it gives an error. This is to prevent a user + [! K, v+ E' R' G& @/ e: V from unknowingly using a case file which would have defined a different" ^$ R9 M4 s5 p% x) r' H
power factor constraint under previous versions of MATPOWER. 9 o2 d4 ` E" \0 u% [5 l: o If both QMIN and QMAX are zero, it no longer includes the redundant : I0 E+ t% |8 T% k* W' ?. p unity power factor constraint. ! O. Q3 h% [7 k! A ?3 e1/20/05! b, |4 `; z' _# @ D7 }
- Updated printpf.m to display dispatchable loads and generators + e$ f% k8 b& d, u separately. Reorganized the area summary section and corrected the net0 m7 k$ S" R2 I: @, h5 f( `
exports value (subtracted half of tie-line loss) to make the numbers - a5 w8 q# m |/ g( M add up correctly.' @* `9 f) \. x5 @. y+ j! i9 J8 b
1/18/05- E1 N# o5 K+ `1 o0 v, d' Z
- Added to runpf.m the ability to enforce generator reactive power limits" i. j6 f; a8 a6 q. O) L
by allowing the voltage to deviate from the set-point. This option is 4 a$ A, `5 E4 j controlled by the new ENFORCE_Q_LIMS option, which is off by default. 1 y! A- r/ @/ U) [+ p; ?+ f9 A9 B# W (Thanks to Mu Lin of Lincoln University, New Zealand $ H: R( g$ ^; l; f& Q" @+ t whose contributions inspired this feature).& ]( V- \: w" ~4 r. {- J& g
- Modified pfsoln.m to divide reactive power dispatch between multiple- t4 I4 q$ d3 p% q/ V
generators at a bus in proportion to each gen's reactive power range, 5 a# [! m2 N# D1 U, F5 S+ n as opposed to equally. This means that all generators at a bus will 4 ^; U0 B: E |3 C1 @ reach their upper (or lower) limits simultaneously.1 X+ A! O8 m1 M8 | R: y
- Added generator status column to generator section of printpf.m output. 3 [7 S+ N6 n0 j Fixed bugs where non-zero output of decommitted generators was displayed ) H) e& G/ V0 t. Q7 X and included in generation totals in generator and bus sections. ( K; X9 l, C- c2 y# b/ p7 r1/14/05/ `' v; Z! d# h3 G
- Moved some setting of MNS_* default options from opf.m to mopf.m." ]3 [; ~0 Q! Z+ S! Q. A ?
- Eliminated unused output args in dcopf.m. 3 {0 Q0 G7 s% J* q& A0 E, p - Modified printpf.m to zero out reactive generator output for DC cases7 b N: H. W& d- Y. i6 m% Y1 e! u
and to use OPF_VIOLATION tolerance to detect binding constraints, as $ {& ~9 i, y, }7 o: u% `+ w& M opposed to non-zero Kuhn-Tucker multipliers. & _) d, z/ u# [1/12/05 $ S+ `5 `( N2 { - Modified bpmpd portion of mp_qp.m and mp_lp.m to use default value for 5 l3 v0 U( w! K7 r$ w; ^- V9 Y TFEAS2 and eliminate variable limits which appear to be artificial' x4 w- M8 z& {0 g+ g& C5 u
large values used to indicate free variables. 2 }3 P! K8 d6 g8 p1/4/05* e% R4 X/ ?' _: ~
- Fixed potential bug in dimensions of Yf and Yt created in makeYbus.m. : `5 `/ {5 l- j6 f0 N12/17/04* J; t- B% J# m9 @. u
- Added feasibility check to mp_lp.m and mp_qp.m to work around a ; V1 w, n' m" o4 f2 s/ w4 H7 t! g recently discovered bug in BPMPD_MEX 2.21 where it sometimes returns an % o |" |/ k' {" x: m' Z" e# ]3 d* f incorrect (infeasible) solution for a DC OPF problem. This bug has yet ! ^5 H, R# | x$ _, j; s to be encountered in any other context.6 }8 q' I. X% b/ F- g
12/13/04. n5 z/ b6 Z' \ X
- Added mpver.m to print version information. & c' w0 j0 t: e' b9/23/044 N5 ~) [0 D. F+ a2 w8 `
- Fixed bugs in cdf2matp.m which prevented it from working at all& i: [6 J( [8 Y! |
when not specifying both input parameters and caused it to 1 s- d2 M( ^1 e0 V! O* u+ \" B sometimes not add the warnings at the end of the file.. a. ~- c( i# j
- Fixed typo in name of lower bound input argument in opf.m. Only- r4 L9 v6 G: Q* r3 j6 |
affected those calling opf directly with extra linear constraints. 3 X9 Y( _: C+ W) R$ X, m& r0 o! ]: x) k9 L- {* D- M
Changes since 3.0b2 ' v F* u& w9 p( E- Y------------------- # f6 Y* j t0 @4 A! z# D9 A5 {9/20/04 % _3 ], b3 A5 {2 o - Released version 3.0b3. 2 i- j6 f% w" a8 B' d - Generated clean versions of all included case files using latest& a# {9 q+ l- ^- e7 O2 K j
cdf2matp and savecase. Added documentation for source of data* d: I, @3 P6 Z4 g; M- l9 A5 Q& z
for case files. 5 J T# w5 R. w2 d T. j' n - More enhancements to cdf2matp.m. Adds comments at beginning, appends; K) ]/ w Q1 H7 \' I
conversion warnings as comments at end of file. Uses savecase.m to : b! ?" @8 s/ O+ d8 c save the data.( E" e4 m2 L0 `/ e, p8 u! S1 E
- Updated savecase.m to use %g instead of %f many places, correctly9 ^9 S ~; R5 q& Q+ B2 |
handle multi-line comments, include headers for extra columns for& r: R& `) a7 J3 v* v9 o
solved cases. Optionally returns filename with extension.0 g) L! J( R4 E/ f k w
9/17/04 . Z9 ]4 H8 v5 I& X - Fixed bug in grad_std.m, introduced in 3.0b2, which prevented constr " h! C: }: `" Y* B and LP-based OPF solvers from working for polynomial cost functions. : N2 C* \3 h" |$ y7 x9/15/048 R9 ~/ t9 p0 E( c
- In cdf2matp.m, added input args, updated docs, switched to named/ |2 x, q# A$ C I: y3 Y
indexing of data matrices, new method for creating gen costs.. ~" P) S( c' ]5 R, R
- Documentation fixes and additions from Pan Wei. + L) C. U+ k6 `/ U' D( i9 B2 L. G5 T, f ~
Changes since 3.0b1 ) T( e) }, d) N% S/ _+ V4 B3 U8 p$ q, N& y-------------------3 s- y' y; z5 P
9/7/04 $ f5 C! k1 |8 R$ j6 v5 N - Released version 3.0b2.- B- [2 P) S$ R! s; P# ]3 h
- Added OPF_P_LINE_LIM option to mpoptions to use active power 7 u; i9 T. u+ v# @7 t instead of apparent power for line limits (thanks to Pan Wei " p3 r! c% \' N. a$ p* Y( S for the suggestion and some code).) q4 k* ]' C5 o3 a) l9 a9 t
9/1/04 + @, D8 m, ]" x - Fixed bug in savecase.m introduced when making areas and gencost9 e, M* P6 ~3 R" d3 `( W+ C( _5 ?9 K
optional. 4 R z" f. M6 Q/ u& o$ `( y4 A - Updated opf_slvr.m with options for MINOS and fmincon. * v C8 F6 O* Z - Removed option 15 OPF_NEQ from docs (not a user option). Removed option% m6 K/ P, }' y/ Y3 w7 z
52 VAR_LOAD_PF (unused, always behaves as if this option were 1). L6 L& [! Q+ a! a% W
Changed semantics and default value for option 51 SPARSE_QP. By default* D E+ j2 h6 G/ ^0 h9 G
(value = 1) it will use sparse matrices if a sparse QP/LP solver is ' D5 V: s; i. I" {9 R available and full matrices otherwise. Setting the value to 05 j$ S5 f/ m0 I9 ?0 F- s5 g7 |
will force it to use full matrices even with a sparse-capable solver. O5 I2 E+ _" [* Z9 [ a* y - Cleaned up checking for optional functionality, and fixed a bug " T# B3 y+ [) }. b that would miss MEX files if there was an identically named directory ) e% I+ ]' K8 f; y3 { by adding have_fcn.m. b8 \+ D6 j2 _0 x* k+ ]1 G& l ?8 L
$ w L1 U) _, r' Z/ p# ~
Changes since 2.0 - J; l# m% O) p( W6 T----------------- ; @+ B& N; j5 x) O! d- h8/25/04% D1 O8 R4 ~2 i3 J s8 _
- Released version 3.0b1. & ]' ~' l* A) h) D8 a8/24/047 c0 C. U" y, B7 B
- Made mpoption() throw an error if passed an invalid option name. 3 V% H+ O7 a8 g4 p- u5 Z8 f# ]) K8/23/04 F1 l! q! |6 ?. c0 Z
- Added an fmincon based OPF solver for the generalized formulation6 `" D( Z6 B# i8 D" _1 `
previously used by mopf (Carlos).+ J$ f7 X$ I$ `, i+ ]
- Restructured opf.m so all OPF solvers have a similar API based 5 n6 K1 w8 e- k on the one from mopf.m (Carlos).( g" e# H" L, m5 j, z
- Added some quick tests for runpf and runopf for each algorithm. . b5 X# p2 n. c% y8/13/04 : v( O8 y j; R/ d4 }# J - Renamed 'area' variable to 'areas' to avoid masking the built-in 8 P# D6 f# j( W! ~ function of the same name. ^9 N' ?: s% D! k - Made OPF data matrices 'areas' and 'gencost' optional for running + P3 g/ v8 ]" q1 z! ^0 t, n simple power flow.' h$ L& M4 \$ t/ _0 ^
7/15/04. U" ]: G+ L# v9 R3 Z4 d2 x
- The loadcase function (and therefore all of the run* functions 3 f$ R) r2 |8 R7 F2 P' {9 [$ ~# m now optionally accept a struct with the data matrices as fields2 r: U& X( q- B. |1 q" V# e
in place of the case file name.$ i4 s2 F8 O1 I
- Added t subdirectory with various tests and testing tools.1 j( w. M7 d" i5 k
7/8/044 g* n' _0 }/ _3 m) b
- Updated mp_lp.m and mp_qp.m to try linprog() and quadprog() ' q+ r: e8 @. c. d. [ after trying bp, since lp() and qp() are no longer included$ E; D7 I" J: @2 G9 Z$ H
in the Optimization Toolbox as of version 3.5 d/ T; N Q# h0 p# O/ }* n" H; D5 S/ t
7/7/04$ N( H! |" ^' I( `! {5 |
- Removed case.m, added caseformat.m, made case9.m the default 0 _' H ~4 @) _, k% l( }. ^& [* ~ case and fixed function names in other case files to avoid * y4 G% ]9 r) L: I( K3 f* W3 [ use of reserved word 'case'. ! t) a+ N6 c- G' C - Fixed bugs in runcomp.m. 0 D( _7 Q3 f, H0 \* s+ `6/23/04 . ?( W2 P' ^/ |- B$ z- N* T - Fixed bug in newtonpf.m which caused algorithm to diverge when 8 T! v( V* W; S1 b7 ]' i the Newton step resulted in a negative voltage magnitude. + \, K p1 q( S8 r) d0 f4/17/03 8 c9 p2 R$ h9 b$ d& ~ d - Changed uopf.m to use a dynamic programming approach. More& @7 `7 [- D& t0 W0 K9 U
computationally expensive, but should find significanly better( m: l6 U. e5 H" A2 |3 G4 s6 g. }9 r" w
results when there are many gens to shut down.# d& A! {5 n! {) w" S
- Added mp_lp.m and mp_qp.m, equivalents to lp.m and qp.m,3 D; ?1 `) J* g9 _9 p) S( J, E2 _
respectively that call bpmpd if available. Modified LPrelax.m, 7 U* u) j+ |5 o0 P. k LPsetup.m and dcopf.m to call these new functions.* k6 E, @/ ]( v# ]
4/14/03: A6 J$ @4 M: s# Z/ v) X* v/ S2 T
- Fixed a bug in pfsoln.m which for cases with a single generator. 5 J: k0 c. R3 }$ `( }" }1 P) `6 X- C10/23/02 0 e" f' N0 L0 A0 ?3 W7 W - Fixed bus numbering bug in System Summary section of printpf.m.( Y( B7 K! V) [: j
6/20/001 K1 ]9 r7 C9 C3 N4 p2 r& S( ~
- Fixed a bug in printpf.m in the generator section, where$ E: v& z& E2 F$ P6 Y+ p/ T
the generator was assumed to be off if it's real power 4 y+ g h) i1 h* X1 I* j5 ~: f output was zero, even if the reactive output was non-zero.8 O0 Z7 ^7 ]4 [! h3 V+ Q1 q
- Modified printpf.m to print out lambdas in generation section8 c6 d' p5 @/ }4 G9 m2 K
for generators that are shut down.' {: B( X: B* }
6/8/00: a' R/ [1 [; n3 C# m
- Modified cdf2matp.m so that Pd also includes any generation at, S: e0 }6 E) x: ~
buses specified as PQ buses. Also modified identification of }/ j; L# J# T6 Z' m6 o2 Z$ }7 v
generator buses to include only PV or reference buses. (Thanks+ C2 w5 ^, C- o0 N. r
to Venkat)) {" a) k1 B- r
- Modified cdf2matp.m so that it always treats the input values ( Y' x; A& s3 H for Gs and Bs as per unit values and converts them to actual, @, G1 L7 N! A. ~, x+ u, C% U8 ?2 t
values expected by MATPOWER (Thanks to D. Devaraj) , k+ i$ y: D. W T2 t0 v+ Vversion 2.5b3' ^7 O% R/ x9 L
11/9/99) y6 [" D5 e. Z- f
9/22/99 1 l+ u0 R+ y: ]7 K) e - Modified grad_*.m to return sparse matrices, unless using + e0 K$ O$ L$ p& o: c% v constr.m or an LP/QP solver that doesn't handle sparse + `1 S8 R$ z# e8 S" e& `6 w' Q matrices. Cleaned up sparse<->full conversions in LPconstr.m, ( ]9 }1 w2 ?2 `' L" I* B9 ? LPrelax.m, and LPsetup.m. 9 ?/ @% V# [2 v9/21/99) H' V. L. c, {) T0 t; X5 f
- Undid a "bug fix" from 3/6/98 in makeYbus.m which zeros out 0 s" t: c' Q q. s9 {# M# e8 ]! { charging capacitance for transformers. Apparently some4 q9 m d1 O, G) ?0 \# w
transformer models actually have a non-zero charging parameter+ f+ _. b& ]" `1 R3 Y) H
when using the model used by MATPOWER (ideal transformer in( z' J; i/ V# c" \, s: L& g+ W
series with a PI model).1 X$ j$ }8 l% E% T& y4 [' t) @
- Added loadcase.m which loads a MATPOWER case from an M-file# e+ H4 w2 |4 y% ? ~& N' D/ i
or from a MAT-file. Changed all of the run*.m files to use this0 k, {9 U( ^6 W: ?( C& m
as the default way to load case files. $ O4 e& {+ P1 W - Renamed print2mp.m to savecase.m and added the ability to 9 j) r" M: j6 y* v" |1 ?. r; { save a case as a MAT-file as well as an M-file. / z# Z# F1 [4 r) l' y$ D( y9/15/99 ! S4 \1 z2 e; F! A4 q - Fixed opf.m so that it correctly uses the termination, f" K# H" M& m0 u4 g3 }+ T
tolerances in the MATPOWER options vector for constr.m.5 y, }1 g2 a7 ?8 ~( ]
- In previous versions, Pmin/Pmax constraints are relaxed by3 \2 s0 p! V( C8 U
10 * OPF_VIOLATION in opf.m to avoid falsely reporting a6 ?0 X' Q0 v4 g Z3 v4 B/ h
binding Pmin/Pmax constraint in a case where a piece-wise linear 9 o. c4 } f6 w4 i, c( D2 x cost function has a corner point exactly at the limit. This$ r" V. V% d; O2 K) |8 M+ v
code was moved out of opf.m (and the standard MATPOWER$ i" U" R/ u( X3 F/ }! P
distribution) to smartmkt.m and the value was changed to, D9 ?3 _2 ~" l2 W$ t/ e
100 * OPF_VIOLATION. 2 n& q: q: e9 @9 `8 J" D3 O+ Z% p - Modified opf.m so the MINOS-based solver uses OPF_VIOLATION / n6 f/ y0 o1 v2 \# C to set the value of MNS_FEASTOL and MNS_ROWTOL if they are( b9 c# d3 Z- G0 |3 t! P' F
set to zero. # I) b. q' _. z$ u$ [ V* q V9/9/99, M9 v- G1 w( |3 [5 t
- Included MINOS-based OPF with all of its options as# d) }" @* v9 ~: `' T
algorithm 500. (involved including 'area' in calls to opf.m- i4 U4 W& g# t- Z+ [ M
and uopf.m) 0 s) _) B N0 X7 l. C' R - Removed some unused lines from fun_ccv.m and grad_ccv.m. # n7 G( V$ A! P/ c8/5/99 + C: ~; u2 ?4 w) y( U: Q2 U - Fixed a bug in the pfsoln.m in the distribution of Q among# [& c% P; |; p; r
generators at the same bus. Initially attempted to distribute% d) I0 x& H/ u$ h3 t0 {
Q to generators proportional to each generators' Q "capacity".% @. O# H9 ?) l' T0 N
To do this correctly requires special cases for generators5 ]% h4 K% u( i2 q0 T
with QMIN equal to QMAX. For the sake of simplicity, we now: m& Q/ x' R7 ^, r6 p+ d% ~: C
distribute Q equally among all generators at the bus. # w9 a, M a. X N* Z Note: As before, the simple power flow does NO feasibility 3 n3 N- R3 B7 t; L checking." Q( P" D) O3 D/ D, q. D
7/19/99+ b/ p/ a3 c8 R8 L2 S5 Y( e# ^: M6 W
- Modified runuopf.m and uopf.m to handle DC opf. Added the1 r9 ^; C# i9 \* y7 L
function runduopf.m which calls runuopf.m with the PF_DC flag7 C$ r1 Q; p; f0 D x" Y
set to 1. $ q/ e; |) R0 t0 V - Fixed size of 2nd order (all zero) coefficient of objective" x# _/ p0 E% E6 ]) Y+ U j- G
for piecewise linear cost case in dcopf.m. ! |' [+ Q6 h7 r6 F6 K6 V! h* M7/16/993 l( q- d6 G' V
- Added the flag QP_SPARSE to mpoption.m to indicate whether the ( c1 k0 n$ g3 x3 {# K3 i QP solver being used can accept sparse matrices. Also modified" f( D7 Z- k9 T! ], D3 F
dcopf.m to use this flag. : _ H) g! K4 `6 t; s/ E/ `+ k - Fixed handling of VERBOSE option in dcopf.m 3 U. d1 E: h8 w; G* B - Added the flag PF_DC to mpoption.m to indicate whether the a( N7 T k1 I, @; H/ e$ J+ D, `* Z
power flow formulation to be used for power flow and optimal 1 d5 T2 u! D* g! Q' a4 c power flow is a DC approximation or full AC representation. - g8 x# w* B* {7 [ Merged rundcpf.m with runpf.m and rundcopf.m with runopf.m7 h) z. k! p+ G; W& f
so that the appropriate solver will be used based on the j7 p6 M9 l3 _2 J7 X, @7 J
value of the PF_DC flag in the options. The functions rundcpf.m 9 Z' m3 k7 q1 k1 X' G6 z y3 x: { and rundcopf.m were modified to simply call runpf.m and; t- N1 J9 d* \- d" z3 b
runopf.m, respectively, with the PF_DC flag set to 1.# S/ |3 K7 W5 _1 r" c8 P: b
7/15/99: X5 Q; w! o: {3 r. _# O
- Changed the sign of the phase shifters in printpf.m to be + i# R9 Y, b9 a; ` consistent with the bug fix to makeYbus.m made on 3/6/98.. a( M: i% z( w _! U
7/14/99/ O. X- X8 x+ |0 F G) M
- Included four new m-files (makeBdc.m, dcopf.m, rundcpf.m,' y4 ~# I8 K `
and rundcopf.m) which implement a DC power flow and DC3 a% I* c3 t- j5 j7 M' T
optimal power flow algorithms. # |0 R1 _/ V0 S: g- w7/13/996 A- Y3 U6 @2 a9 C7 d3 h) ]9 b9 {0 L
- Cleaned up variable names in makeYbus to avoid confusion.1 R% U) x3 `- R" c# P% v
6/10/99 2 e `& H5 P/ S0 e9 B$ D4 E - Changed UOFP to UOPF in print statements uopf.m.) s5 Z2 @9 M& |
6/3/99 & |* h7 S* V8 Y+ }" B - Modified print2mp.m overwrite instead of append to an% N4 t: h9 U" g' ~ }. \; S$ w
existing file. , R2 M: p6 G* b$ P: N; i3 G; v/ k - Fixed bug in cdf2matp.m to make it always correctly write 1 J+ d! J; O% `# @- D# H a text file output.* F1 K) L2 h. `3 ^2 t9 O! ]1 ^
version 2.5b26 O* P3 D6 @# g+ t( Y, Y
6/2/99# H1 [- r# O" q9 d1 o+ W
- Modified print2mp.m to include line flows and Lagrange ' @ k8 x ]8 m, ^9 A$ }+ C and Kuhn-Tucker multipliers in output if available. 6 T3 z7 Q4 M0 z- @8 x' J- z4/29/99 4 T9 J H$ D5 O+ A# T, { - Included a Gauss-Seidel power flow solver gausspf.m, and& W3 ~1 j5 o" v' u4 F, }" I
made corresponding changes to runpf.m and mpoption.m. W) K; Q6 f- ?) z) V
Code contributed by Alberto Borghetti.- G6 t. E" j" S0 x4 ]+ g
4/28/99. g9 p/ c0 F+ g9 y5 u# E1 S
- Modified newtonpf.m to handle cases with no PQ buses or no, i; N' c. w; J( F( `/ b$ d7 {: I% E
PV buses under newer versions of Matlab. , Q: ]' P' j, R. A/ Z5 \2/25/99' S5 _2 {: A& ]% ^/ ` s) h" g
- Fixed a bug in uopf.m which occurs when two (or more)( |. J/ M8 N2 l) O9 m
generators have positive decommitment indices but shutting0 |6 |4 R9 S; z4 p& ?8 _; h( p# z
them down one at a time always results in increased system7 x7 x: {7 e4 W+ S( Y9 _9 |% y5 c
cost. In this scenario, it would go into an infinite loop) B5 B- F" R* R8 v+ N) D3 c# P
of attempting to shut them down one by one./ I2 b X' b' f0 D4 g
2/24/99 ) A' p! r+ p4 I% N( l* G. W: G* C - Modified uopf.m to be able to handle the case where the/ V3 z' X7 c7 S% V3 W8 @
sum of the Pmin's is greater than the load. It shuts down t: u) I* p- o8 N( |- ]: v: m1 V5 J; [
generators in order of decreasing average cost at Pmin1 i% Z! |2 e; A5 X- p/ v
(breaking ties randomly) until this infeasibility is gone.+ q4 o# \2 h& v+ @0 e" l) z# y
2/16/99- f' L9 ~/ E( B! V% N3 Q
- Fixed bug in pfsoln.m which caused crashes in Matlab 5 " m+ p2 _( a# Y. f for systems with no capacitors.5 g+ J! _! I. S$ D3 O0 H( f% N
- Added print2mp.m, which can print out a MATPOWER case file. N! @$ q6 v4 d W) i4 l; b5 h6 [
from the data matrices.9 k6 h3 P6 a5 m4 P
- Added to run*pf.m ability to save solved case. 8 z2 P# C% z, E! T+ H2/10/996 o- P# l5 H+ \. I8 e
- Modified ext2int.m to allow for area matrix to be empty.' ]! M# C: n, |5 [+ w( [, B) ]
12/3/984 w( B- m+ j- X- {
- Changed pfsoln.m so that there is only one slack generator.* _1 y% l' o* r9 F# l
Instead of dividing the P between multiple gens at the ( }0 f1 b+ Y& e9 i& l slack bus in proportion to capacity (this caused problems : R) E; \* L% N. j. R' A2 Y# O for the LPconstr versions of the OPF), it now treats the 5 L7 G$ P3 K! m1 x: m2 d: E- V Y5 G, y first generator at the slack bus as the only slack generator, * v7 V9 H6 C. _+ j leaving the dispatch of the other gens at the bus unchanged. # D. {/ v5 S: K& v' l9 C - Added generator number to generation constraint printout and & x5 V1 x' \. k1 g6 f branch number to branch data and branch flow limit printouts. : ~* h+ L' m4 X: B12/2/98% x+ g9 e: _) \' p
- Changed printpf.m to print elapsed time and objective fcn 3 o% T7 L, l2 S; M4 }" C7 c3 X value even when OUT_SYS_SUM is turned off. ' `- E& x! \/ Z( ?( ~ W* ~ - Added code to LPconstr.m to explicitly zero out lambdas for ' V6 B1 v6 C; H- f6 t) o: r non-binding constraints.) } E- B1 u) r/ T2 f- k7 p( K
12/1/98 * g* H7 b' U. o" M7 i. s) P - Made modifications to ... : Q6 G% T7 e N* A bustypes.m3 t( i! i8 `, t+ q% ?% f
fun_ccv.m * e/ u$ d8 E0 h* ] fun_std.m& L+ `$ x8 A; J# L
grad_ccv.m* e8 H1 a) x! Y# r# v! x
grad_std.m {" m2 q5 v5 V0 D* o* y+ O
LPeqslvr.m' j& |3 g* x8 l2 Z# b/ ]
makeSbus.m* v9 O# e% }2 D* {
opf.m 3 r" P. S. Z( s/ x8 q opfsoln.m - ?9 n$ e5 C/ Y; ^6 r @ pfsoln.m3 K' I# t0 U8 Y# g! k
printpf.m 5 Z& y( Z1 U- s" U- A8 n; Q runpf.m! x0 L% p! y7 k
... to allow for multiple generators at each bus. For simple 5 C! u# `: c7 s2 Q0 o, u power flow, the Q dispatch is divided between multiple gens* r$ m7 T2 W* Z: v- z# i1 N5 e6 t* p- K
at a bus in proportion to each gen's Q capacity. Likewise 0 q( e9 M# B. `# G6 D2 ^$ X3 q with P for multiple gens at the slack bus. ( Z( I$ B6 Z( F10/29/98. F5 J% U. n+ d/ R/ P" }" s' a
- Fixed bug in uopf.m which caused it to crash when attempting) \3 i" e% j0 w0 n2 p. u
to restart a generator after more than 2 had been shut down. . M" f. O* |8 W. W$ ]. a( k10/19/98# F% y+ F* q1 k& a% J, a0 o
- Generalized definition of GEN_STATUS column of gen matrix. w h: X4 L: H! Y. {. p# i: b: C
to allow for distinctions in the status of out-of-service 6 w4 F/ ~7 u: d M5 A generators. The default values of 0 => out-of-service and # G. O G( ]+ W+ m6 z4 B( } 1 => in-service still work, but the logic has been changed ( i9 {. @+ B4 J7 o; l so that GEN_STATUS > 0 is now in-service and * P. d0 ]" V. l GEN_STATUS <= 0 is now out-of-service, as opposed to; q* ]* n4 g+ t9 K
GEN_STATUS ~= 0 and GEN_STATUS == 0, respectively, which % D# Q8 B7 B: x5 ]# U. b' K! V was used previously. This allows for a GEN_STATUS of -1,& K" }% \. e+ @* e% O
for example, to indicate a generator which is off-line& K$ ]' c- w" Z N
but could be brought on in case of an emergency.. L' b) d! u2 A( ^! |0 C3 j
9/2/98 * J9 s* b% f9 k4 V - Fixed bug in printpf.m which caused area exports to be' _ y9 z% ]# A* [' c7 z
off slightly.0 N. o& p3 v9 ]& b$ S1 b
9/1/98' s6 S; v: ^# _' T
- Fixed bug in printpf.m. Total intertie flow was double the& z7 |( y# Q5 ?9 J
correct value. p' l" _ Q# m5 @! B4 \- L$ P
8/31/98 & a/ n7 o; i. d# ]) M0 G/ p - Fixed bug which included line flow limits for out-of-service / U; H8 I, j1 b' M lines in OPF. ) m; u/ [/ ~# h$ E" s4 Q - Modified pfsoln.m, opfsoln.m, printpf.m to zero out flow on6 h) p3 {& ]5 k, ~5 |5 Y) f* y
lines which are out-of-service (found by Ramazan Caglar).8 a1 L3 E+ V* ?% h
7/28/98 5 b' \2 U+ Q1 V" Q - Changed VAR and MVAR to VAr and MVAr everywhere in output. ! Y( h, K& v# x( y" O4 j5 X" m* g3/13/98 - L% Q6 c) }7 Z' t6 b/ v - Decreased the default value of LPC_TOL_X option to increase# A1 k, }8 A/ k& I; \# G$ _
solution quality. 8 p4 q: Q l' V4 R - Modified fix of 2/10/98 to use a value based on the value of; {( \# x/ Z: B/ d
the OPF_VIOLATION option.+ ~8 D- [) z9 L( s5 M2 Q
3/6/98 0 \/ }2 B/ r D5 l& \ - Fixed 2 bugs in makeYbus.m. Phase shifters now shift the phase the # J3 ~& B5 S9 @ Q- Q+ }( X' u# I right direction, the line charging susceptance parameter is now 2 u2 J5 g% B% l& z! n correctly ignored for transformer and phase shifters. . Z; U4 ^6 H% b; V( X2 G! R3/3/98! G. i. ?: Z* h2 S& R# V
- Fixed a bug fun_std.m which caused it to always compute 2nd order- ^8 d6 O4 X6 Q. a! G- D! T% [
derivatives. Now it only computes them when requested.2 E" F4 K, y+ @2 ?/ ~" T9 u
2/10/98 / X" L* R' c2 u3 P% c - In previous versions, Pmin/Pmax constraints are relaxed by 1.0e-69 l! |. Z, R. @7 P0 J
in opf.m to avoid falsely reporting a binding Pmin/Pmax constraint 5 c' l* ]7 \2 b9 T) Z in a case where a piece-wise linear cost function has a corner0 G2 k3 k+ x. l- I- I% J3 Y
point exactly at the limit. Changed the amount of relaxation to 0 [1 K7 e- D. e" Y3 V# Q G7 b5 J 1.0e-4 since the problem still occurred at times.$ m3 Z! j3 N2 x* }( e$ V
1/29/98 4 a) J. w) J1 U4 K: Q- h - Changed the value of LPC_MAX_IT from 1000 to 400 to allow for/ u y3 W4 Q1 o' v2 g! L
earlier detection of infeasible OPF.) m p/ G) B1 Z! X! b$ w
Changes since 1.0.1 7 w! S7 s: N- B0 o, V- v/ b------------------- ! o# @ z$ I* ~; K12/24/97/ M. M; F0 G; }3 P
- Released version 2.0. / ]$ x# w7 Y/ |4 R12/19/97 : j' H. A; ?3 F - Fixed ambiguity in case file data and comments regarding lines ; N) B/ y" V3 J6 K b vs. transformers. Now a tap ratio of zero means that it's a line5 i- v c& t& U5 F+ ?
and a non-zero tap ratio means that it's a transformer. " y4 [5 `2 ?1 W4 Z/ F: P - Optimized formation of Ybus (and hence B matrices).- a6 D1 O: d6 l. G& J' |0 q
12/18/97/ F8 `. a1 l$ h
- Implemented fast decoupled load flow.8 T' u* f/ H4 l3 K0 r
12/17/97 , Z, J. d7 S2 Z5 v { - Optimized formation of Jacobian matrix in newtonpf.m (significant : v4 Z; V' l; C) R improvement for large systems under Matlab 5).3 `, X4 Y8 a: J' C+ M; E' H h
* K# {+ j( K I* O+ j; E12/16/97 : b5 N# o( C2 _, F. F! k; A' B* V - Fixed another bug in calculation of losses. Previous versions) c/ b0 m6 N8 ^8 j* a9 G% Z4 b' o9 r
did not take into account off-nominal taps for transformers.( I( [7 _7 G# `8 x/ j) |# n
- Fixed a bug in calculation of losses. Previous versions + A% s( t0 V! W2 K ^: U: S4 T( a included line charging injection in reactive line losses. . X3 c: c& n. ]( ~3 g - Added ability to optionally return solution data from ! L+ d* V( ?8 O1 Y run*.m functions. 1 E1 D$ T% i: P) H" W8 b) Z! o2 S - Added ability to optionally print results to a file. 7 J5 X% o) G( f: N- U1 _/ s - Added system and area summaries to printpf and modified to+ b) |1 k* O+ R* ~
handle the new printing options.% E5 D. ?# M" A% L$ N. b
12/12/97 , Q5 ~8 ~% [- {5 ]3 w; { - Consolidated printing into printpf.m, eliminated printopf.m.& a7 G' x( v' E7 a& e
- Removed QCCV method (standard formulation solves same problem, % L; B! u, r r q/ r) Q! W but more efficiently).2 ~/ {. C) A% L
- Removed OPF algorithms which use fixed generator voltages 2 {2 G" j/ B) u (this can still be done by changing voltage limits in the $ o. {! P) T( b5 h" ` case file), renumbered OPF algorithms, removed CCV.m and0 l# w3 d) G6 \/ s
varVg.m. # X# x3 x9 z2 d n3 ]; Q$ U' W12/11/97 . l P8 L+ `" S1 d% d% F/ j% m - Added 2 more levels of control of verbose output.: ^8 z3 d5 U' N
- Put all MATPOWER options into an options vector defined in1 {: n& [5 c* S3 A3 [) r
mpoption.m. 9 \; N# q8 q8 q9 i+ }12/10/97 ^( k! ?! t$ V2 W2 C# _ - Incorporated new LP-based OPF routines and updated alg codes.# w! C6 n7 F7 w, T6 g2 h% |
- Fixed a bug in the documentation in the case files regarding / u: g# a+ d$ A! E1 y the 4th column of gencost. For piece-wise linear cost functions ]% ~" o1 f. N8 P' c( p
this value is the number of data points, not the number of, u/ G+ t1 L: w4 c0 t
parameters (x and y for each point).3 I% v6 D' V( g) n$ W
- Removed some m-files that are not used (usesOT.m, usesLP.m).1 P8 |2 O7 E9 `! M0 z5 d i- M% v
- Renamed some m-files (OTfungra.m to fg_names.m, OTSfun.m to 7 ]8 L' E1 n, K( M6 a* g3 } fun_std.m, OTgra.m to grad_std.m, OTCCVfun.m to fun_ccv.m,) a& Z( G6 v! H% v& G* K
OTCCVgra.m to grad_ccv.m). " d2 F+ V2 G6 Z% f6 y$ E12/8/97' F' x. V: E$ Q7 g i1 V6 i
- Rewrote uopf.m to use a smarter decommitment strategy (see the 2 v* f" s0 u& x6 M a7 k7 Y docs for the details of the new method). Removed ref, pv, pq; L! a. ]9 O2 Y& i& _" i! t
from the list of parameters passed in, since they were not used.5 v+ z% ?; y0 c: {! P
11/19/973 @( n" m. n3 Y6 j) _+ h1 e8 }( }
- Fixed a bug in previous versions of uopf.m which returned , ?; U& V1 e8 q( \; f+ x. m7 C3 G incorrect values for Pmin. / _" W }; e" ~3 s$ i1 P10/28/97. a5 J" G8 F& @0 b# z
- Increased maximum number of iterations for constr-based OPF. ! m: E9 M0 w. |; z" z10/24/97, C6 E3 _- M$ o2 f7 t
- Fixed a bug in previous versions which may result in incorrectly ^! B Y/ J" k: J: y# c; C reporting Pmin or Pmax limits to be binding, possibly with large. P# s* X. n& F2 o, |% f
multipliers, if the piece-wise linear cost function has a corner : A+ V0 c4 ^0 O! M point exactly at Pmin or Pmax. ; v' i2 n/ Z- J6 L. Y8 e, v10/22/97. X# b# Q) O! i) S
- Added to OTSgra.m (renamed to grad_std.m in 2.0) the ability8 }7 F, U! d' D1 I8 X$ }1 P! X
to return the second derivatives of the objective function. ; D9 A4 T/ C: d( ?2 b' Q9/24/97 - {; h& I0 Y4 c - Fixed a bug in previous versions of runuopf.m which prevented it 9 O+ B; _6 O9 P% l% Z; V from printing out the raw data needed for our Perl DB interface. - S5 t* J- x9 s9/23/97 ' C# ]# T6 [, h' S6 f5 |, b: X - Fixed a bug in 1.1b1 in OTCCVgra.m (renamed to grad_ccv.m in 2.0) # P: `! A& ?! |: \/ y& R' X% X/ A! c which caused printing of warning message "Concatenation involves i e% }+ N5 ]' \3 v( N& ? an incommensurate empty array" under Matlab 5.5 S' R9 _' V' E( r. R, B$ {4 C& \ `, ^
9/22/97 3 L W( f" c, M - Fixed a bug in 1.1b1 which prevented runuopf.m from running at all. 5 c# v5 C8 A/ }$ {3 Z Wrong number of parameters to call opf.m.! n3 J9 u! N" Z- R
9/20/972 M9 @" m' X4 X1 K* B$ T% M
- Released version 1.1b1. 5 g, H* K, O b9/19/97' P4 J6 x* R7 q3 r5 H2 s% N( E, X" y
- Modified the formulation of the OT-based OPF. The objective" B0 k5 i! i% C9 U( Q
function may now include costs for reactive power as well as5 y8 m. a m% i
active power. In previous versions the reactive power variables( m+ Q6 g/ A% f$ A S! ?& g
and reactive power balance equations for generator buses were , D! p n( r) J5 ^- ^ not included explicitly in the optimization as variables and * l" a6 O! w, u" P! M0 H* U equality constraints. Generator reactive powers were computed0 Z0 D. i* M+ d9 v9 y
directly. Now they are included explicitly in the optimization. * E f8 p$ [1 Z! h$ G Costs for Qg are specified in extra rows int gencost. ; Q4 \0 C; g0 r# X( U8 x# s' \! {1 B
Changes since 1.00 r8 m* u! p+ c
----------------- ; ?" ^% I' [. Q* f) q1 q% r9/20/97( a) i/ H- J$ f. X2 Q
- Released version 1.0.1.* n: h- j5 ^7 t% j K. r) g
9/19/97 3 `6 s. `3 ^# U0 C0 A3 r - Fixed a bug in 1.0 OTSgra.m and OTCCVgra.m (renamed to. D* e9 Z2 ^: |/ ]
grad_std and grad_ccv.m, respectively, in 2.0).m which used$ _8 F+ |0 t: r- {: V2 g; d
incorrect coefficients to compute cost if specified as $ i$ n2 W3 g% L# I. k polynomials of different degrees.: j7 T/ }/ E( u1 i7 H9 Z# `
9/18/97; D4 d; n% N1 B9 d6 c
- Fixed a bug in 1.0 in OTopf.m which caused the last equality" c- Z% \/ k0 N5 [5 S
constraint (Q mismatch for last pq bus) to be treated as an 7 D8 W3 i2 H0 `5 I( E" Q5 G inequality constraint. It appears that this constraint was " }9 r) t1 T; h+ N+ \ normally binding (unless Qd was negative) in which case the + D0 J) C6 S# R5 b. k$ v solution was still correct. ; |: O* q; y* J, }& m5 E, f9 m. Y - Fixed a bug in 1.0 in runpf.m, initial voltage for generators 2 p3 ]2 S) f- t8 _8 I1 C2 V7 V which were shut down were taken from gen(:, VG) rather ) ]) g$ w& ?; ^5 `1 N than bus(:, VM).# R6 ~% h1 E4 T1 |4 B! K8 y
- Fixed a bug in 1.0 in varVg.m which caused Kuhn-Tucker 9 U2 h: X6 n. {) n multipliers to print out in the wrong place for LP-based OPF.6 P+ _0 c% O5 T" b# b9 n
) c) G5 r6 [ P$ z+ hChanges since 6/25/97 Version & O. M8 {2 i( d4 e-----------------------------" x8 \ }0 V$ f* B9 f+ u' z `. B
9/17/97 ; Q( {) j6 t0 Y' G* K* P8 L - Released version 1.0 (first widely publicized release).: {9 s; V" h( N, O( T
- added placeholders for LP-solvers that we can't re-distribute; _, K7 s* b- a
- updated documentation* J, k. ~) w6 B3 J9 O; M
9/12/97+ a: @0 _8 o* I) ?
- added ability to do pretty & ugly printing at the same time: a. z* M) Y Q
also documented that ugly printing is for talking to our, p/ U) m& L7 ]( t
our Perl database interface code% X+ N+ n |. L- c: ]
- included Deqiang (David) Gan's LP IEEE -> matpower data- J0 `( H" k; G2 g
conversion code( i }- t6 s' C Y. |' F) W1 W
- included Deqiang (David) Gan's LP based opf code 5 ^0 v# z5 w. Y8 G! i( \& j - fixed LAM_Q bug, now computes correctly for generator buses / z* j; G4 n0 m3 @9 m! I$ p - fixed some bugs in totcost.m9 c6 f7 \! Z: D& ]5 a% [
9/9/97 ^ r4 p! [7 }5 |: ? - removed PRICE from idx_gen2 B8 Q( \0 X5 t
9/4/97. H+ |) E9 w* k+ y7 }. j# \/ Z
- added code to convert from (possibly non-consecutive) external: ]7 ]/ w* Z4 f7 A, A
bus numbering to consecutive internal bus numbering before + t' @3 n) }. M! X solving, and back to external before printing results" L, \/ E1 n" w9 m5 j; \, G
- replaced test*pf with run*pf which are now functions . ]6 {+ `6 f0 ^% j taking the casefile name as a parameter (among other params) . s3 B; a7 R( \+ x - made changes necessary to handle new format of case file , _$ i9 ^: R o G) k" B (generator costs moved to gencost variable) " z% O5 J5 N: _/ P * F1 _7 s: j8 r/ H% k9 Y* W! AChanges since I started keeping track. k7 z! G4 p& i# w1 f' ~
------------------------------------- 8 l/ N2 B5 D, F6/25/97% Y6 ]( d% r+ P8 F3 P
- made first public release (not widely publicized) Q) C; t, u4 U' O! x& g; X \! N - documentation updates% P0 } J; n; b" K S1 _3 \# r/ o5 v
- changed names of m-files to fit DOS 8.3 limitation 1 B1 k+ ]' v3 } _1 }/ a buildsbus.m => makeSbus.m ; E- y1 S- j2 Y& p/ a; g buildybus.m => makeYbus.m/ M, d6 p R/ s) K0 q& n2 t7 h
idx_branch.m => idx_brch.m ; M1 i$ D3 M% M( `/ j+ a1 y dSbranch_dV.m => dSbr_dV.m , V! u) E6 [ r+ {1 n: _! t" L dAbranch_dV.m => dAbr_dV.m ) X/ i) D* ~/ X& t! q- j! | ucopfsoln.m => uopfsoln.m, @5 N8 Y! K8 M; c% Y
testucopf.m => testuopf.m 1 |) {7 W7 M9 b9 J. y# k1 t2 ] ucopf.m => uopf.m (for naming consistency)9 K/ G- F( i- D* Q& j: B
- changed copyright notice , w. M( D! @5 R% v2 ]% c0 @6/18/97 ! ]; o% r5 C" j9 V: Q4 _7 O3 a" ~ - modified ucopf.m to allow a generator to be turned back on if- q& O8 D7 i" l3 p. {; k) n
shutting it off results in an infeasible (or at least 5 K3 m/ @$ r! k0 Y, b6 N% A3 z7 M non-convergent) OPF, also changed the order of shutting down D. t$ \6 q/ U! n' R7 _
generators which are dispatched at zero, now chooses one with ) p5 h, o. o+ t h5 e& c7 ?7 m8 W largest mu_Pmin q. y9 C! Y( x+ p+ O. `; w
6/12/97: o1 ]# x& Y) W+ M2 k+ x
- fixed bug in printpf.m so it doesn't print PG & QG for gens that / e4 C7 }! R- Q4 r) J have been shut down3 U# ~) j) @& |; |4 Q( u: \
- fixed bug in pfsoln.m to correctly compute the reference bus power. L, X* T y) ]
injection when generators have been shut down# m h4 N1 q8 E0 w9 n
6/10/97 7 O( ]+ B1 L, D' \& U: J - fixed Vg initialization bug in testpf.m (not just testopf, etc) 4 @, i6 E6 q X' A! A6/9/97% L- Y( k" E. s4 P
- fixed bug in PLCCV versions which set the initial values of the# o: e- j9 {. p8 ~( A2 E
cost variables wrong (used p.u. Pg instead of actual)3 ] Y7 v; L8 p) |3 a2 Y
- made opfsoln.m copy generator voltages back to gen(:, VG) , H2 W J Q* t% ?, D/ ~ - fixed bug in code which initializes generator voltages, it was$ l/ F/ K( \) O6 y/ r8 a6 j
always setting the angle to zero, now it uses the value from the4 W |# b. z7 ?
case file - j4 q; Y$ p2 ^" n+ t6/3/97 # F+ h( h6 E$ o& y( f, s2 I - included opf variations which use cost variables constrained 0 v/ g) t, u# y9 A" J, Y, U. ] by a piece-wise linear cost function (PLCCV = piece-wise linearly' j& w+ o; c# I+ Y& o
constrained cost variables)6 X9 d$ B1 C% B- ^
6/2/97 + o5 d0 y, h( U0 f - included opf variations which use cost variables constrained 1 q. T7 e3 ~/ F by a quadratic cost function (QCCV = quadratically constrained8 A& V6 X u/ _. t7 N
cost variables)" o$ {" p# `( Q7 f" [4 H7 r
- included opf variation which allows generator voltage ' O% R/ L \+ I+ }* f8 `' m! } magnitudes to vary 7 K. ^4 t5 L1 o( ~! J - fixed line in test*pf.m scripts which initializes V0 (I'd missed/ [* Y2 s+ B; R$ ?
the sqrt(-1) before* H) ?# l+ X' g/ D
4/16/97 " {. G" t1 W: \; G - changed line 59 of ucopf.m from "return" to "break" to ensure 6 G% L0 J9 X: Y% |6 g/ ^# g' I return values are correct6 |: L# n4 L7 i1 q8 F( v# e+ T
4/14/97 $ g2 L9 k0 u1 k8 K+ |* b - added some print statements to ucopf.m ' f g$ n9 X: b% `7 A+ s4/12/97" l7 Z3 F0 _; ]
- reduced max iterations to 100 for constr in opf.m! E9 a9 \* Z' A, P2 Y) I- ^* c- H
4/8/97. l# s# U; Y' Y/ k* i
- modified opf.m, ucopf.m, testopf.m, testucopf.m to include / ^; H7 }' k( o) o- z( g2 k "success", a variable which indicates whether opf was solved ( ]# f+ q; ~! ]% Z ?" j" A successfully or not 0 k) w) }0 W2 Q1 k4/7/97 / O4 ~, N1 k& ~( a; ~ - fixed bug in ucopf.m, assumed all generators are initially + G* h \$ N8 P- m available