Skip to content

Commit

Permalink
Release 8.0b1
Browse files Browse the repository at this point in the history
  • Loading branch information
rdzman committed Dec 22, 2022
1 parent a98a118 commit 8b7c500
Show file tree
Hide file tree
Showing 13 changed files with 1,044 additions and 666 deletions.
223 changes: 115 additions & 108 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,140 +10,147 @@ For change history for [MP-Opt-Model][27], see [mp-opt-model/CHANGES.md](mp-opt-
For change history for [MOST][3], see [most/CHANGES.md](most/CHANGES.md).


Changes since 7.1
-----------------
Version 8.0b1 - *Dec 22, 2022*
------------------------------

#### 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`.
- 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.
- 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)`.
- 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
- 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()`)
- 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.*
- 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.
- 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.
- 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.
- 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)**.
- 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.*
- 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.
- 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.
- 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`.
- 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.
- 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
Expand Down Expand Up @@ -179,8 +186,8 @@ Changes since 7.1
user callback function.

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


Version 7.1 - *Oct 8, 2020*
Expand Down
1 change: 1 addition & 0 deletions docker/MATPOWER-Docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ GitHub repositories.
| **_release versions_** | | |
| `latest` | _current release_ | _current release_ |
| `<X.Y>c` | _X.Y_ | _current release_ |
| `8.0b1` | 8.0b1 | 7.3.0 |
| `7.1` | 7.1 | 5.2.0 |
| `7.0` | 7.0 | 5.1.0 |
| `6.0` | 6.0 | 4.2.2 |
Expand Down
2 changes: 2 additions & 0 deletions docker/build_matpower_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ docker build --build-arg VER=6.0 --build-arg WARN=1 --build-arg PATCH_PSSE=1 -f
## with contemporary Octave version
docker build --build-arg MP_SRC=github --build-arg BRANCH=7.0 --build-arg BASE_TAG=5.1.0 -f docker/Dockerfile -t matpower/matpower:7.0 .
docker build --build-arg MP_SRC=github --build-arg BRANCH=7.1 --build-arg BASE_TAG=5.2.0 -f docker/Dockerfile -t matpower/matpower:7.1 .
docker build --build-arg MP_SRC=github --build-arg BRANCH=8.0b1 --build-arg BASE_TAG=7.3.0 -f docker/Dockerfile -t matpower/matpower:8.0b1 .
## with current (latest) Octave version
docker build --build-arg MP_SRC=github --build-arg BRANCH=7.0 --build-arg WARN=1 -f docker/Dockerfile -t matpower/matpower:7.0c .
docker build --build-arg MP_SRC=github --build-arg BRANCH=7.1 --build-arg PATCH_MOST_TEST=1 -f docker/Dockerfile -t matpower/matpower:7.1c .
docker build --build-arg MP_SRC=github --build-arg BRANCH=8.0b1 --build-arg PATCH_MOST_TEST=1 -f docker/Dockerfile -t matpower/matpower:8.0b1c .
# docker build --build-arg MP_SRC=github --build-arg BRANCH=7.1 --build-arg PATCH_MOST_TEST=1 -f docker/Dockerfile -t matpower/matpower:latest .
docker tag matpower/matpower:7.1c matpower/matpower:latest

Expand Down
Binary file modified docs/MATPOWER-manual.pdf
Binary file not shown.
95 changes: 95 additions & 0 deletions docs/relnotes/MATPOWER-Announce-8.0b1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
What's New in MATPOWER 8.0b1
----------------------------

#### Released Dec 22, 2022

Below are some of the highlights of the changes since version 7.1 of
MATPOWER. See the [full release notes][1] and the [`CHANGES.md`][2]
file for more details. For release notes for previous versions, see
Appendix H of the [MATPOWER User's Manual][3].


#### Major Redesign:

MATPOWER 8 introduces a major redesign and rewrite of all of the MATPOWER
internals in the form of the flexible, all-new MATPOWER object-oriented core
architecture (*MP-Core*) and new two user-level frameworks to access it.
*(Previously developed under the name [MP-Element][4] in a separate repository
at [https://github.com/MATPOWER/mp-element][4].)*

- *MP-Core* -- Provides unparalleled flexibility and customization capabilities
at all levels. Facilitates new modeling (e.g. unbalanced multiphase elements, FACTS devices, etc.), new controls (e.g. optimization of transformer taps,
PAR angles, etc.), new problem formulations, and more.
- *Flexible Framework* -- Provides new top-level functions 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 functions, facilitating use of legacy test suite.

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


#### New Features:

- [MIPS][7] 1.5 adds to `mplinsolve()` the ability to save an LU
factorization and reuse it to solve for additional right-hand sides.
- [MOST][8] 1.2 adds calculation of expected temporal locational marginal
price (TLMP), includes transitions into first period in ramping
reserves, and more.
- New options:
- New AC power flow solver based on `fsolve()` function, selected by
setting `'pf.alg'` option to `'FSOLVE'`.
- New Implicit Z-bus Gauss method power flow for distribution systems,
selected by setting `pf.alg` option to `'ZG'`.
- New functions/methods:
- `run_mp` - Top-level function for running any task (PF, CPF, OPF) with
the new MP-Core and flexible framework.
- `run_pf` - Wrapper around `run_mp` for running PF.
- `run_cpf` - Wrapper around `run_mp` for running CPF.
- `run_opf` - Wrapper around `run_mp` for running OPF.


#### New Case Files:

- Two new European case files. *Thanks to Florin Capitanescu.*


#### New Documentation:

- [MATPOWER Developer's Manual][5] -- describes the architecture of the
new MP-Core and MATPOWER flexible framework
- [*MATPOWER Technical Note 5*][6] "MP-Element: A Unified MATPOWER
Element Model, with Corresponding Functions and Derivatives"


#### Other Improvements:

- New MATPOWER Docker image (named [`matpower/matpower`][9]) is
based on the official GNU Octave image ([`gnuoctave/octave`][10]) and
is available for multiple MATPOWER and Octave versions.
- Update versions of included packages:
- MP-Test 8.0b1.
- MIPS 1.5.
- MP-Opt-Model 4.1
- MOST 1.2.
- Numerous bug fixes.


#### Incompatible Changes:

- Remove several deprecated functions, methods and options.


[1]: https://github.com/MATPOWER/matpower/blob/master/docs/relnotes/MATPOWER-Release-Notes-8.0.md
[2]: https://github.com/MATPOWER/matpower/blob/master/CHANGES.md
[3]: https://github.com/MATPOWER/matpower/blob/master/docs/MATPOWER-manual.pdf
[4]: https://github.com/MATPOWER/mp-element
[5]: https://matpower.org/documentation/dev-manual/
[6]: https://matpower.org/docs/TN5-MP-Element.pdf
[7]: https://github.com/MATPOWER/mips
[8]: https://github.com/MATPOWER/most
[9]: https://hub.docker.com/r/matpower/matpower
[10]: https://hub.docker.com/r/gnuoctave/octave
2 changes: 1 addition & 1 deletion docs/relnotes/MATPOWER-Release-Notes-7.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ previous versions, see Appendix H of the [MATPOWER User's Manual][2].
- [MP-Test][5] 7.1, with new modular, extensible `have_feature()` function
for detecting optional functionality. For more details, see the
[MP-Test 7.1 release notes][13].
- [MIPS][4] 1.4. For details, see the [MIPS 1.4 release notess][14]
- [MIPS][4] 1.4. For details, see the [MIPS 1.4 release notes][14]
*(also in Appendix C in the [MIPS User's Manual][15])*.
- Support for [OSQP][6] to solve LP and QP problems. Set option
`opf.dc.solver` to `'OSQP'` to use OSQP to solve the DC OPF. Requires the
Expand Down
Loading

0 comments on commit 8b7c500

Please sign in to comment.