-----------------------------
 Change history for MATPOWER
-----------------------------

Version:    3.1b2

maintained by Ray Zimmerman <rz10@cornell.edu>

MATPOWER
$Id: CHANGES.txt,v 1.27 2006/09/14 18:20:40 ray Exp $
Copyright (c) 1996-2006 by Power System Engineering Research Center (PSERC)
See http://www.pserc.cornell.edu/matpower/ for more info.


Changes since 3.1b1
-------------------

9/15/06
    - Released version 3.1b2.

9/12/06
    - Added makePDFT.m which builds the DC PTDF matrix for a specified
      slack distribution.

8/16/06
    - Added optional outputs xr, pimul to fmincopf and opf.m to make them
      fully interchangeable with mopf.m.

8/15/06
    - Added branch angle difference constraints to general OPF formulation
      in fmincopf.m (and mopf.m).
    - Fixed (invisible) bug with multipliers of lower bounded linear
      constraints in fmincopf.m.


Changes since 3.0.0
-------------------

8/1/06
    - Released version 3.1b1.

4/28/06
    - Fixed mpver.m so it will properly handle case where the Optimization
      Toolbox is not installed.

3/15/06
    - INCOMPATIBLE CHANGE: Updated opf.m, fmincopf.m, costfmin.m, consfmin.m to
      be able to be compatible with latest MINOPF. User supplied A matrix for
      general linear constraints no longer includes columns for y variables
      (helper vars for piecewise linear gen costs), and now requires columns
      for all x (OPF) variables. Added generalized cost model and generator PQ
      capability curves.
    - Modified savecase.m to always save MAT files with -V6 under newer Matlab
      versions.
    - Added a number of tests to t_opf.m for MINOPF and fmincopf for generalized
      costs and additional linear constraints. Added test for fmincopf for
      generator PQ capability curves.

3/10/06
    - Added baseKV data to case118.m from PSAP file 
      <http://www.ee.washington.edu/research/pstca/pf118/ieee118psp.txt>.

3/8/06
   - Renamed col 5 of gencost from N to NCOST everywhere.

10/14/05
    - Updated version 2 case file format to modify generator PQ capability
      curve specifications.
    - Added hasPQcap.m and test for gen PQ capability curve in OPF.

8/22/05
    - Added OPF_IGNORE_ANG_LIM option to mpoption.m.

8/5/05
    - Modified identification of binding constraints in printpf.m. A
      constraint is now considered to be binding if the tolerance is less
      than or equal to OPF_VIOLATION tolerance -OR- if the corresponding
      Kuhn-Tucker multiplier is non-zero. This allows binding generator
      capability curves to be reported via multipliers on Pg and Qg limits.

7/8/05
    - Updated loadcase.m, savecase.m, idx_bus.m, idx_gen.m, caseformat.m
      and tests for version 2 case file format, which includes piece-wise
      linear generator capability curves, generator ramp rates and branch
      angle difference limits.
    

Changes since 3.0b4
-------------------

2/14/05
    - Released version 3.0.0.

2/3/05
    - In mp_lp.m and mp_qp.m, on Windows it now makes sure BPMPD_MEX is not
      called in verbose mode which causes a Matlab crash.


Changes since 3.0b3
-------------------

1/28/05
    - Released version 3.0b4.

1/27/05
    - Added case6ww.m and case4gs.m.
    - Minor modifications to printpf.m to handle larger bus numbers.

1/26/05
    - Minor changes to uopf.m to make sure it plays nicely with dispatchable
      loads.

1/25/05
    - Major updates to user manual.

1/24/05
    - Switched to using the new isload() to check for dispatchable load.
    - For dispatchable loads, switched from using PG and QG to PMIN and either
      QMIN (for inductive loads) or QMAX (for capacitive loads) to define the
      constant power factor constraint. This prevents the power factor
      information from being lost when it is dispatched to zero. If the initial
      values of PG and QG are not consistent with the ratio defined by PMIN
      and the appropriate Q limit it gives an error. This is to prevent a user
      from unknowingly using a case file which would have defined a different
      power factor constraint under previous versions of MATPOWER.
      If both QMIN and QMAX are zero, it no longer includes the redundant
      unity power factor constraint.

