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