Matpower

Latest version: v7.1.0.2.1.6

Safety actively analyzes 624845 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

8.0b1

------------------------------

12/22/22
- Release 8.0b1.

12/21/22
- Add MP-Core tests to `test_matpower`.
- Remove deprecated `opf.init_from_mpc` option. Use `opf.start`.

12/19/22
- Add option `exp.use_legacy_core` to bypass MP-Core and force use of
legacy core code for `runpf()`, `runcpf()`, `runopf()`.
Remove redundant `exp.mp_core` option.

12/16/22
- Use new name "MP-Core" everywhere in place of "MP-Element" and "OOP core",
including:
- `mp_element` --> `mp_core`.
- `have_feature_mp_element()` --> `have_feature_mp_core()`
- `test_mp_element()` --> `test_mp_core()`
- `mpopt.exp.mpe` --> `mpopt.exp.mp_core`
- **MASSIVE UPDATE**: Move the contents of [MP-Element][30] from its own
separate repo into the main MATPOWER code base. This introduces a major
redesign and rewrite of all of the MATPOWER internals, previously
developed under the name [MP-Element][30] in a separate repository at
[https://github.com/MATPOWER/mp-element][30]). It includes
- *MP-Core* -- New flexible object-oriented core architecture,
providing unparalleled flexibility and customization
capabilities at all levels. Built around an explicit three-layer
modeling structure, with *data*, *network*, and *mathematical* model
objects, and a *task* object to manage them.
- *Flexible Framework* -- Provides new top-level functions (note
underscores) `run_pf()`, `run_cpf()`, `run_opf()` for running
power flow (PF), continuation power flow (CPF) and optimal power
flow (OPF), along with new MATPOWER Extension API for user access
to the full customization capability of MP-Core.
- *Legacy Framework* -- Allows MP-Core modeling to be used internally
by legacy `runpf()`, `runcpf()`, `runopf()`, etc. Facilitates use of
legacy tests, but is restricted to legacy customization mechanisms.

See the new [MATPOWER Developer's Manual][34] and [MATPOWER Technical
Note 5][31] for details of the new architecture. The User's Manual has
not yet been updated for the flexible framework.

The features based on MP-Core are available under MATLAB 9.1 or
Octave 6.2 or newer, where the legacy framework uses MP-Core's new
modeling by default for:
- `rundcpf` -- DC power flow
- `rundcopf` -- DC optimal power flow
- `runpf` -- AC power flow, for all except radial and hybrid
Newton-Raphson formulations/solvers
- `runcpf` -- AC continuation power flow
- `runopf` -- AC OPF, for solvers MIPS, `fmincon`, IPOPT, and
Artelys Knitro, for all formulations

Under older versions of MATLAB or Octave, MATPOWER automatically reverts
to the legacy core code, which is still included and can also be
selected manually on newer versions with the `'exp.mp_core'` (now
`'exp.use_legacy_core'`) option or `have_feature('mp_core', 0)`.

12/14/22
- Update to [MP-Test][1] 8.0b1.
- Update to [MIPS][2] 1.5.
- Update to [MP-Opt-Model][27] 4.1.
- Update to [MOST][3] 1.2
- Remove deprecated legacy `opt_model` methods. Summary of deprecated
method names, with current alternatives in parenthesis:
- `add_constraints` (`add_lin_constraint` or `add_nln_constraint`)
- `add_costs` (`add_legacy_cost`, `add_quad_cost` or `add_nln_cost`)
- `add_vars` (`add_var`)
- `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`)
- Remove deprecated functions:
- `d2AIbr_dV2` (use `d2Abr_dV2()`)
- `d2ASbr_dV2` (use `d2Abr_dV2()`)

11/8/22
- Automatically reduce order of polynomial generator costs with higher
order coefficients equal to zero. Allows the DC OPF to solve cases,
e.g. with cubic costs where the 3rd order term is 0, such as cases
exported by PowerWorld.
*Thanks to Rajesh Mookerjee.*

9/29/22
- Silence near singular matrix warnings in some tests that began with
MATLAB R2022b.

