Skip to content

Commit 080b1ed

Browse files
committed
Release 4.2
1 parent d48160f commit 080b1ed

12 files changed

Lines changed: 168 additions & 94 deletions

File tree

CHANGES.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ Change history for MP-Opt-Model
22
===============================
33

44

5-
Since version 4.1
6-
-----------------
5+
Version 4.2 - *May 10, 2024*
6+
----------------------------
7+
8+
#### 5/10/24
9+
- Release 4.2.
710

811
#### 4/23/24
912
- Fix bug in test `t_opt_model()` for MATLAB R2011b and earlier.
@@ -20,6 +23,9 @@ Since version 4.1
2023
`opt_model.set_params()`.
2124
- Add caching of aggregate output parameters in `opt_model.params_var()`.
2225

26+
#### 3/26/24
27+
- Add Sphinx-based [Reference documentation][13].
28+
2329
#### 3/21/24
2430
- Add to the `parse_soln()` method of `opt_model` an optional `stash`
2531
input argument that, if present and true, causes the parsed solution
@@ -34,7 +40,7 @@ Since version 4.1
3440
been renamed to architecture-specific names along with an `ipopt.m`
3541
wrapper function to call the appropriate one.
3642
*Thanks to Carlos Murillo-Sánchez.*
37-
_**Note:** While MATPOWER no longer requires this, my recommendation
43+
_**Note:** While MP-Opt-Model no longer requires this, my recommendation
3844
is still to simply rename the MEX file to `ipopt.<mexext>`, with the
3945
appropriate architecture-specific extension, and delete the
4046
unnecessary `ipopt.m` entirely._
@@ -503,3 +509,4 @@ Version 0.7.0 - *Jun 20, 2019*
503509
[10]: https://savannah.gnu.org/bugs/?52614
504510
[11]: https://github.com/MATPOWER/most
505511
[12]: https://github.com/ebertolazzi/mexIPOPT
512+
[13]: https://matpower.org/doc/mpom/

CITATION

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
We request that publications derived from the use of MP-Opt-Model
22
explicitly acknowledge that fact by citing the MP-Opt-Model User's
33
Manual. The citation and DOI can be version-specific or general, as
4-
appropriate. For version 4.1, use:
4+
appropriate. For version 4.2, use:
55

6-
R. D. Zimmerman. MP-Opt-Model User's Manual, Version 4.1. 2022.
7-
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-4.1.pdf
8-
doi: 10.5281/zenodo.7434250
6+
R. D. Zimmerman. MP-Opt-Model User's Manual, Version 4.2. 2024.
7+
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-4.2.pdf
8+
doi: 10.5281/zenodo.11177079
99

