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