7/27/22
- Update MP-Opt-Model to latest for compatibility with Artelys
Knitro 13.1 and later.
- Update MOST to latest to add TLMP capabilities and include ramping reserves
and constraints for the transition from the initial state into period 1.
See `most/CHANGES.md` for details.

4/8/22
- Relax some test tolerances to prevent failure with Gurobi 9.5.

3/31/22
- Add support for MATPOWER extensions in MP-Element 0.7+
*(later renamed MP-Core)**.

2/11/22
- Add option for `makePTDF()` function to use a different slack distribution
for each bus by specifying the `slack` input as a matrix. Fix bug in
existing code for this previously undocumented feature.
*Thanks to Jon Martinez Corral.*

1/25/22
- New MATPOWER Docker image (now named [`matpower/matpower`][32]) is based
on the official GNU Octave image ([`gnuoctave/octave`][33]) and is
available for multiple MATPOWER and Octave versions.

7/12/21
- A vector-valued `label` passed to `apply_changes()` now throws a useful
error.

5/17/21
- Fix generator voltage set points in `case9target` to match `case9`.

5/5/21
- Add experimental support for [MP-Element][30] *(later renamed MP-Core)*,
a new, generalized
network and element modeling layer for MATPOWER. See also [MATPOWER
Technical Note 5][31]. Documentation not yet included in User's Manual.
- If MP-Element is installed, its modeling is used by default for the
following (can be turned off with `have_feature('mp_element', 0)`):
- DC power flow
- DC optimal power flow
- AC power flow for all except radial and hybrid Newton-Raphson
formulations/solvers, including a new `'FSOLVE'` option based on
`fsolve()` function
- AC continuation power flow
- AC OPF for solvers MIPS, `fmincon`, IPOPT, and Artelys Knitro, for
all formulations
- MP-Opt-Model object is used for power flow and continuation power flow
as well as OPF and is added as `om` field to power flow and CPF
`results` struct.

4/5/21
- Fix typo in computation of CPF prediction error that had very minor
effect on adaptive step size.
- Fix incorrect initialization of CPF tangent vector that had minor
effect on tangent normalization, also effecting step size.

3/19/21
- Add two new European cases.
*Thanks to Florin Capitanescu.*
- `case60nordic` (60-bus Nordic case)
- `case8387pegase` (8387-bus PEGASE case)

2/2/21
- Initialize each power flow with the solved voltages of the previous
one when changing PV buses to PQ during Q limit enforcement.
*Thanks to Tostado-Véliz, Kamel, Jurado.*

1/5/21
- Add DC OPF tests for case with branch angle difference limits.

12/15/20
- Fixed bug affecting AC OPF initialization for cases with piecewise
linear costs and cartesian voltage representations resulting in
improved convergence for affected cases.

12/9/20
- **INCOMPATIBLE CHANGE:** Remove unused `mpopt` argument from
`opf_gen_cost_fcn()` inputs.

11/30/20
- Fix fatal bug in `int2ext()` when called with `mpopt` and an `int2ext`
user callback function.

10/27/20
- Add Implicit Z-bus Gauss power flow solver for distribution systems.
Select by setting `pf.alg` to `'ZG'`.

7.1

---------------------------

10/8/20
- Release 7.1.
- Update to [MP-Test][1] 7.1.
- Update to [MIPS][2] 1.4.
- Update to [MP-Opt-Model][27] 3.0.
- As part of moving from `have_fcn()` (now deprecated) to the new modular,
extensible replacement, `have_feature()` (in MP-Test 7.1 and later),
add feature detection functions, defining the following tags for
`have_feature()`:
- `'e4st'`
- `'minopf'`
- `'most'`
- `'pdipmopf'`
- `'regexp_split'`
- `'scpdipmopf'`
- `'sdp_pf'`
- `'smartmarket'`
- `'syngrid'`
- `'tralmopf'`
- Add support for [OSQP][29], if installed, to solve the DC OPF, by setting
`opf.dc.solver` to `'OSQP'`.

10/1/20
- **INCOMPATIBLE CHANGE:** Update `case18`, `case22`, `case69`, `case85`
and `case141` to more closely match data from original papers, thanks
in part to case files contributed by Houssem Bouchekara, et al.
Solutions for updated cases may not match exactly. See help text in
case files for details.