1010
For a version non-specific citation, use the following citation and DOI,
1111
with *\<YEAR\>* replaced by the year of the most recent release:

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2004-2022, Power Systems Engineering Research Center (PSERC)
1+
Copyright (c) 2004-2024, Power Systems Engineering Research Center (PSERC)
22
and individual contributors (see AUTHORS file for details).
33
All rights reserved.
44

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ of MATLAB or Octave, including setting up your MATLAB/Octave path.
5454
t_nleqs_master..........ok (30 of 150 skipped)
5555
t_pnes_master...........ok
5656
t_qps_master............ok (100 of 432 skipped)
57-
t_miqps_master..........ok (68 of 288 skipped)
57+
t_miqps_master..........ok (78 of 318 skipped)
5858
t_nlps_master...........ok
5959
t_opt_model.............ok
6060
t_om_solve_leqs.........ok
61-
t_om_solve_nleqs........ok (36 of 194 skipped)
61+
t_om_solve_nleqs........ok (36 of 195 skipped)
6262
t_om_solve_pne..........ok
63-
t_om_solve_qps..........ok (81 of 387 skipped)
64-
t_om_solve_miqps........ok (14 of 118 skipped)
63+
t_om_solve_qps..........ok (81 of 388 skipped)
64+
t_om_solve_miqps........ok (20 of 131 skipped)
6565
t_om_solve_nlps.........ok
66-
All tests successful (3430 passed, 329 skipped of 3759)
67-
Elapsed time 4.22 seconds.
66+
All tests successful (3461 passed, 345 skipped of 3806)
67+
Elapsed time 2.28 seconds.
6868
```
6969

7070
Sample Usage
@@ -202,11 +202,11 @@ function, e.g.: `qps_master`, `miqps_master`, and `nlps_master`.
202202
We request that publications derived from the use of MP-Opt-Model
203203
explicitly acknowledge that fact by citing the [MP-Opt-Model User's Manual][7].
204204
The citation and DOI can be version-specific or general, as appropriate.
205-
For version 4.1, use:
205+
For version 4.2, use:
206206

207-
> R. D. Zimmerman. *MP-Opt-Model User's Manual, Version 4.1*. 2022.
208-
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-4.1.pdf
209-
doi: [10.5281/zenodo.7434250](https://doi.org/10.5281/zenodo.7434250)
207+
> R. D. Zimmerman. *MP-Opt-Model User's Manual, Version 4.2*. 2024.
208+
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-4.2.pdf
209+
doi: [10.5281/zenodo.11177079](https://doi.org/10.5281/zenodo.11177079)
210210

211211
For a version non-specific citation, use the following citation and DOI,
212212
with *\<YEAR\>* replaced by the year of the most recent release:

docs/MP-Opt-Model-manual.pdf

9.69 KB
Binary file not shown.

docs/other/MP-Opt-Model-Release-Checklist.md

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ Pre-release
1212
up-to-date.
1313
- Create `docs/relnotes/MP-Opt-Model-Release-Notes-#.#.md` document from
1414
Appendix C of `MP-Opt-Model-manual.tex`.
15+
- Update date in Copyright line in:
16+
- `LICENSE`
17+
- `docs/sphinx/source/conf.py`.
1518
- Update version number and date in:
1619
- `mpomver.m`
20+
- `docs/sphinx/source/conf.py`
1721
- `lib/Contents.m`
1822
- `docs/relnotes/MP-Opt-Model-Release-Notes-#.#.md`
1923
- `docs/src/MP-Opt-Model-manual/MP-Opt-Model-manual.tex`
@@ -24,7 +28,6 @@ Pre-release
2428
- Sphinx docs
2529
- `mp-docs-shared/preamble.tex.txt` - \mpomver
2630
- `mp-docs-shared/prolog.rst.txt` - in URL in raw-html for |MPOMman|
27-
- Copyright line in `LICENSE`.
2831
- In `README.md` and `docs/src/MP-Opt-Model-manual/MP-Opt-Model-manual.tex`
2932
- update output of:
3033
- `test_mp_opt_model` in Section 2.2
@@ -37,7 +40,7 @@ Pre-release
3740
- Make updates for current version specific citations:
3841
- version number (3 places)
3942
- year
40-
- latest version DOI, current is: 10.5281/zenodo.7434250
43+
- latest version DOI, current is: 10.5281/zenodo.11177079
4144
- (update here each time)
4245
... in the following places ...
4346
- CITATION file
@@ -51,27 +54,27 @@ Pre-release
5154
- MATPOWER User's Manual
5255
- Copy latest `MIPS-manual.aux` to `docs/src/MP-Opt-Model-manual` for
5356
`\externaldocument`
54-
- Create `MP-Opt-Model-manual.pdf` from `MP-Opt-Model-manual.tex`
55-
- move to `docs`
56-
- make copy named `MP-Opt-Model-manual-x.x.pdf`
57-
- copy to `docs` directory of `matpower.org-static` git repo
58-
- update `MP-Opt-Model-manual.pdf` symlink on `https://matpower.org/docs/` to point
59-
to new `MP-Opt-Model-manual-x.x.pdf` (replaces existing current version)
60-
- `cd dev/projects/matpower.org-static/docs`
61-
- `rm MP-Opt-Model-manual.pdf`
62-
- `ln -s ./MP-Opt-Model-manual-x.x.pdf MP-Opt-Model-manual.pdf`
63-
- commit & push, then pull to matpower.org
64-
- upload `MP-Opt-Model-manual-x.x.pdf` to Zenodo and finish entry for "New Version"
65-
- update:
66-
- Publication date
67-
- Version
68-
- Identifiers:
69-
- version number in "identical to"
70-
- add link on `https://matpower.org/doc/manuals/` page
57+
- Create `MP-Opt-Model-manual.pdf` from `MP-Opt-Model-manual.tex` and move
58+
to `docs`.
7159
- Add release notice with date and version in `CHANGES.md`.
7260
- Commit all changes to `prep-for-release`.
7361
- Push `prep-for-release` to GitHub.
7462
- Make sure CI checks are ok.
63+
- Make copy of `docs/MP-Opt-Model-manual.pdf` named `MP-Opt-Model-manual-x.x.pdf`
64+
- copy to `docs` directory of `matpower.org-static` git repo
65+
- update `MP-Opt-Model-manual.pdf` symlink on `https://matpower.org/docs/` to point
66+
to new `MP-Opt-Model-manual-x.x.pdf` (replaces existing current version)
67+
- `cd dev/projects/matpower.org-static/docs`
68+
- `rm MP-Opt-Model-manual.pdf`
69+
- `ln -s ./MP-Opt-Model-manual-x.x.pdf MP-Opt-Model-manual.pdf`
70+
- commit & push, then pull to matpower.org
71+
- upload `MP-Opt-Model-manual-x.x.pdf` to Zenodo and finish entry for "New Version"
72+
- update:
73+
- Publication date
74+
- Version
75+
- Identifiers:
76+
- version number in "identical to"
77+
- Add link on `https://matpower.org/doc/manuals/` page
7578