1/20/05
    - Updated printpf.m to display dispatchable loads and generators
      separately. Reorganized the area summary section and corrected the net
      exports value (subtracted half of tie-line loss) to make the numbers
      add up correctly.

1/18/05
    - Added to runpf.m the ability to enforce generator reactive power limits
      by allowing the voltage to deviate from the set-point. This option is
      controlled by the new ENFORCE_Q_LIMS option, which is off by default.
          (Thanks to Mu Lin of Lincoln University, New Zealand
           whose contributions inspired this feature).
    - Modified pfsoln.m to divide reactive power dispatch between multiple
      generators at a bus in proportion to each gen's reactive power range,
      as opposed to equally. This means that all generators at a bus will
      reach their upper (or lower) limits simultaneously.
    - Added generator status column to generator section of printpf.m output.
      Fixed bugs where non-zero output of decommitted generators was displayed
      and included in generation totals in generator and bus sections.

1/14/05
    - Moved some setting of MNS_* default options from opf.m to mopf.m.
    - Eliminated unused output args in dcopf.m.
    - Modified printpf.m to zero out reactive generator output for DC cases
      and to use OPF_VIOLATION tolerance to detect binding constraints, as
      opposed to non-zero Kuhn-Tucker multipliers.

1/12/05
    - Modified bpmpd portion of mp_qp.m and mp_lp.m to use default value for
      TFEAS2 and eliminate variable limits which appear to be artificial
      large values used to indicate free variables.

1/4/05
    - Fixed potential bug in dimensions of Yf and Yt created in makeYbus.m.

12/17/04
    - Added feasibility check to mp_lp.m and mp_qp.m to work around a
      recently discovered bug in BPMPD_MEX 2.21 where it sometimes returns an
      incorrect (infeasible) solution for a DC OPF problem. This bug has yet
      to be encountered in any other context.

12/13/04
    - Added mpver.m to print version information.

9/23/04
    - Fixed bugs in cdf2matp.m which prevented it from working at all
      when not specifying both input parameters and caused it to
      sometimes not add the warnings at the end of the file.
    - Fixed typo in name of lower bound input argument in opf.m. Only
      affected those calling opf directly with extra linear constraints.


Changes since 3.0b2
-------------------

9/20/04
    - Released version 3.0b3.
    - Generated clean versions of all included case files using latest
      cdf2matp and savecase. Added documentation for source of data
      for case files.
    - More enhancements to cdf2matp.m. Adds comments at beginning, appends
      conversion warnings as comments at end of file. Uses savecase.m to
      save the data.
    - Updated savecase.m to use %g instead of %f many places, correctly
      handle multi-line comments, include headers for extra columns for
      solved cases. Optionally returns filename with extension.

9/17/04
    - Fixed bug in grad_std.m, introduced in 3.0b2, which prevented constr
      and LP-based OPF solvers from working for polynomial cost functions.

9/15/04
    - In cdf2matp.m, added input args, updated docs, switched to named
      indexing of data matrices, new method for creating gen costs.
    - Documentation fixes and additions from Pan Wei.


Changes since 3.0b1
-------------------

9/7/04
    - Released version 3.0b2.
    - Added OPF_P_LINE_LIM option to mpoptions to use active power
      instead of apparent power for line limits (thanks to Pan Wei
      for the suggestion and some code).