9/30/20
- Add 19 new distribution system cases. *Thanks to Houssem Bouchekara, et al.*
- `case10ba`
- `case12da`
- `case15da`
- `case15nbr`
- `case16am`
- `case16ci`
- `case17me`
- `case18nbr`
- `case28da`
- `case33mg`
- `case34sa`
- `case38si`
- `case51ga`
- `case51he`
- `case70da`
- `case74ds`
- `case94pi`
- `case118zh`
- `case136ma`

9/11/20
- Fix bug in `scale_load()` where only one of multiple dispatchable
loads at a bus would be scaled.
*Thanks to Christoph Funke.*

8/26/20
- Update to [MP-Opt-Model][27] 2.1.

8/20/20
- Replace content of Appendix A (MIPS) in User's Manual with
reference to MIPS User's Manual.

7/8/20
- Update to [MP-Opt-Model][27] 2.0.

5/28/20
- Reduce memory usage in `modcost()` for very large systems.
*Thanks to Christoph Funke.*

5/8/20
- Update to [MP-Opt-Model][27] 1.0.

5/1/20
- Rename `miqps_matpower()`, `nlps_matpower()`, and `qps_matpower()`
to `miqps_master()`, `nlps_master()`, and `qps_master()`, respectively,
and deprecate the original function names.

4/30/20
- Update `opf_model` for MP-Opt-Model's refactored `opt_model` class
based on the new `mp_idx_manager` base class.

4/29/20
- **INCOMPATIBLE CHANGE:** MP-Opt-Model has renamed the following
functions and modified the order of their input args so that the
MP-Opt-Model object appears first. Ideally, these would be defined
as methods of the `opt_model` class, but Octave 4.2 and earlier is
not able to find them via a function handle (as used in the
`solve()` method) if they are inherited by a subclass.
- `opf_consfcn()` --> `nlp_consfcn()`
- `opf_costfcn()` --> `nlp_costfcn()`
- `opf_hessfcn()` --> `nlp_hessfcn()`
- Move code related to solver interfaces, `opt_model` and a
few other functions like `have_fcn()` and `nested_struct_copy()`
into a separate package called [MP-Opt-Model][27], now included
(v0.8) in a separate `mp-opt-model` sub-directory.

4/28/20
- Move deprecated `opt_model` methods and code related to legacy
user-defined OPF costs from `opt_model` to `opf_model`.
- **INCOMPATIBLE CHANGE:** Modify order of default output arguments of
`opt_model/get_idx()` (again), removing the one related to legacy
costs.

4/16/20
- Add test for AC power flow for case with generator voltage setpoint
not equal to 1 p.u.
- Split power flow tests (`t_pf`) into separate ones for AC (`t_pf_ac`)
and DC (`t_pf_dc`) power flow.

3/19/20
- Remove obsolete functions whose functionality is now covered by
`nlpopf_solver()`:
- `fmincopf_solver()`
- `ipoptopf_solver()`
- `ktropf_solver()`
- `mipsopf_solver()`
- Convert `opf_execute()` to use `nlpopf_solver()` for AC OPF when
using `fmincon`, IPOPT, Artelys Knitro, or MIPS.

3/18/20
- Add `nlpopf_solver()` based on the new `solver()` method of
`opt_model`. This single function replaces `mipsopf_solver()`,
`fmincopf_solver()`, `ipoptopf_solver()`, and `ktropf_solver()`.
- Convert `dcopf_solver()` to use the new `solver()` method of
`opt_model` instead of calling `qps_matpower()` manually.
- Add new top-level wrapper function `nlps_matpower()` to provide
a standard interface for MATPOWER's nonlinear program (NLP)
solvers (`fmincon`, IPOPT, Artelys Knitro, and MIPS), with
calling syntax similar to `mips()`. It includes the ability to
pass in solver-specific input options.
- Add `nlps_fmincon()`, `nlps_ipopt()` and `nlps_knitro()`, with
interface that matches `nlps_matpower()` to handle implementation
for `fmincon`, IPOPT, and Artelys Knitro solvers, respectively.
- Add `mpopt2nlpopt()` to set up an options struct for
`nlps_matpower()` based on a MATPOWER options struct.
- Add three new methods to `opt_model` class:
- `is_mixed_integer()` - returns true if the model includes any binary
or integer variables
- `problem_type()` - returns one of the following strings, based on
the characteristics of the variables, costs and constraints in the
model:
- `'NLP'` - nonlinear program
- `'LP'` - linear program
- `'QP'` - quadratic program
- `'MILP'` - mixed-integer linear program
- `'MIQP'` - mixed-integer quadratic program
- `solve()` - solves the model using `qps_matpower()`,
`miqps_matpower()`, or `nlps_matpower()`, depending on the problem
type (`'MINLP'` problems are not yet implemented)

