------------------------------
10/31/18
- Released 7.0b1.
- Update versions of included packages
- MIPS 1.3
- MOST 1.0.1
- MP-Test 7.0b1
10/25/18
- Add another purely synthetic case from the ACTIVSg team (ASU, Cornell,
Texas A&M, U of IL, and VCU - Synthetic grids), resulting from work
supported by the ARPA-E GRID DATA program.
*Thanks to Adam Birchfield and the ACTIVSg team.*
- `case_SyntheticUSA` (82,000-bus continental USA synthetic model,
aggregation of `case_ACTIVSg2000`, `case_ACTIVSg10k`,
`case_ACTIVSg70k`, connected by 9 DC lines)
10/16/18
- **INCOMPATIBLE CHANGE:** Correct signs of phase shifter angles in
Polish system cases, since they were based on the old sign convention
used by MATPOWER prior to v3.2 (see change on 6/21/07). Affects the
following cases:
- `case2383wp`
- `case2736sp`
- `case2737sop`
- `case2746wop`
- `case2746wp`
- `case3375wp`
*Thanks to Mikhail Khokhlov and Dr. Artjoms Obusevs for reporting.*
- Fix `runpf()` handling of case where individual power flow fails
during Q limit enforcement.
10/9/18
- Add option `opf.softlims.default` for use with enhanced
`toggle_softlims()` to determine whether or not to include soft limits
on constraints whose parameters are not specified explicitly in the
`mpc.softlims` struct.
- Update `toggle_softlims()` to implement soft limits for all OPF inequality
constraints, i.e. bus voltage bounds, generator active & reactive bounds,
branch flow and branch angle difference limits.
*Thanks to Eran Schweitzer.*
- Add optional `mpopt` argument to calls to `ext2int()` and `int2ext()`.
- **INCOMPATIBLE CHANGE:** Add `mpopt` to input args for OPF `ext2int`
and `int2ext` callbacks.
- **INCOMPATIBLE CHANGE:** Turning soft limits on without specifying any
parameters explicitly in `mpc.softlims` now implements soft limits for
all constraints, by default, not just branch flow limits. And the
format of the input parameters in `mpc.softlims` has changed. See
`help toggle_softlims` for the details.
9/10/18
- Add support for PARDISO v6.x.
8/30/18
- Update to Aug 9, 2018 version of `case_ACTIVSg2000`.
6/19/18
- Correct (swap) names of fields `e2i` and `i2e` used internally
(in `mpc.order.gen`) to map between external and internal indexing
of generators.
- Improve error messages and documentation related to specifying
dispatchable loads and their power factor constraints.
5/31/18
- Add another purely synthetic case from the ACTIVSg team (ASU, Cornell,
Texas A&M, U of IL, and VCU - Synthetic grids), resulting from work
supported by the ARPA-E GRID DATA program.
*Thanks to Adam Birchfield and the ACTIVSg team.*
- `case_ACTIVSg70k` (70,000-bus Eastern US synthetic model)
5/19/18
- Add `loadshed()` function to compute MW curtailments of dispatchable
loads.
5/18/18
- Add `lng` for "Liquefied Natural Gas" to `genfuels()`.
- Under Octave, disable the use of explicit LU decomposition with AMD
reordering and the 3 output argument form of LU for Newton power
flow on larger systems. In Octave 4.4 it generates warnings about
potential LU failures **and** slows it down.
5/10/18
- Fix bug in order of lambdas used in `opf_branch_ang_hess()` and
`opf_vlim_hess()` that resulted in wrong sign in Hessian terms.
- Fix [bug 36][12] where Hessian structure for Ipopt and Knitro were
incorrect. Re-enabled skipped tests that were previously failing.
4/19/18
- Add AC OPF tests for cases with ref bus ~= 1 and ref angle ~= 0.
- Fix fatal error in `opf_vref_hess()` for cases where ref bus ~= 1.
4/12/18
- Add to `nested_struct_copy()` ability to copy fields that are struct
arrays.
4/5/18
- **INCOMPATIBLE CHANGE:** Swap the order of the output arguments of
`dSbus_dV()` for polar coordinate voltages (angle before magnitude)
for consistency.
4/3/18
- Add three new variants of the standard AC OPF formulation, for a total
of four, including both nodal power and current balance constraints and
both polar and cartesian representations of voltage. See the new
`opf.current_balance` and `opf.v_cartesian` options.
*Thanks to Baljinnyam Sereeter.*
- Update existing functions that compute derivatives with respect to
voltage to handle cartesian coordinate voltages in addition to polar.
*Thanks to Baljinnyam Sereeter.*
- Update existing functions that compute derivatives with respect to
voltage to handle cartesian coordinate voltages in addition to polar.
*Thanks to Baljinnyam Sereeter.*
- Add functions to compute derivatives of current balance constraint:
*Thanks to Baljinnyam Sereeter.*
- `dImis_dV`
- `d2Imis_dV2`
- `d2Imis_dVdSg`
- Add functions to implement constraints for new AC OPF variants.
*Thanks to Baljinnyam Sereeter.*
- `opf_branch_ang_fcn`, `opf_branch_ang_hess`
- `opf_current_balance_fcn`, `opf_current_balance_hess`
- `opf_veq_fcn`, `opf_veq_hess`
- `opf_vlim_fcn`, `opf_vlim_hess`
- `opf_vref_fcn`, `opf_vref_hess`
- Add two new Technical Notes (TN3, TN4) and updated revision of TN2.
*Thanks to Baljinnyam Sereeter.*
- [MATPOWER Technical Note 3](https://matpower.org/docs/TN3-More-OPF-Derivatives.pdf)
- [MATPOWER Technical Note 4](https://matpower.org/docs/TN4-OPF-Derivatives-Cartesian.pdf)
- Add `d2Abr_dV2()` to replace the (now deprecated) separate functions
`d2AIbr_dV2()` and `d2ASbr_dV2()`.
3/7/18
- Replace clock()/etime() with tic()/toc() for timing.
12/22/17
- Add another purely synthetic case from the ACTIVSg team (ASU, Cornell,
Texas A&M, U of IL, and VCU - Synthetic grids), resulting from work
supported by the ARPA-E GRID DATA program.
*Thanks to Adam Birchfield and the ACTIVSg team.*
- `case_ACTIVSg25k` (25,000-bus US Northeast/Mid-Atlantic synthetic
model)
12/6/17
- Fix [bug 21][9] where a continuation power flow that failed the first
corrector step would produce a fatal error.
*Thanks to Elis Nycander.*
- Fix [bug 23][10] where the continuation power flow could switch
directions unexpectedly when the operating point switched from
stable to unstable manifold or vice-versa after hitting a limit.
*Thanks to Elis Nycander and Shrirang Abhyankar.*
- Fix [bug 26][11] where, in a continuation power flow, a reactive limit
at a bus could be detected in error if multiple generators at the bus
had reactive ranges of very different sizes.
*Thanks to Elis Nycander and Shrirang Abhyankar.*
- Remove numerical proxies for `Inf` from case files. Some cases used
9999 and/or 99999 as numerical proxies to indicate the absence of
limits on generator `QMIN`, `QMAX` (replaced with `-Inf`, `Inf`) or
branch `RATE_A`, `RATE_B`, `RATE_C` (replaced with 0).
11/29/17
- Add new option `knitro.maxit` to set maximum number of iterations
for AC OPF solver using Knitro.
11/22/17
- Add new option `opf.start` to replace deprecated `opf.init_from_mpc`
and add a new possibility to automatically run a power flow to
initialize the starting state for the OPF.
11/17/17
- Improve handling of allocation of reactive power among multiple
generators at a bus in power flow solution. Use equal violation at
buses where total Qmin == total Qmax. Eliminate NaNs in case of
infinite Q ranges.
11/14/17
- Add MATPOWER logo to User's Manual.
11/7/17
- Remove deprecated non-fatal error mechanism in `loadcase()`.
- Update `feval_w_path()` to allow empty string for path, equivalent to
calling `feval()` directly.
- Modify `loadcase()` to use `feval_w_path()`.
- Make `install_matpower()` check for minimum required MATLAB/Octave version.
- __IMPORTANT NOTE__: For MATLAB users, the minimum requirement for
MATPOWER is now MATLAB 7.3.0 (R2006b). _(No access to older versions
for testing)_.
11/3/17
- Add `case_RTS_GMLC` from [here](https://github.com/GridMod/RTS-GMLC).
10/31/17
- Update `case9` with complete reference to source data and updated
generator voltages, initial reactive injections and slack active
injection to more closely match original source.
- Make AC OPF solver always default to MIPS, even if TSPOPF is installed.
i.e. `opf.ac.solver = 'DEFAULT'` is now identical to
`opf.ac.solver = 'MIPS'`.
- Add [E4ST](https://e4st.com/) to `have_fcn()` and `mpver` output.
10/27/17
- Add contingencies and scenarios for ACTIVSg cases, contingencies for
all four, and one year of hourly zonal or area load scenarios for 200
and 2000 bus cases.
10/11/17
- Add `t_opf_default()` to test AC OPF with `opf.ac.solver` set to `DEFAULT`.
- Fix bug in setup of OPF (introduced since v6.0), triggered by running
an AC OPF with `opf.ac.solver` set to `DEFAULT` with TSPOPF installed.
*Thanks to Carlos Murillo-Sanchez.*
- Fix bug in setup of OPF (introduced since v6.0), triggered by running a
DC OPF with `opf.ac.solver` set one of the legacy MEX-based solvers such
as `PDIPM`. Set `opf.ac.solver` to `PDIPM` for some of the DC OPF tests.
10/10/17
- Add `savechgtab()` function to save change tables, such as those used
by `apply_changes()`, to a file.
- Fix issues with PSS/E import on newer Octave versions (e.g. 4.3).
Fixes to MATLAB incompatibilities in `regexp` behavior eliminated the
need for Octave-specific workarounds.
9/26/17
- Minor updates to support the latest versions of MATLAB, MOSEK and YALMIP.
9/15/17
- Add another purely synthetic case from the ACTIVSg team (ASU, Cornell,
Texas A&M, U of IL, and VCU - Synthetic grids), resulting from work
supported by the ARPA-E GRID DATA program.
*Thanks to Adam Birchfield and the ACTIVSg team.*
- `case_ACTIVSg10k` (10,000-bus US WECC synthetic model)
9/12/17
- Update `opt_model` API for method naming consistency. Summary of
deprecated method names, with new alternatives in parenthesis:
- `add_vars` (`add_var`)
- `add_costs` (`add_legacy_cost`, `add_quad_cost` or `add_nln_cost`)
- `add_constraints` (`add_lin_constraint` or `add_nln_constraint`)
- `build_cost_params` (no longer needed)
- `compute_cost` (`eval_legacy_cost`)
- `get_cost_params` (`params_legacy_cost`)
- `getv` (`params_var`)
- `linear_constraints` (`params_lin_constraint`)
9/8/17
- Add general nonlinear cost values to OPF results in `results.nlc`.
9/6/17
- Refactor AC and DC OPF code to use the new quadratic and general
nonlinear cost handling of `opt_model` to build and evaluate
generator and user-defined costs and their derivatives.
9/5/17
- Add tests for OPF with high-degree polynomial (greater than quadratic)
generator cost functions.
- Add tests for OPF with legacy user-defined cost functions that include
"dead zone" with quadratic "penalty".
- Lay ground work for user-defined nonlinear OPF costs by adding
support to `opt_model` for handling nonlinear costs with function
handles for evaluating the cost function, gradients and Hessian.
- Add support to `opt_model` for handling quadratic costs.
- Deprecate the legacy generalized cost mechanism in `opt_model`
based on `add_costs()` in favor the quadratic and general nonlinear
mechanisms, `add_quad_cost()` and `add_nln_cost()`.
8/22/17
- Add options `'cpf.enforce_v_lims'` and `'cpf.enforce_flow_lims'` to
enforce bus voltage magnitude and branch flow limits in the
continuation power flow, and `'cpf.v_lims_tol'` and
`'cpf.flow_lims_tol'` to control the respective detection tolerances.
*Thanks to Ahmad Sadiq Abubakar and Shrirang Abhyankar.*
8/18/17
- Expand support for soft branch flow limits in `toggle_softlims` to
include AC OPF problems as well as DC OPF.
- Add support for direct specification of user-defined nonlinear
constraints for AC OPF, in `mpc.user_constraints.nle` and
`mpc.user_constraints.nli`, for equality and inequality constraints,
respectively.
8/14/17
- Remove `nln` (nonlinear constraints) field from `opt_model` object,
in favor of `nle` (nonlinear equalities) and `nli` (nonlinear
inequalities).
- Add `nle.lambda.<name>` and `nli.mu.<name>` to OPF `results` struct.
- Add `nle` and `nli` fields to `results.mu` returned by `*opf_solver`
functions.
- **INCOMPATIBLE CHANGE:** Remove `nln.mu.l.<name>` and `nln.mu.u.<name>`
fields from OPF `results` struct. Use `nle.lambda.<name>` and
`nli.mu.<name>` fields instead for nonlinear constraint multipliers.
- **INCOMPATIBLE CHANGE:** Modify order of default output arguments of
`opt_model.get_idx()`.
- **INCOMPATIBLE CHANGE:** Add `mpopt` to OPF `formulation` callback
input args.
8/4/17
- Refactor AC OPF code to use the new nonlinear constraint handling
of `opt_model` to build and evaluate power balance and branch flow
constraints and their derivatives, and index shadow prices.
- Add option for `opt_model.get_idx()` to return arbitrarily selected
index types.
7/10/17
- Lay ground work for user-defined nonlinear OPF constraints by adding
support to `opt_model` for handling nonlinear constraints with
function handles for evaluating the constraint function, gradients
and Hessian.
- Deprecate the `add_constraints()` method of `opt_model`. Use the
corresponding one of the following methods instead:
`add_lin_constraint()`, `add_nln_constraint()` or `init_indexed_name()`.
6/8/17
- Move `opt_model`, `opf_model` to use `classdef`. Modify code to use
OOP notation everywhere for `opt_model`/`opf_model` objects,
e.g. `om.property`, `om.method()`.
__IMPORTANT NOTE__: For Octave users, the minimum requirement for
MATPOWER is now Octave 4 or later.
5/25/17
- Add option to call `opt_model.compute_cost()` without `idx` argument
and have it total over all indices for a given `name`.
5/24/17
- Remove OPF result columns from `gen` matrix returned by `psse2mpc`.
- Limit length of name of star-buses added by `psse2mpc` to 12 chars.
- Add `save2psse` with support for exporting MATPOWER case data to
PSS/E RAW format.
5/23/17
- Add support for `gentype` and `genfuel` fields of MATPOWER case struct
in `extract_islands`, `ext2int`, `int2ext`, `load2disp` and `savecase`.
- Add support for `bus_name` field of MATPOWER case struct to
`extract_islands`, `ext2int` and `int2ext`.
- Add `gentype` and `genfuel` fields to three ACTIVSg cases.
5/22/17
- Add `genfuels` and `gentypes` to establish standard set of values for
optional `mpc.genfuel` and `mpc.gentype` fields for generator fuel
type and generator unit type, respectively.
- Fix [bug 13][8] where setting all buses to type `NONE` (isolated) resulted
in a fatal error for `ext2int`, `runpf`, `runcpf` and `runopf`.
*Thanks to SNPerkin.*
5/19/17
- Add three new purely synthetic cases from the ACTIVSg team (ASU, Cornell,
Texas A&M, U of IL, and VCU - Synthetic grids), resulting from work
supported by the ARPA-E GRID DATA program.
*Thanks to Adam Birchfield and the ACTIVSg team.*
- `case_ACTIVSg200` (200-bus Illinios synthetic model)
- `case_ACTIVSg500` (500-bus South Carolina synthetic model)
- `case_ACTIVSg2000` (2000-bus Texas synthetic model)
5/11/17
- Fix [bug 12][7] where the CPF could terminate early when requesting
trace of the full curve with P or Q limits enforced, if a limit
becomes binding at the base case.
*Thanks to Felix.*
5/3/17
- Fix [11][6] fatal error encountered when running `test_matpower` with
SDP_PF and YALMIP installed, but no SDP solver. Now checks for
availability of SeDuMi, SDP3 or MOSEK before attempting to run
SDP_PF tests that require solving an SDP.
4/7/17
- Fix fatal bug in `get_losses` when computing derivatives of reactive
branch injections and fix some related tests.
- Fix bug in `makeJac` in which voltage was set by generator voltage
setpoint even for PQ buses.
4/7/17
- Fix fatal [bug 8][5] when calling `runcpf` with base and target cases
with identical load and generation.
*Thanks to Felix.*
3/17/17
- In the Newton power flow, for larger systems use explicit LU
decomposition with AMD reordering and the 3 output argument form of LU
(to select the Gilbert-Peierls algorithm), resulting in up to a 2x
speedup in MATLAB, 1.1x in Octave.
*Thanks to Jose Luis Marin.*
- Add new `pf.nr.lin_solver` option to control the linear solver used
to compute the Newton update step in the Newton-Raphson power flow.
2/9/17
- Add three new power flow algorithms for radial distribution
systems selected via the three new options for `pf.alg`, namely
`'PQSUM'`, `'ISUM'`, `'YSUM'`. Also includes new MATPOWER options
`pf.radial.max_it` and `pf.radial.vcorr`. See Section 4.3 on
"Distribution Power Flow" in the manual for details.
*Thanks to Mirko Todorovski.*
- Add 6 new radial distribution system cases. *Thanks to Mirko Todorovski.*
- `case4_dist`
- `case18`
- `case22`
- `case69`
- `case85`
- `case141`
1/26/17
- Add sources for MATPOWER User's Manual to `docs/src`.
- Move MOST User's Manual from `docs` to `most/docs`.
1/25/17
- Move case files to new `data` directory. Requires user to update
MATLAB or Octave path.
1/24/17
- Update documentation in `README.md`, `CHANGES.md`,
`CONTRIBUTING.md`, `relnotes/RELEASE-NOTES-6.0.md`,
`docs/MATPOWER-dev-guide.md` to go along with move to GitHub
and addition of installer.
1/23/17
- Add `install_matpower()` to assist with installation by
updating MATLAB or Octave paths or providing the commands
required to so.
1/16/17
- Support plotting of multiple nose curves in CPF by allowing
option `cpf.plot.bus` to take on vector values.
1/14/17
- Add line for curtailed load to `case_info()` output.
1/5/17
- Fix [bug 4][4] where some Q limits were not being respected by CPF
when buses were converted to PQ by initial power flow run.
*Thanks to Shruti Rao.*
1/4/17
- When `genfuel` field is present in `mpc`, `load2disp()` now augments
it with `dl` entries for the dispatchable loads it adds.
1/3/17
- Change default implementation of active power line flow
constraints (`opf.flow_lim = 'P'`) to use flow directly, rather
than square of flow, which is now a separate option, namely
`opf.flow_lim = '2'`. *Thanks to Nico Meyer-Huebner.*
12/29/16
- Fix bug in converting older versions of MATPOWER options struct.
12/21/16
- Add Travis-CI integration. *Thanks to Richard Lincoln.*