9/1/04
    - Fixed bug in savecase.m introduced when making areas and gencost
      optional.
    - Updated opf_slvr.m with options for MINOS and fmincon.
    - Removed option 15 OPF_NEQ from docs (not a user option). Removed option
      52 VAR_LOAD_PF (unused, always behaves as if this option were 1).
      Changed semantics and default value for option 51 SPARSE_QP. By default
      (value = 1) it will use sparse matrices if a sparse QP/LP solver is
      available and full matrices otherwise. Setting the value to 0
      will force it to use full matrices even with a sparse-capable solver.
    - Cleaned up checking for optional functionality, and fixed a bug
      that would miss MEX files if there was an identically named directory
      by adding have_fcn.m.
      

Changes since 2.0
-----------------

8/25/04
    - Released version 3.0b1.

8/24/04
    - Made mpoption() throw an error if passed an invalid option name.

8/23/04
    - Added an fmincon based OPF solver for the generalized formulation
      previously used by mopf (Carlos).
    - Restructured opf.m so all OPF solvers have a similar API based
      on the one from mopf.m (Carlos).
    - Added some quick tests for runpf and runopf for each algorithm.

8/13/04
    - Renamed 'area' variable to 'areas' to avoid masking the built-in
      function of the same name.
    - Made OPF data matrices 'areas' and 'gencost' optional for running
      simple power flow.

