Skip to content

Commit 8b7c500

Browse files
committed
Release 8.0b1
1 parent a98a118 commit 8b7c500

13 files changed

+1044
-666
lines changed

CHANGES.md

+115-108
Original file line numberDiff line numberDiff line change
@@ -10,140 +10,147 @@ For change history for [MP-Opt-Model][27], see [mp-opt-model/CHANGES.md](mp-opt-
1010
For change history for [MOST][3], see [most/CHANGES.md](most/CHANGES.md).
1111

1212

13-
Changes since 7.1
14-
-----------------
13+
Version 8.0b1 - *Dec 22, 2022*
14+
------------------------------
15+
16+
#### 12/22/22
17+
- Release 8.0b1.
1518

1619
#### 12/21/22
17-
- Add MP-Core tests to `test_matpower`.
18-
- Remove deprecated `opf.init_from_mpc` option. Use `opf.start`.
20+
- Add MP-Core tests to `test_matpower`.
21+
- Remove deprecated `opf.init_from_mpc` option. Use `opf.start`.
1922

2023
#### 12/19/22
21-
- Add option `exp.use_legacy_core` to bypass MP-Core and force use of
22-
legacy core code for `runpf()`, `runcpf()`, `runopf()`.
23-
Remove redundant `exp.mp_core` option.
24+
- Add option `exp.use_legacy_core` to bypass MP-Core and force use of
25+
legacy core code for `runpf()`, `runcpf()`, `runopf()`.
26+
Remove redundant `exp.mp_core` option.
2427

2528
#### 12/16/22
26-
- Use new name "MP-Core" everywhere in place of "MP-Element" and "OOP core",
27-
including:
28-
- `mp_element` --> `mp_core`.
29-
- `have_feature_mp_element()` --> `have_feature_mp_core()`
30-
- `test_mp_element()` --> `test_mp_core()`
31-
- `mpopt.exp.mpe` --> `mpopt.exp.mp_core`
32-
- **MASSIVE UPDATE**: Move the contents of [MP-Element][30] from its own
33-
separate repo into the main MATPOWER code base. This introduces a major
34-
redesign and rewrite of all of the MATPOWER internals, previously
35-
developed under the name [MP-Element][30] in a separate repository at
36-
[https://github.com/MATPOWER/mp-element][30]). It includes
37-
- *MP-Core* -- New flexible object-oriented core architecture,
38-
providing unparalleled flexibility and customization
39-
capabilities at all levels. Built around an explicit three-layer
40-
modeling structure, with *data*, *network*, and *mathematical* model
41-
objects, and a *task* object to manage them.
42-
- *Flexible Framework* -- Provides new top-level functions (note
43-
underscores) `run_pf()`, `run_cpf()`, `run_opf()` for running
44-
power flow (PF), continuation power flow (CPF) and optimal power
45-
flow (OPF), along with new MATPOWER Extension API for user access
46-
to the full customization capability of MP-Core.
47-
- *Legacy Framework* -- Allows MP-Core modeling to be used internally
48-
by legacy `runpf()`, `runcpf()`, `runopf()`, etc. Facilitates use of
49-
legacy tests, but is restricted to legacy customization mechanisms.
50-
51-
See the new [MATPOWER Developer's Manual][34] and [MATPOWER Technical
52-
Note 5][31] for details of the new architecture. The User's Manual has
53-
not yet been updated for the flexible framework.
54-
55-
The features based on MP-Core are available under MATLAB 9.1 or
56-
Octave 6.2 or newer, where the legacy framework uses MP-Core's new
57-
modeling by default for:
58-
- `rundcpf` -- DC power flow
59-
- `rundcopf` -- DC optimal power flow
60-
- `runpf` -- AC power flow, for all except radial and hybrid
61-
Newton-Raphson formulations/solvers
62-
- `runcpf` -- AC continuation power flow
63-
- `runopf` -- AC OPF, for solvers MIPS, `fmincon`, IPOPT, and
64-
Artelys Knitro, for all formulations
65-
66-
Under older versions of MATLAB or Octave, MATPOWER automatically reverts
67-
to the legacy core code, which is still included and can also be
68-
selected manually on newer versions with the `'exp.mp_core'` (now
69-
`'exp.use_legacy_core'`) option or `have_feature('mp_core', 0)`.
29+
- Use new name "MP-Core" everywhere in place of "MP-Element" and "OOP core",
30+
including:
31+
- `mp_element` --> `mp_core`.
32+
- `have_feature_mp_element()` --> `have_feature_mp_core()`
33+
- `test_mp_element()` --> `test_mp_core()`
34+
- `mpopt.exp.mpe` --> `mpopt.exp.mp_core`
35+
- **MASSIVE UPDATE**: Move the contents of [MP-Element][30] from its own
36+
separate repo into the main MATPOWER code base. This introduces a major
37+
redesign and rewrite of all of the MATPOWER internals, previously
38+
developed under the name [MP-Element][30] in a separate repository at
39+
[https://github.com/MATPOWER/mp-element][30]). It includes
40+
- *MP-Core* -- New flexible object-oriented core architecture,
41+
providing unparalleled flexibility and customization
42+
capabilities at all levels. Built around an explicit three-layer
43+
modeling structure, with *data*, *network*, and *mathematical* model
44+
objects, and a *task* object to manage them.
45+
- *Flexible Framework* -- Provides new top-level functions (note
46+
underscores) `run_pf()`, `run_cpf()`, `run_opf()` for running
47+
power flow (PF), continuation power flow (CPF) and optimal power
48+
flow (OPF), along with new MATPOWER Extension API for user access
49+
to the full customization capability of MP-Core.
50+
- *Legacy Framework* -- Allows MP-Core modeling to be used internally
51+
by legacy `runpf()`, `runcpf()`, `runopf()`, etc. Facilitates use of
52+
legacy tests, but is restricted to legacy customization mechanisms.
53+
54+
See the new [MATPOWER Developer's Manual][34] and [MATPOWER Technical
55+
Note 5][31] for details of the new architecture. The User's Manual has
56+
not yet been updated for the flexible framework.
57+
58+
The features based on MP-Core are available under MATLAB 9.1 or
59+
Octave 6.2 or newer, where the legacy framework uses MP-Core's new
60+
modeling by default for:
61+
- `rundcpf` -- DC power flow
62+
- `rundcopf` -- DC optimal power flow
63+
- `runpf` -- AC power flow, for all except radial and hybrid
64+
Newton-Raphson formulations/solvers
65+
- `runcpf` -- AC continuation power flow
66+
- `runopf` -- AC OPF, for solvers MIPS, `fmincon`, IPOPT, and
67+
Artelys Knitro, for all formulations
68+
69+
Under older versions of MATLAB or Octave, MATPOWER automatically reverts
70+
to the legacy core code, which is still included and can also be
71+
selected manually on newer versions with the `'exp.mp_core'` (now
72+
`'exp.use_legacy_core'`) option or `have_feature('mp_core', 0)`.
7073

7174
#### 12/14/22
72-
- Remove deprecated legacy `@opt_model` methods. Summary of deprecated
73-
method names, with current alternatives in parenthesis:
74-
- `add_constraints` (`add_lin_constraint` or `add_nln_constraint`)
75-
- `add_costs` (`add_legacy_cost`, `add_quad_cost` or `add_nln_cost`)
76-
- `add_vars` (`add_var`)
77-
- `build_cost_params` (no longer needed)
78-
- `compute_cost` (`eval_legacy_cost`)
79-
- `get_cost_params` (`params_legacy_cost`)
80-
- `getv` (`params_var`)
81-
- `linear_constraints` (`params_lin_constraint`)
82-
- Remove deprecated functions:
83-
- `d2AIbr_dV2` (use `d2Abr_dV2()`)
84-
- `d2ASbr_dV2` (use `d2Abr_dV2()`)
75+
- Update to [MP-Test][1] 8.0b1.
76+
- Update to [MIPS][2] 1.5.
77+
- Update to [MP-Opt-Model][27] 4.1.
78+
- Update to [MOST][3] 1.2
79+
- Remove deprecated legacy `@opt_model` methods. Summary of deprecated
80+
method names, with current alternatives in parenthesis:
81+
- `add_constraints` (`add_lin_constraint` or `add_nln_constraint`)
82+
- `add_costs` (`add_legacy_cost`, `add_quad_cost` or `add_nln_cost`)
83+
- `add_vars` (`add_var`)
84+
- `build_cost_params` (no longer needed)
85+
- `compute_cost` (`eval_legacy_cost`)
86+
- `get_cost_params` (`params_legacy_cost`)
87+
- `getv` (`params_var`)
88+
- `linear_constraints` (`params_lin_constraint`)
89+
- Remove deprecated functions:
90+
- `d2AIbr_dV2` (use `d2Abr_dV2()`)
91+
- `d2ASbr_dV2` (use `d2Abr_dV2()`)
8592

8693
#### 11/8/22
87-
- Automatically reduce order of polynomial generator costs with higher
88-
order coefficients equal to zero. Allows the DC OPF to solve cases,
89-
e.g. with cubic costs where the 3rd order term is 0, such as cases
90-
exported by PowerWorld.
91-
*Thanks to Rajesh Mookerjee.*
94+
- Automatically reduce order of polynomial generator costs with higher
95+
order coefficients equal to zero. Allows the DC OPF to solve cases,
96+
e.g. with cubic costs where the 3rd order term is 0, such as cases
97+
exported by PowerWorld.
98+
*Thanks to Rajesh Mookerjee.*
9299

93100
#### 9/29/22
94-
- Silence near singular matrix warnings in some tests that began with
95-
MATLAB R2022b.
101+
- Silence near singular matrix warnings in some tests that began with
102+
MATLAB R2022b.
96103

97104
#### 7/27/22
98-
- Update MP-Opt-Model to latest for compatibility with Artelys
99-
Knitro 13.1 and later.
100-
- Update MOST to latest to add TLMP capabilities and include ramping reserves
101-
and constraints for the transition from the initial state into period 1.
102-
See `most/CHANGES.md` for details.
105+
- Update MP-Opt-Model to latest for compatibility with Artelys
106+
Knitro 13.1 and later.
107+
- Update MOST to latest to add TLMP capabilities and include ramping reserves
108+
and constraints for the transition from the initial state into period 1.
109+
See `most/CHANGES.md` for details.
103110

104111
#### 4/8/22
105-
- Relax some test tolerances to prevent failure with Gurobi 9.5.
112+
- Relax some test tolerances to prevent failure with Gurobi 9.5.
106113

107114
#### 3/31/22
108-
- Add support for MATPOWER extensions in MP-Element 0.7+
109-
*(later renamed MP-Core)**.
115+
- Add support for MATPOWER extensions in MP-Element 0.7+
116+
*(later renamed MP-Core)**.
110117

111118
#### 2/11/22
112-
- Add option for `makePTDF()` function to use a different slack distribution
113-
for each bus by specifying the `slack` input as a matrix. Fix bug in
114-
existing code for this previously undocumented feature.
115-
*Thanks to Jon Martinez Corral.*
119+
- Add option for `makePTDF()` function to use a different slack distribution
120+
for each bus by specifying the `slack` input as a matrix. Fix bug in
121+
existing code for this previously undocumented feature.
122+
*Thanks to Jon Martinez Corral.*
116123

117124
#### 1/25/22
118-
- New MATPOWER Docker image (now named [`matpower/matpower`][32]) is based
119-
on the official GNU Octave image ([`gnuoctave/octave`][33]) and is
120-
available for multiple MATPOWER and Octave versions.
125+
- New MATPOWER Docker image (now named [`matpower/matpower`][32]) is based
126+
on the official GNU Octave image ([`gnuoctave/octave`][33]) and is
127+
available for multiple MATPOWER and Octave versions.
121128

122129
#### 7/12/21
123-
- A vector-valued `label` passed to `apply_changes()` now throws a useful
124-
error.
130+
- A vector-valued `label` passed to `apply_changes()` now throws a useful
131+
error.
125132

126133
#### 5/17/21
127-
- Fix generator voltage set points in `case9target` to match `case9`.
134+
- Fix generator voltage set points in `case9target` to match `case9`.
128135

129136
#### 5/5/21
130-
- Add experimental support for [MP-Element][30] *(later renamed MP-Core)*,
131-
a new, generalized
132-
network and element modeling layer for MATPOWER. See also [MATPOWER
133-
Technical Note 5][31]. Documentation not yet included in User's Manual.
134-
- If MP-Element is installed, its modeling is used by default for the
135-
following (can be turned off with `have_feature('mp_element', 0)`):
136-
- DC power flow
137-
- DC optimal power flow
138-
- AC power flow for all except radial and hybrid Newton-Raphson
139-
formulations/solvers, including a new `'FSOLVE'` option based on
140-
`fsolve()` function
141-
- AC continuation power flow
142-
- AC OPF for solvers MIPS, `fmincon`, IPOPT, and Artelys Knitro, for
143-
all formulations
144-
- MP-Opt-Model object is used for power flow and continuation power flow
145-
as well as OPF and is added as `om` field to power flow and CPF
146-
`results` struct.
137+
- Add experimental support for [MP-Element][30] *(later renamed MP-Core)*,
138+
a new, generalized
139+
network and element modeling layer for MATPOWER. See also [MATPOWER
140+
Technical Note 5][31]. Documentation not yet included in User's Manual.
141+
- If MP-Element is installed, its modeling is used by default for the
142+
following (can be turned off with `have_feature('mp_element', 0)`):
143+
- DC power flow
144+
- DC optimal power flow
145+
- AC power flow for all except radial and hybrid Newton-Raphson
146+
formulations/solvers, including a new `'FSOLVE'` option based on
147+
`fsolve()` function
148+
- AC continuation power flow
149+
- AC OPF for solvers MIPS, `fmincon`, IPOPT, and Artelys Knitro, for
150+
all formulations
151+
- MP-Opt-Model object is used for power flow and continuation power flow
152+
as well as OPF and is added as `om` field to power flow and CPF
153+
`results` struct.
147154

148155
#### 4/5/21
149156
- Fix typo in computation of CPF prediction error that had very minor
@@ -179,8 +186,8 @@ Changes since 7.1
179186
user callback function.
180187

181188
#### 10/27/20
182-
- Add Implicit Z-bus Gauss power flow solver for distribution systems.
183-
Select by setting `pf.alg` to `'ZG'`.
189+
- Add Implicit Z-bus Gauss power flow solver for distribution systems.
190+
Select by setting `pf.alg` to `'ZG'`.
184191

185192

186193
Version 7.1 - *Oct 8, 2020*

docker/MATPOWER-Docker.md

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ GitHub repositories.
105105
| **_release versions_** | | |
106106
| `latest` | _current release_ | _current release_ |
107107
| `<X.Y>c` | _X.Y_ | _current release_ |
108+
| `8.0b1` | 8.0b1 | 7.3.0 |
108109
| `7.1` | 7.1 | 5.2.0 |
109110
| `7.0` | 7.0 | 5.1.0 |
110111
| `6.0` | 6.0 | 4.2.2 |

docker/build_matpower_images.sh

+2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ docker build --build-arg VER=6.0 --build-arg WARN=1 --build-arg PATCH_PSSE=1 -f
3434
## with contemporary Octave version
3535
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 .
3636
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 .
37+
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 .
3738
## with current (latest) Octave version
3839
docker build --build-arg MP_SRC=github --build-arg BRANCH=7.0 --build-arg WARN=1 -f docker/Dockerfile -t matpower/matpower:7.0c .
3940
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 .
41+
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 .
4042
# 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 .
4143
docker tag matpower/matpower:7.1c matpower/matpower:latest
4244

docs/MATPOWER-manual.pdf

56.9 KB
Binary file not shown.
+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
What's New in MATPOWER 8.0b1
2+
----------------------------
3+
4+
#### Released Dec 22, 2022
5+
6+
Below are some of the highlights of the changes since version 7.1 of
7+
MATPOWER. See the [full release notes][1] and the [`CHANGES.md`][2]
8+
file for more details. For release notes for previous versions, see
9+
Appendix H of the [MATPOWER User's Manual][3].
10+
11+
12+
#### Major Redesign:
13+
14+
MATPOWER 8 introduces a major redesign and rewrite of all of the MATPOWER
15+
internals in the form of the flexible, all-new MATPOWER object-oriented core
16+
architecture (*MP-Core*) and new two user-level frameworks to access it.
17+
*(Previously developed under the name [MP-Element][4] in a separate repository
18+
at [https://github.com/MATPOWER/mp-element][4].)*
19+
20+
- *MP-Core* -- Provides unparalleled flexibility and customization capabilities
21+
at all levels. Facilitates new modeling (e.g. unbalanced multiphase elements, FACTS devices, etc.), new controls (e.g. optimization of transformer taps,
22+
PAR angles, etc.), new problem formulations, and more.
23+
- *Flexible Framework* -- Provides new top-level functions for running power
24+
flow (PF), continuation power flow (CPF) and optimal power flow (OPF), along
25+
with new MATPOWER Extension API for user access to the full customization
26+
capability of MP-Core.
27+
- *Legacy Framework* -- Allows MP-Core modeling to be used internally by
28+
legacy functions, facilitating use of legacy test suite.
29+
30+
See the new [MATPOWER Developer's Manual][5] and [*MATPOWER Technical
31+
Note 5*][6] for details of the new architecture. The User's Manual has
32+
not yet been updated for the flexible framework.
33+
34+
35+
#### New Features:
36+
37+
- [MIPS][7] 1.5 adds to `mplinsolve()` the ability to save an LU
38+
factorization and reuse it to solve for additional right-hand sides.
39+
- [MOST][8] 1.2 adds calculation of expected temporal locational marginal
40+
price (TLMP), includes transitions into first period in ramping
41+
reserves, and more.
42+
- New options:
43+
- New AC power flow solver based on `fsolve()` function, selected by
44+
setting `'pf.alg'` option to `'FSOLVE'`.
45+
- New Implicit Z-bus Gauss method power flow for distribution systems,
46+
selected by setting `pf.alg` option to `'ZG'`.
47+
- New functions/methods:
48+
- `run_mp` - Top-level function for running any task (PF, CPF, OPF) with
49+
the new MP-Core and flexible framework.
50+
- `run_pf` - Wrapper around `run_mp` for running PF.
51+
- `run_cpf` - Wrapper around `run_mp` for running CPF.
52+
- `run_opf` - Wrapper around `run_mp` for running OPF.
53+
54+
55+
#### New Case Files:
56+
57+
- Two new European case files. *Thanks to Florin Capitanescu.*
58+
59+
60+
#### New Documentation:
61+
62+
- [MATPOWER Developer's Manual][5] -- describes the architecture of the
63+
new MP-Core and MATPOWER flexible framework
64+
- [*MATPOWER Technical Note 5*][6] "MP-Element: A Unified MATPOWER
65+
Element Model, with Corresponding Functions and Derivatives"
66+
67+
68+
#### Other Improvements:
69+
70+
- New MATPOWER Docker image (named [`matpower/matpower`][9]) is
71+
based on the official GNU Octave image ([`gnuoctave/octave`][10]) and
72+
is available for multiple MATPOWER and Octave versions.
73+
- Update versions of included packages:
74+
- MP-Test 8.0b1.
75+
- MIPS 1.5.
76+
- MP-Opt-Model 4.1
77+
- MOST 1.2.
78+
- Numerous bug fixes.
79+
80+
81+
#### Incompatible Changes:
82+
83+
- Remove several deprecated functions, methods and options.
84+
85+
86+
[1]: https://github.com/MATPOWER/matpower/blob/master/docs/relnotes/MATPOWER-Release-Notes-8.0.md
87+
[2]: https://github.com/MATPOWER/matpower/blob/master/CHANGES.md
88+
[3]: https://github.com/MATPOWER/matpower/blob/master/docs/MATPOWER-manual.pdf
89+
[4]: https://github.com/MATPOWER/mp-element
90+
[5]: https://matpower.org/documentation/dev-manual/
91+
[6]: https://matpower.org/docs/TN5-MP-Element.pdf
92+
[7]: https://github.com/MATPOWER/mips
93+
[8]: https://github.com/MATPOWER/most
94+
[9]: https://hub.docker.com/r/matpower/matpower
95+
[10]: https://hub.docker.com/r/gnuoctave/octave

docs/relnotes/MATPOWER-Release-Notes-7.1.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ previous versions, see Appendix H of the [MATPOWER User's Manual][2].
3434
- [MP-Test][5] 7.1, with new modular, extensible `have_feature()` function
3535
for detecting optional functionality. For more details, see the
3636
[MP-Test 7.1 release notes][13].
37-
- [MIPS][4] 1.4. For details, see the [MIPS 1.4 release notess][14]
37+
- [MIPS][4] 1.4. For details, see the [MIPS 1.4 release notes][14]
3838
*(also in Appendix C in the [MIPS User's Manual][15])*.
3939
- Support for [OSQP][6] to solve LP and QP problems. Set option
4040
`opf.dc.solver` to `'OSQP'` to use OSQP to solve the DC OPF. Requires the

0 commit comments

Comments
 (0)