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