7/15/04
    - The loadcase function (and therefore all of the run* functions
      now optionally accept a struct with the data matrices as fields
      in place of the case file name.
    - Added t subdirectory with various tests and testing tools.

7/8/04
    - Updated mp_lp.m and mp_qp.m to try linprog() and quadprog()
      after trying bp, since lp() and qp() are no longer included
      in the Optimization Toolbox as of version 3.

7/7/04
    - Removed case.m, added caseformat.m, made case9.m the default
      case and fixed function names in other case files to avoid
      use of reserved word 'case'.
    - Fixed bugs in runcomp.m.

6/23/04
    - Fixed bug in newtonpf.m which caused algorithm to diverge when
      the Newton step resulted in a negative voltage magnitude.

4/17/03
    - Changed uopf.m to use a dynamic programming approach. More
      computationally expensive, but should find significanly better
      results when there are many gens to shut down.
    - Added mp_lp.m and mp_qp.m, equivalents to lp.m and qp.m,
      respectively that call bpmpd if available. Modified LPrelax.m,
      LPsetup.m and dcopf.m to call these new functions.

4/14/03
    - Fixed a bug in pfsoln.m which for cases with a single generator.

10/23/02
    - Fixed bus numbering bug in System Summary section of printpf.m.

6/20/00
    - Fixed a bug in printpf.m in the generator section, where
      the generator was assumed to be off if it's real power
      output was zero, even if the reactive output was non-zero.
    - Modified printpf.m to print out lambdas in generation section
      for generators that are shut down.

6/8/00
    - Modified cdf2matp.m so that Pd also includes any generation at
      buses specified as PQ buses. Also modified identification of
      generator buses to include only PV or reference buses. (Thanks
      to Venkat)
    - Modified cdf2matp.m so that it always treats the input values
      for Gs and Bs as per unit values and converts them to actual
      values expected by MATPOWER (Thanks to D. Devaraj)

version 2.5b3
11/9/99

9/22/99
    - Modified grad_*.m to return sparse matrices, unless using
      constr.m or an LP/QP solver that doesn't handle sparse
      matrices. Cleaned up sparse<->full conversions in LPconstr.m,
      LPrelax.m, and LPsetup.m.

9/21/99
    - Undid a "bug fix" from 3/6/98 in makeYbus.m which zeros out
      charging capacitance for transformers. Apparently some
      transformer models actually have a non-zero charging parameter
      when using the model used by MATPOWER (ideal transformer in
      series with a PI model).
    - Added loadcase.m which loads a MATPOWER case from an M-file
      or from a MAT-file. Changed all of the run*.m files to use this
      as the default way to load case files.
    - Renamed print2mp.m to savecase.m and added the ability to
      save a case as a MAT-file as well as an M-file.

9/15/99
    - Fixed opf.m so that it correctly uses the termination
      tolerances in the MATPOWER options vector for constr.m.
    - In previous versions, Pmin/Pmax constraints are relaxed by
      10 * OPF_VIOLATION in opf.m to avoid falsely reporting a
      binding Pmin/Pmax constraint in a case where a piece-wise linear
      cost function has a corner point exactly at the limit. This
      code was moved out of opf.m (and the standard MATPOWER
      distribution) to smartmkt.m and the value was changed to
      100 * OPF_VIOLATION.
    - Modified opf.m so the MINOS-based solver uses OPF_VIOLATION
      to set the value of MNS_FEASTOL and MNS_ROWTOL if they are
      set to zero.

9/9/99
    - Included MINOS-based OPF with all of its options as
      algorithm 500. (involved including 'area' in calls to opf.m
      and uopf.m)
    - Removed some unused lines from fun_ccv.m and grad_ccv.m.

8/5/99
    - Fixed a bug in the pfsoln.m in the distribution of Q among
      generators at the same bus. Initially attempted to distribute
      Q to generators proportional to each generators' Q "capacity".
      To do this correctly requires special cases for generators
      with QMIN equal to QMAX. For the sake of simplicity, we now
      distribute Q equally among all generators at the bus.
      Note: As before, the simple power flow does NO feasibility
      checking.

7/19/99
    - Modified runuopf.m and uopf.m to handle DC opf. Added the
      function runduopf.m which calls runuopf.m with the PF_DC flag
      set to 1.
    - Fixed size of 2nd order (all zero) coefficient of objective
      for piecewise linear cost case in dcopf.m.

7/16/99
    - Added the flag QP_SPARSE to mpoption.m to indicate whether the
      QP solver being used can accept sparse matrices. Also modified
      dcopf.m to use this flag.
    - Fixed handling of VERBOSE option in dcopf.m
    - Added the flag PF_DC to mpoption.m to indicate whether the
      power flow formulation to be used for power flow and optimal
      power flow is a DC approximation or full AC representation.
      Merged rundcpf.m with runpf.m and rundcopf.m with runopf.m
      so that the appropriate solver will be used based on the
      value of the PF_DC flag in the options. The functions rundcpf.m
      and rundcopf.m were modified to simply call runpf.m and
      runopf.m, respectively, with the PF_DC flag set to 1.

7/15/99
    - Changed the sign of the phase shifters in printpf.m to be
      consistent with the bug fix to makeYbus.m made on 3/6/98.

7/14/99
    - Included four new m-files (makeBdc.m, dcopf.m, rundcpf.m,
      and rundcopf.m) which implement a DC power flow and DC
      optimal power flow algorithms.

7/13/99
    - Cleaned up variable names in makeYbus to avoid confusion.

6/10/99
    - Changed UOFP to UOPF in print statements uopf.m.

6/3/99
    - Modified print2mp.m overwrite instead of append to an
      existing file.
    - Fixed bug in cdf2matp.m to make it always correctly write
      a text file output.

version 2.5b2
6/2/99
    - Modified print2mp.m to include line flows and Lagrange
      and Kuhn-Tucker multipliers in output if available.

4/29/99
    - Included a Gauss-Seidel power flow solver gausspf.m, and
      made corresponding changes to runpf.m and mpoption.m.
      Code contributed by Alberto Borghetti.

4/28/99
    - Modified newtonpf.m to handle cases with no PQ buses or no
      PV buses under newer versions of Matlab.

2/25/99
    - Fixed a bug in uopf.m which occurs when two (or more)
      generators have positive decommitment indices but shutting
      them down one at a time always results in increased system
      cost. In this scenario, it would go into an infinite loop
      of attempting to shut them down one by one.

2/24/99
    - Modified uopf.m to be able to handle the case where the
      sum of the Pmin's is greater than the load. It shuts down
      generators in order of decreasing average cost at Pmin
      (breaking ties randomly) until this infeasibility is gone.

2/16/99
    - Fixed bug in pfsoln.m which caused crashes in Matlab 5
      for systems with no capacitors.
    - Added print2mp.m, which can print out a MATPOWER case file
      from the data matrices.
    - Added to run*pf.m ability to save solved case.

2/10/99
    - Modified ext2int.m to allow for area matrix to be empty.

12/3/98
    - Changed pfsoln.m so that there is only one slack generator.
      Instead of dividing the P between multiple gens at the
      slack bus in proportion to capacity (this caused problems
      for the LPconstr versions of the OPF), it now treats the
      first generator at the slack bus as the only slack generator,
      leaving the dispatch of the other gens at the bus unchanged.
    - Added generator number to generation constraint printout and
      branch number to branch data and branch flow limit printouts.

12/2/98
    - Changed printpf.m to print elapsed time and objective fcn
      value even when OUT_SYS_SUM is turned off.
    - Added code to LPconstr.m to explicitly zero out lambdas for
      non-binding constraints.

12/1/98
    - Made modifications to ...
        bustypes.m
        fun_ccv.m
        fun_std.m
        grad_ccv.m
        grad_std.m
        LPeqslvr.m
        makeSbus.m
        opf.m
        opfsoln.m
        pfsoln.m
        printpf.m    
        runpf.m
      ... to allow for multiple generators at each bus. For simple
      power flow, the Q dispatch is divided between multiple gens
      at a bus in proportion to each gen's Q capacity. Likewise
      with P for multiple gens at the slack bus.

10/29/98
    - Fixed bug in uopf.m which caused it to crash when attempting
      to restart a generator after more than 2 had been shut down.

10/19/98
    - Generalized definition of GEN_STATUS column of gen matrix
      to allow for distinctions in the status of out-of-service
      generators. The default values of 0 => out-of-service and
      1 => in-service still work, but the logic has been changed
      so that GEN_STATUS > 0 is now in-service and
      GEN_STATUS <= 0 is now out-of-service, as opposed to
      GEN_STATUS ~= 0 and GEN_STATUS == 0, respectively, which
      was used previously. This allows for a GEN_STATUS of -1,
      for example, to indicate a generator which is off-line
      but could be brought on in case of an emergency.

9/2/98
    - Fixed bug in printpf.m which caused area exports to be
      off slightly.

9/1/98
    - Fixed bug in printpf.m. Total intertie flow was double the
      correct value.

8/31/98
    - Fixed bug which included line flow limits for out-of-service
      lines in OPF.
    - Modified pfsoln.m, opfsoln.m, printpf.m to zero out flow on
      lines which are out-of-service (found by Ramazan Caglar).

7/28/98
    - Changed VAR and MVAR to VAr and MVAr everywhere in output.

3/13/98
    - Decreased the default value of LPC_TOL_X option to increase
      solution quality.
    - Modified fix of 2/10/98 to use a value based on the value of
      the OPF_VIOLATION option.

3/6/98
    - Fixed 2 bugs in makeYbus.m. Phase shifters now shift the phase the
      right direction, the line charging susceptance parameter is now
      correctly ignored for transformer and phase shifters.

3/3/98
    - Fixed a bug fun_std.m which caused it to always compute 2nd order
      derivatives. Now it only computes them when requested.

2/10/98
    - In previous versions, Pmin/Pmax constraints are relaxed by 1.0e-6
      in opf.m to avoid falsely reporting a binding Pmin/Pmax constraint
      in a case where a piece-wise linear cost function has a corner
      point exactly at the limit. Changed the amount of relaxation to
      1.0e-4 since the problem still occurred at times.

1/29/98
    - Changed the value of LPC_MAX_IT from 1000 to 400 to allow for
      earlier detection of infeasible OPF.

Changes since 1.0.1
-------------------

12/24/97
    - Released version 2.0.

12/19/97
    - Fixed ambiguity in case file data and comments regarding lines
      vs. transformers. Now a tap ratio of zero means that it's a line
      and a non-zero tap ratio means that it's a transformer.
    - Optimized formation of Ybus (and hence B matrices).

12/18/97
    - Implemented fast decoupled load flow.

12/17/97
    - Optimized formation of Jacobian matrix in newtonpf.m (significant
      improvement for large systems under Matlab 5).
    
12/16/97
    - Fixed another bug in calculation of losses. Previous versions
      did not take into account off-nominal taps for transformers.
    - Fixed a bug in calculation of losses. Previous versions
      included line charging injection in reactive line losses.
    - Added ability to optionally return solution data from
      run*.m functions.
    - Added ability to optionally print results to a file.
    - Added system and area summaries to printpf and modified to
      handle the new printing options.

12/12/97
    - Consolidated printing into printpf.m, eliminated printopf.m.
    - Removed QCCV method (standard formulation solves same problem,
      but more efficiently).
    - Removed OPF algorithms which use fixed generator voltages
      (this can still be done by changing voltage limits in the
      case file), renumbered OPF algorithms, removed CCV.m and
      varVg.m.

12/11/97
    - Added 2 more levels of control of verbose output.
    - Put all MATPOWER options into an options vector defined in
      mpoption.m.

12/10/97
    - Incorporated new LP-based OPF routines and updated alg codes.
    - Fixed a bug in the documentation in the case files regarding
      the 4th column of gencost. For piece-wise linear cost functions
      this value is the number of data points, not the number of
      parameters (x and y for each point).
    - Removed some m-files that are not used (usesOT.m, usesLP.m).
    - Renamed some m-files (OTfungra.m to fg_names.m, OTSfun.m to
      fun_std.m, OTgra.m to grad_std.m, OTCCVfun.m to fun_ccv.m,
      OTCCVgra.m to grad_ccv.m).

12/8/97
    - Rewrote uopf.m to use a smarter decommitment strategy (see the
      docs for the details of the new method). Removed ref, pv, pq
      from the list of parameters passed in, since they were not used.

11/19/97
    - Fixed a bug in previous versions of uopf.m which returned
      incorrect values for Pmin.

10/28/97
    - Increased maximum number of iterations for constr-based OPF.

10/24/97
    - Fixed a bug in previous versions which may result in incorrectly
      reporting Pmin or Pmax limits to be binding, possibly with large
      multipliers, if the piece-wise linear cost function has a corner
      point exactly at Pmin or Pmax.

10/22/97
    - Added to OTSgra.m (renamed to grad_std.m in 2.0) the ability
      to return the second derivatives of the objective function.

9/24/97
    - Fixed a bug in previous versions of runuopf.m which prevented it
      from printing out the raw data needed for our Perl DB interface.

9/23/97
    - Fixed a bug in 1.1b1 in OTCCVgra.m (renamed to grad_ccv.m in 2.0)
      which caused printing of warning message "Concatenation involves
      an incommensurate empty array" under Matlab 5.

9/22/97
    - Fixed a bug in 1.1b1 which prevented runuopf.m from running at all.
      Wrong number of parameters to call opf.m.

9/20/97
    - Released version 1.1b1.

9/19/97
    - Modified the formulation of the OT-based OPF. The objective
      function may now include costs for reactive power as well as
      active power. In previous versions the reactive power variables
      and reactive power balance equations for generator buses were
      not included explicitly in the optimization as variables and
      equality constraints. Generator reactive powers were computed
      directly. Now they are included explicitly in the optimization.
      Costs for Qg are specified in extra rows int gencost.


Changes since 1.0
-----------------

9/20/97
    - Released version 1.0.1.

9/19/97
    - Fixed a bug in 1.0 OTSgra.m and OTCCVgra.m (renamed to
      grad_std and grad_ccv.m, respectively, in 2.0).m which used
      incorrect coefficients to compute cost if specified as
      polynomials of different degrees.

9/18/97
    - Fixed a bug in 1.0 in OTopf.m which caused the last equality
      constraint (Q mismatch for last pq bus) to be treated as an
      inequality constraint. It appears that this constraint was
      normally binding (unless Qd was negative) in which case the
      solution was still correct.
    - Fixed a bug in 1.0 in runpf.m, initial voltage for generators
      which were shut down were taken from gen(:, VG) rather
      than bus(:, VM).
    - Fixed a bug in 1.0 in varVg.m which caused Kuhn-Tucker
      multipliers to print out in the wrong place for LP-based OPF.


Changes since 6/25/97 Version
-----------------------------

9/17/97
    - Released version 1.0 (first widely publicized release).
    - added placeholders for LP-solvers that we can't re-distribute
    - updated documentation

9/12/97
    - added ability to do pretty & ugly printing at the same time
      also documented that ugly printing is for talking to our
      our Perl database interface code
    - included Deqiang (David) Gan's LP IEEE -> matpower data
      conversion code
    - included Deqiang (David) Gan's LP based opf code
    - fixed LAM_Q bug, now computes correctly for generator buses
    - fixed some bugs in totcost.m

9/9/97
    - removed PRICE from idx_gen

9/4/97
    - added code to convert from (possibly non-consecutive) external
      bus numbering to consecutive internal bus numbering before
      solving, and back to external before printing results
    - replaced test*pf with run*pf which are now functions
      taking the casefile name as a parameter (among other params)
    - made changes necessary to handle new format of case file
      (generator costs moved to gencost variable)


Changes since I started keeping track
-------------------------------------

6/25/97
    - made first public release (not widely publicized)
    - documentation updates
    - changed names of m-files to fit DOS 8.3 limitation
        buildsbus.m     =>  makeSbus.m
        buildybus.m     =>  makeYbus.m
        idx_branch.m    =>  idx_brch.m
        dSbranch_dV.m   =>  dSbr_dV.m
        dAbranch_dV.m   =>  dAbr_dV.m
        ucopfsoln.m     =>  uopfsoln.m
        testucopf.m     =>  testuopf.m
        ucopf.m         =>  uopf.m  (for naming consistency)
    - changed copyright notice

6/18/97
    - modified ucopf.m to allow a generator to be turned back on if
      shutting it off results in an infeasible (or at least
      non-convergent) OPF, also changed the order of shutting down
      generators which are dispatched at zero, now chooses one with
      largest mu_Pmin     

6/12/97
    - fixed bug in printpf.m so it doesn't print PG & QG for gens that
      have been shut down
    - fixed bug in pfsoln.m to correctly compute the reference bus power
      injection when generators have been shut down

6/10/97
    - fixed Vg initialization bug in testpf.m (not just testopf, etc)

6/9/97
    - fixed bug in PLCCV versions which set the initial values of the
      cost variables wrong (used p.u. Pg instead of actual)
    - made opfsoln.m copy generator voltages back to gen(:, VG)
    - fixed bug in code which initializes generator voltages, it was
      always setting the angle to zero, now it uses the value from the
      case file

6/3/97
    - included opf variations which use cost variables constrained
      by a piece-wise linear cost function (PLCCV = piece-wise linearly
      constrained cost variables)

6/2/97
    - included opf variations which use cost variables constrained
      by a quadratic cost function (QCCV = quadratically constrained
      cost variables)
    - included opf variation which allows generator voltage
      magnitudes to vary
    - fixed line in test*pf.m scripts which initializes V0 (I'd missed
      the sqrt(-1) before

4/16/97
    - changed line 59 of ucopf.m from "return" to "break" to ensure
      return values are correct

4/14/97
    - added some print statements to ucopf.m

4/12/97
    - reduced max iterations to 100 for constr in opf.m

4/8/97
    - modified opf.m, ucopf.m, testopf.m, testucopf.m to include
      "success", a variable which indicates whether opf was solved
      successfully or not

4/7/97
    - fixed bug in ucopf.m, assumed all generators are initially
      available