3/12/20
- Fix bug in `ktropf_solver()` where Artelys Knitro was still using
`fmincon` options.

3/6/20
- Fix issue with missing objective function value from `miqps_mosek()`
and `qps_mosek()` when return status is "Stalled at or near optimal
solution."

3/4/20
- Remove unused input arguments from `opf_consfcn()` and `opf_hessfcn()`.

2/28/20
- Fix [bug 89][26] where running a power flow with `pf.enforce_q_lims`
enabled and voltage dependent ZIP loads produced incorrect results.
*Thanks to Florian.*

2/27/20
- Add `copy()` method to `opt_model` class to get around issues
with inheritance in constructors that was preventing copy constructor
from working in Octave 5.2 and earlier (see also [Octave bug
52614](https://savannah.gnu.org/bugs/?52614).

2/26/20
- Significant performance improvement for CPLEX on small problems by
eliminating call to `cplexoptimset()`, which was a huge bottleneck.
- Fix CPLEX 12.10 compatibility [issue 90][25].

2/20/20
- Add to `makePTDF()` the option to compute shift factors very
efficiently for specific transfers or specific buses only.
- Performance improvement for `makePTDF()` for large cases,
e.g. 70%+ improvement on `case9241pegase`.

2/18/20
- Artelys Knitro 12.1 compatibility fix.

11/18/19
- Add GitHub Actions CI workflow with testing under Octave 4.2.2
on Linux (with IPOPT) and Octave 5.1.0 on macOS (w/o IPOPT). Expand
Travis CI to include testing under macOS. Travis CI and GitHub Actions
CI are redudant and one will eventually be removed.

10/15/19
- Move original implementation of Newton power flow for cartesian
voltage representations to `newtonpf_S_hybrid()` and
`newtonpf_I_hybrid()`, accessible by setting the `pf.v_cartesian`
option to 2. The `pf.alg` option can also be set to `'NR-SH'` or
`'NR-IH'`, respectively, as shortcuts to select these formulations.
- Improve robustness of these hybrid Newton power flow formulations to
avoid ill-conditioning when the real part of the voltage approaches
zero.
- The `pf.alg` option now accepts `'NR-SP'` as a shortcut for Newton's
method with with the default power/polar formulation.
- Redesign implementation of Newton power flow for cartesian
voltage representations to use standard Newton method with explicit
voltage magnitude constraints at PV buses. This method is slower
(larger number of equations and unknowns) but appears to be more
reliable in some cases than the original implementation, which was
a hybrid approach by Sereeter that used a modified Newton method
to compute polar voltage updates using a modified cartesian Jacobian.

10/11/19
- Modify voltage limit constraints for cartesian AC OPF formulation
to use voltage squared, resulting in simpler derivatives.

8/21/19
- Fix OPF [issue 71][24] for IPOPT and Knitro where structure of
Jacobian and/or Hessian could change from the structure provided
(i.e. elements with value of zero were being eliminated from the
sparsity structure).
*Thanks to Drosos Kourounis.*

8/16/19
- Fix [issue 77][23] where incorrect indexing could cause fatal error
in OPF with additional nonlinear constraints.
*Thanks to Sergio Garcia.*

8/15/19
- Improve performance of `opt_model/add_named_set()`.
(See [issue 79][22].)
*Thanks to Baraa Mohandes.*
- Refactor code in `opt_model/params_lin_constraint()` and
`opt_model/params_quad_cost()` to speed up sparse matrix construction
when there are lots of constraint or cost sets. Results in significant
speedups for some problems during problem setup in MOST.
(See [pull request 70][21].)
*Thanks to Daniel Muldrew.*
- Remove `active-set` algorithm in `t_opf_dc_ot` for certain versions
of MATLAB (e.g. R2013b on Mac) to avoid triggering fatal MATLAB bug.

7.0

----------------------------

6/20/19
- Release 7.0.
- Add `CITATION` file.
- Other miscellaneous documentation updates, e.g. MATPOWER website
links updated to https://matpower.org, separate references for
MATPOWER software and User's Manual, with DOIs.

6/5/19
- **INCOMPATIBLE CHANGE:** Fix [issue 60][20] by adding missing
generator at slack bus in RTE cases. Affects the following cases:
- `case1888rte`
- `case1951rte`
- `case2848rte`
- `case2868rte`
- `case6468rte`
- `case6470rte`
- `case6495rte`
- `case6515rte`
*Thanks to Jean Maeght.*

5/30/19
- Add `'clear_cache'` options to `have_fcn()` to facilitate re-checking
for optional functionality after changes to the MATLAB/Octave path.
See [issue 65][19].
- Add tests for `have_fcn()`.

5/29/19
- Fix errors caused by running `test_matpower` with YALMIP present
but not MOSEK, SeDuMi or SDPT3.

5/23/19
- Treat MOSEK `'OPTIMAL'` solution as successful even if return code is
`MSK_RES_TRM_STALL` in `qps_mosek()` and `miqps_mosek()`.

5/22/19
- Fix bug in `have_fcn()` where it would incorrectly mark Gurobi as
available even if it had an expired license or failed for some other
reason.

2/26/19
- **INCOMPATIBLE CHANGE:** Eliminate unnecessary reordering of on-line
generators (sorted by increasing bus index) from `ext2int`. The
order is now left unmodified by `ext2int`. This change should only
affect user code that explicitly depends on the order of generators with
internal numbering (hopefully quite rare).

2/22/19
- Clarify in manual and `printpf` output that units on branch current
limits and outputs (i.e. when `opf.flow_lim` is `'I'`) are kA * basekV.
*Thanks to Maurice.*

2/21/19
- Add three new variants of the standard Newton AC power flow, for a total
of four, including both nodal power and current balance equations and
both polar and cartesian representations of voltage. See the new
`pf.current_balance` and `pf.v_cartesian` options.
*Thanks to Baljinnyam Sereeter.*

2/15/19
- Branches 86--87, 68--116 in `case118` changed from transmission lines
(tap ratio = 0) to transformers (tap ratio = 1) for consistency with
bus base voltages.
*Thanks to Drosos Kourounis.*

2/11/19
- Clean up and reorganize power flow tests in `t_pf`.

2/1/19
- Add a `Dockerfile` used to auto-build the Docker image tagged
[`matpower/matpower-desktop`][17] on Docker Hub. This image provides
a pre-packaged Ubuntu desktop environment with Octave, MATPOWER
and the MATPOWER Extras all pre-installed. See the
[`docker/MATPOWER-Docker.md`][18] page for more details.
*Thanks to Richard Lincoln.*

1/17/19
- Fix [bug 57][16] where `save2psse()` always used 1 for the CKT
number, even for parallel branches or transformers.
*Thanks to Amin Gholami.*

1/17/19
- Fix [bug 56][15] where `save2psse()` was missing entries for two
transformer columns (`VMA1` and `VMI1`).
*Thanks to Amin Gholami.*

1/16/19
- Add option for `install_matpower()` to (non-interactively) uninstall
MATPOWER, i.e. remove MATPOWER directories from MATLAB/Octave path.

1/14/19
- Enable YALMIP, SeDuMi and SDPT3 to be properly recognized under
Octave.
*Thanks to Richard Lincoln.*

11/29/18
- Improve performance of `makeYbus()` based on [issue 52][14].
*Thanks to Binbin Chen.*

11/26/18
- Fix [bug 53][13] where certain OPF cases (e.g. `case33bw`) resulted in
a fatal error under versions of MATLAB prior to R2016b (v9.1).
*Thanks to Jane Cheung.*

11/9/18
- Add support for IPOPT solver under Octave, including in the
Travis-CI testing.
*Thanks to Richard Lincoln.*

7.0b1

------------------------------

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.*

6.0

----------------------------

12/16/16
- Released 6.0.
- Moved development to GitHub: <https://github.com/MATPOWER/matpower>.

12/15/16
- Added `case33bw.m`, a 33-bus radial distribution system from Baran and Wu
based on case originally provided by Haneen Aburub.

12/9/16
- Bumped MIPS version to 1.2.2.
- Renamed MIPS from MATLAB Interior Point Solver to MATPOWER Interior
Point Solver.

12/6/16
- Remove dependence of `t_mpsolve()` on presence of `have_fcn()` to
detect PARDISO installation.
- Remove dependence of `mpver()` on presence of `mostver()`.

6.0b2

-----------------------------

11/1/16
- Released 6.0b2.

10/28/16
- Added new general event handling mechanism to continuation power flow
(CPF), including handling of generator real and reactive power limits.

10/26/16
- Include support for MOSEK 8, some algorithms eliminated, others changed
algorithm code set via `mosek.lp_alg` option.

10/19/16
- Improved robustness of infeasibility detection when `pf.enforce_q_lims`
option is used.
- Add tests for power flow with `pf.enforce_q_lims` option.

10/14/16
- Fixed bugs in AC OPF solver code for fmincon, IPOPT, and Knitro
involving shadow prices on variable bounds, when upper and lower bounds
are equal (such as a voltage magnitude setpoint when `opf.use_vg` is 1).
In IPOPT the prices are missing, and Knitro and fmincon can both return
negative prices on the wrong constraint.

10/13/16
- Added `opf.use_vg` option to provide a convenient way to have the
OPF respect the generator voltage setpoints specified in the gen
matrix.

10/4/16
- Improve backward compatibility of `mpoption()`, allow it to handle
old-style option vectors from earlier versions of MATPOWER, namely
3.2 and 4.0, and to accept on old style options vector with new-style
name/value pair option overrides.
- **INCOMPATIBLE CHANGE:** Remove `cpf.user_callback_args` option and
modify `cpf.user_callback` to allow for structs defining callback
priority and args, in addition to just callback function name.
- Add user options for setting tolerances for target lambda detection
and nose point detection, `cpf.target_lam_tol` and `cpf.nose_tol`,
respectively.

9/27/16
- **INCOMPATIBLE CHANGE:** Changed name of `cpf.error_tol` option to
`cpf.adapt_step_tol`.

9/22/16
- Update tests for compatibility with Optimization Toolbox 7.5 (R2016b),
which removes `active-set` algorithm for `quadprog()` and `active-set`
and `simplex` for `linprog()`.
- Fix fatal error when using some SDP_PF functions when CPLEX is not
installed.

9/19/16
- Fix dimension bug in `makeBdc()` when last bus is not connected (should
never happen if bus is properly marked as type `NONE`). *Thanks to
Samuel Perkin.*

8/15/16
- Fix a harmless bug in `opt_model` where variable, constraint and
cost sets indexed by a single variable would allocate a square
matrix of starting and ending indices, rather than a simple vector.
*Thanks to Alberto Lamadrid for catching this.*

7/18/16
- Extract computation of tangent vector from `cpf_predictor()` into
`cpf_tangent()`, and call sequentially as needed.

7/11/16
- Add step size to CPF callback args and results logging.
- Add option `cpf.adapt_step_damping` to control oscillations in
adaptive step size control for continuation power flow.

7/8/16
- Updated network reduction code to handle cases with radially connected
external buses.

7/1/16
- Fix bug in `cpf_default_callback()` that sometimes resulted in plotting
voltage at different buses for different parts of the curve when the
bus was not explicitly specified with the `cpf.plot.bus` option.

6/23/16
- Bad bus numbers no longer cause a fatal error (after reporting the
bad bus numbers) in `case_info()`.
- Updated versions of `qcqp_opf()` and `qcqp_opf()` in `extras/misc`, from
Cedric Josz.

6/10/16
- Fix bug in `savecase()` where single quotes were not escaped properly
in bus names.
- Generator capability curve parameters that define a zero-reactive
power line no longer cause a fatal error.

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.