7679

7780
Release
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
What's New in MP-Opt-Model 4.2
2+
------------------------------
3+
4+
#### Released May 10, 2024
5+
6+
Below is a summary of the changes since version 4.1 of MP-Opt-Model. See
7+
the [`CHANGES.md`][1] file for all the gory details. For release notes
8+
for previous versions, see Appendix C of the [MP-Opt-Model User's
9+
Manual][2].
10+
11+
12+
#### New Features:
13+
- Option for `opt_model.add_lin_constraint()` to provide/store the
14+
transpose of the _A_ matrix instead of the original. This can
15+
potentially save significant memory for sparse matrices with many
16+
more columns than rows. E.g. storage constraints in [MOST][3]
17+
for 8760 hour planning horizon.
18+
- Add support to `nlps_master()` for calling `nlps_<my_solver>()` by
19+
setting `opt.alg` to `'<MY_SOLVER>'` to allow for handling custom
20+
NLP solvers.
21+
- Add support to `miqps_master()` for calling `miqps_<my_solver>()`
22+
by setting `opt.alg` to `'<MY_SOLVER>'` to allow for handling custom
23+
MILP/MIQP solvers.
24+
- Add to the `parse_soln()` method of `opt_model` an optional `stash`
25+
input argument that, if present and true, causes the parsed
26+
solution to be stored back in the object, as the `solve()` method
27+
was already doing when `opt.parse_soln` is true.
28+
- New Sphinx-based [Reference documentation][4].
29+
- New functions:
30+
- `convert_lin_constraint()` converts linear constraints from a
31+
single set of doubly-bounded inequality constraints to separate
32+
sets of equality and upper-bounded inequality constraints.
33+
- `convert_lin_constraint_multipliers()` converts multipliers on
34+
linear constraints from separate sets for equality and
35+
upper-bounded inequality constraints to those for doubly-bounded
36+
inequality constraints.
37+
- New `opt_model` methods:
38+
- `is_solved()` indicates whether the model has been solved.
39+
- `has_parsed_soln()` indicates whether a parsed solution is
40+
available in the model.
41+
- `display_soln()` display the results of a solved model,
42+
including values, bounds and shadow prices for variables and
43+
linear constraints, values and shadow prices for nonlinear
44+
constraints, and individual cost components.
45+
46+
#### Bugs Fixed:
47+
- Clear cached parameters after updating linear constraints or
48+
quadratic costs via `opt_model.set_params()`.
49+
- In `miqps_mosek()` the lower and upper bounds of binary variables
50+
got overwritten with 0 and 1, respectively, effectively relaxing
51+
any potentially tighter bounds provided as input.
52+
- Fix false positive in `have_feature_fsolve` in case where the file
53+
is present, but without a valid license.
54+
55+
#### Other Changes:
56+
- Update for compatibility with MATLAB R2023a (Optimization Toolbox
57+
9.5) and later, which removed `x0` as a valid input to `linprog`.
58+
- Update `have_feature_ipopt()` to recognize IPOPT MEX installations
59+
from Enrico Bertolazzi's [mexIPOPT][5], which include MEX files
60+
that have been renamed to architecture-specific names along with an
61+
`ipopt.m` wrapper function to call the appropriate one.
62+
*Thanks to Carlos Murillo-Sánchez.*
63+
64+
_**Note:** While MP-Opt-Model no longer requires this, my
65+
recommendation is still to simply rename the MEX file to
66+
`ipopt.<mexext>`, with the appropriate architecture-specific
67+
extension, and delete the unnecessary `ipopt.m` entirely._
68+
- Always skip price computation stage in `miqps_<solver>()` functions
69+
for pure (as opposed to mixed) integer problems.
70+
- Add caching of aggregate output parameters in
71+
`opt_model.params_var()`.
72+
73+
74+
[1]: ../../CHANGES.md
75+
[2]: ../MP-Opt-Model-manual.pdf
76+
[3]: https://github.com/MATPOWER/most
77+
[4]: https://matpower.org/doc/mpom/
78+
[5]: https://github.com/ebertolazzi/mexIPOPT

