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