docs/sphinx/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
author = 'Ray D. Zimmerman'
2323

2424
# The full version, including alpha/beta/rc tags
25-
release = '4.1+'
25+
release = '4.2'
2626

2727

2828
# -- General configuration ---------------------------------------------------

docs/src/MP-Opt-Model-manual/MIPS-manual.aux

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
\relax
22
\providecommand\hyper@newdestlabel[2]{}
3-
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
4-
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
5-
\global\let\oldnewlabel\newlabel
6-
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
7-
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
8-
\AtEndDocument{\ifx\hyper@anchor\@undefined
9-
\let\newlabel\oldnewlabel
10-
\fi}
11-
\fi}
12-
\global\let\hyper@last\relax
13-
\gdef\HyperFirstAtBeginDocument#1{#1}
143
\providecommand\HyField@AuxAddToFields[1]{}
154
\providecommand\HyField@AuxAddToCoFields[2]{}
165
\citation{octave}
@@ -57,13 +46,13 @@
5746
\newlabel{eq:mips_h}{{3.3}{10}{\mips {} -- \mipsname {}}{equation.3.2}{}}
5847
\newlabel{eq:mips_linear_constraints}{{3.4}{10}{\mips {} -- \mipsname {}}{equation.3.2}{}}
5948
\newlabel{eq:mips_var_bounds}{{3.5}{10}{\mips {} -- \mipsname {}}{equation.3.2}{}}
60-
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}1}{\ignorespaces Input Arguments for {\relsize {-0.5}{\tt {{mips}}}}\TPToverlap {\textsuperscript {\dag }}\relax }}{11}{table.caption.4}\protected@file@percent }
49+
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}1}{\ignorespaces Input Arguments for {\relsize {-0.5}{\tt {{mips}}}}\TPToverlap {\textsuperscript {\dag }}}}{11}{table.caption.4}\protected@file@percent }
6150
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
62-
\newlabel{tab:mips_input}{{3\mbox {-}1}{11}{Input Arguments for \code {mips}\tnote {\dag }\relax }{table.caption.4}{}}
63-
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}2}{\ignorespaces Output Arguments for {\relsize {-0.5}{\tt {{mips}}}}\relax }}{12}{table.caption.6}\protected@file@percent }
64-
\newlabel{tab:mips_output}{{3\mbox {-}2}{12}{Output Arguments for \code {mips}\relax }{table.caption.6}{}}
65-
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}3}{\ignorespaces Options for {\relsize {-0.5}{\tt {{mips}}}}\relax }}{13}{table.caption.8}\protected@file@percent }
66-
\newlabel{tab:mips_options}{{3\mbox {-}3}{13}{Options for \code {mips}\relax }{table.caption.8}{}}
51+
\newlabel{tab:mips_input}{{3\mbox {-}1}{11}{Input Arguments for \code {mips}\tnote {\dag }}{table.caption.4}{}}
52+
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}2}{\ignorespaces Output Arguments for {\relsize {-0.5}{\tt {{mips}}}}}}{12}{table.caption.6}\protected@file@percent }
53+
\newlabel{tab:mips_output}{{3\mbox {-}2}{12}{Output Arguments for \code {mips}}{table.caption.6}{}}
54+
\@writefile{lot}{\contentsline {table}{\numberline {3\mbox {-}3}{\ignorespaces Options for {\relsize {-0.5}{\tt {{mips}}}}}}{13}{table.caption.8}\protected@file@percent }
55+
\newlabel{tab:mips_options}{{3\mbox {-}3}{13}{Options for \code {mips}}{table.caption.8}{}}
6756
\@writefile{brf}{\backcite{wang2007a}{{13}{3\mbox {-}3}{table.caption.8}}}
6857
\@writefile{brf}{\backcite{wang2007a}{{13}{3\mbox {-}3}{table.caption.8}}}
6958
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Example 1}{14}{subsection.3.1}\protected@file@percent }
@@ -104,8 +93,8 @@
10493
\@writefile{toc}{\contentsline {section}{\numberline {5}Acknowledgments}{25}{section.5}\protected@file@percent }
10594
\@writefile{toc}{\contentsline {section}{Appendix \numberline {A}{MIPS}{} Files and Functions}{26}{appendix.1.A}\protected@file@percent }
10695
\newlabel{app:functions}{{A}{26}{\mips {} Files and Functions}{appendix.1.A}{}}
107-
\@writefile{lot}{\contentsline {table}{\numberline {A\mbox {-}1}{\ignorespaces {MIPS}{} Files and Functions\relax }}{26}{table.caption.10}\protected@file@percent }
108-
\newlabel{tab:files}{{A\mbox {-}1}{26}{\mips {} Files and Functions\relax }{table.caption.10}{}}
96+
\@writefile{lot}{\contentsline {table}{\numberline {A\mbox {-}1}{\ignorespaces {MIPS}{} Files and Functions}}{26}{table.caption.10}\protected@file@percent }
97+
\newlabel{tab:files}{{A\mbox {-}1}{26}{\mips {} Files and Functions}{table.caption.10}{}}
10998
\citation{pardiso,pardiso2}
11099
\@writefile{toc}{\contentsline {section}{Appendix \numberline {B}{PARDISO}{} -- Parallel Sparse Direct and Multi-Recursive Iterative Linear Solvers}{27}{appendix.1.B}\protected@file@percent }
111100
\newlabel{app:pardiso}{{B}{27}{\pardiso {} -- Parallel Sparse Direct and Multi-Recursive Iterative Linear Solvers}{appendix.1.B}{}}
@@ -134,6 +123,8 @@
134123
\newlabel{app:v14}{{C.10}{32}{Version 1.4 -- released Oct 8, 2020}{subsection.1.C.10}{}}
135124
\@writefile{toc}{\contentsline {subsection}{\numberline {C.11}Version 1.5 -- released Dec 12, 2022}{33}{subsection.1.C.11}\protected@file@percent }
136125
\newlabel{app:v15}{{C.11}{33}{Version 1.5 -- released Dec 12, 2022}{subsection.1.C.11}{}}
126+
\@writefile{toc}{\contentsline {subsection}{\numberline {C.12}Version 1.5.1 -- released May 10, 2024}{33}{subsection.1.C.12}\protected@file@percent }
127+
\newlabel{app:v151}{{C.12}{33}{Version 1.5.1 -- released May 10, 2024}{subsection.1.C.12}{}}
137128
\bibcite{tspopf}{1}
138129
\bibcite{wang2007a}{2}
139130
\bibcite{wang2007}{3}
@@ -144,6 +135,6 @@
144135
\bibcite{bsd}{8}
145136
\bibcite{gpl}{9}
146137
\bibcite{pardiso}{10}
147-
\@writefile{toc}{\contentsline {section}{References}{34}{section*.31}\protected@file@percent }
138+
\@writefile{toc}{\contentsline {section}{References}{35}{section*.32}\protected@file@percent }
148139
\bibcite{pardiso2}{11}
149-
\gdef \@abspage@last{35}
140+
\gdef \@abspage@last{36}

0 commit comments

Comments
 (0)