Skip to content

Commit e51c8c6

Browse files
committed
Release 2.0.
1 parent 409dd93 commit e51c8c6

8 files changed

Lines changed: 91 additions & 37 deletions

File tree

CHANGES.md

Lines changed: 5 additions & 2 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 1.0
6-
-----------------
5+
Version 2.0 - *Jul 8, 2020*
6+
---------------------------
7+
8+
#### 7/8/20
9+
- Release 2.0.
710

811
#### 7/3/20
912
- Add to `eval_nln_constraint()` method the ability to compute

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 1.0, use:
4+
appropriate. For version 2.0, use:
55

6-
R. D. Zimmerman. MP-Opt-Model User's Manual, Version 1.0. 2020.
7-
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-1.0.pdf
8-
doi: 10.5281/zenodo.3818003
6+
R. D. Zimmerman. MP-Opt-Model User's Manual, Version 2.0. 2020.
7+
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-2.0.pdf
8+
doi: 10.5281/zenodo.3935928
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:

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ MP-Opt-Model
22
============
33

44
[MP-Opt-Model][1] is a package of MATLAB/Octave M-files for constructing
5-
and solving mathematical optimization problems. It provides an
6-
easy-to-use, object-oriented interface for building and solving your
7-
optimization model. It also includes a unified interface for calling
8-
numerous LP, QP, mixed-integer and nonlinear solvers, with the ability
9-
to switch solvers by simply changing an input option.
5+
and solving mathematical programming and optimization problems. It provides
6+
an easy-to-use, object-oriented interface for building and solving your
7+
model. It also includes a unified interface for calling numerous LP, QP,
8+
mixed-integer and nonlinear solvers, with the ability to switch solvers
9+
simply by changing an input option.
1010

1111
It is based on code that was originally developed by Ray D. Zimmerman of
1212
Cornell University as part of [MATPOWER][2].
@@ -59,8 +59,8 @@ of MATLAB or Octave, including setting up your MATLAB path.
5959
t_om_solve_qps..........ok (79 of 319 skipped)
6060
t_om_solve_miqps........ok (12 of 72 skipped)
6161
t_om_solve_nlps.........ok
62-
All tests successful (2439 passed, 259 skipped of 2698)
63-
Elapsed time 3.15 seconds.
62+
All tests successful (2519 passed, 259 skipped of 2778)
63+
Elapsed time 2.52 seconds.
6464
```
6565

6666
Sample Usage
@@ -201,11 +201,11 @@ function, e.g.: `qps_master`, `miqps_master`, and `nlps_master`.
201201
We request that publications derived from the use of MP-Opt-Model
202202
explicitly acknowledge that fact by citing the [MP-Opt-Model User's Manual][7].
203203
The citation and DOI can be version-specific or general, as appropriate.
204-
For version 1.0, use:
204+
For version 2.0, use:
205205

206-
> R. D. Zimmerman. *MP-Opt-Model User's Manual, Version 1.0*. 2020.
207-
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-1.0.pdf
208-
doi: [10.5281/zenodo.3818003](https://doi.org/10.5281/zenodo.3818003)
206+
> R. D. Zimmerman. *MP-Opt-Model User's Manual, Version 2.0*. 2020.
207+
[Online]. Available: https://matpower.org/docs/MP-Opt-Model-manual-2.0.pdf
208+
doi: [10.5281/zenodo.3935928](https://doi.org/10.5281/zenodo.3935928)
209209

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

docs/MP-Opt-Model-manual.pdf

35.9 KB
Binary file not shown.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
What's New in MP-Opt-Model 2.0
2+
------------------------------
3+
4+
#### Released July 8, 2020
5+
6+
Below is a summary of the changes since version 1.0 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+
- Add new `'fsolve'` tag to `have_fcn()` to check for availability of
14+
`fsolve()` function.
15+
- Add `nleqs_master()` function as unified interface for solving
16+
nonlinear equations, including implementations for `fsolve` and
17+
Newton's method in functions `nleqs_fsolve()` and `nleqs_newton()`,
18+
respectively.
19+
- Add support for nonlinear equations (NLEQ) to `opt_model`. For
20+
problems with only nonlinear equality constraints and no costs,
21+
the `problem_type()` method returns `'NLEQ'` and the `solve()`
22+
method calls `nleqs_master()` to solve the problem.
23+
- New functions:
24+
- `mpopt2nleqopt()` creates or modifies an options struct for
25+
`nleqs_master()` from a MATPOWER options struct.
26+
- `nleqs_fsolve()` provides implementation of unified nonlinear
27+
equation solver interface for `fsolve`.
28+
- `nleqs_master()` provides a single wrapper function for calling
29+
any of MP-Opt-Model's nonlinear equation solvers.
30+
- `nleqs_newton()` provides implementation of Newton's method solver
31+
with a unified nonlinear equation solver interface.
32+
- `opt_model/params_nln_constraint()` method returns parameters for
33+
a named (and optionally indexed) set of nonlinear constraints.
34+
- `opt_model/params_nln_cost()` method returns parameters for a
35+
named (and optionally indexed) set of general nonlinear costs.
36+
37+
#### Other Changes
38+
- Add to `eval_nln_constraint()` method the ability to compute constraints
39+
for a single named set.
40+
- Skip evaluation of gradient if `eval_nln_constraint()` is called with
41+
a single output argument.
42+
- Remove redundant MIPS tests from `test_mp_opt_model.m`.
43+
- Add tests for solving LP/QP, MILP/MIQP, NLP and NLEQ problems via
44+
`opt_model/solve()`.
45+
- Add Table~\ref{tab:have_fcn_tags} of valid `have_fcn()` input tags
46+
to User's Manual.
47+
48+
49+
[1]: https://github.com/MATPOWER/mp-opt-model/blob/master/CHANGES.md
50+
[2]: https://github.com/MATPOWER/mp-opt-model/blob/master/docs/MP-Opt-Model-manual.pdf

docs/src/MP-Opt-Model-manual/MP-Opt-Model-manual.tex

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@
150150
\newcommand{\mpomlink}[0]{\href{\mpomurl}{\mpom{}}}
151151
\newcommand{\mpomname}[0]{\mpom{}}
152152
% \newcommand{\mpomname}[0]{{{\bf M}{\sc at}{\bf P}{\sc ower} \textbf{Opt}imization \textbf{Model}}}
153-
\newcommand{\mpomver}[0]{1.1-dev}
153+
\newcommand{\mpomver}[0]{2.0}
154154
\newcommand{\most}[0]{{MOST}}
155155
\newcommand{\mostname}[0]{{{\bf M}{\sc atpower} \textbf{O}ptimal \textbf{S}cheduling \textbf{T}ool}}
156156
\newcommand{\mosturl}[0]{https://github.com/MATPOWER/most}
@@ -237,7 +237,7 @@
237237
%\title{\hl{--- DRAFT ---}\\\hl{\em do not distribute}\\~\\{\huge \bfseries \mpomname{} User's Manual } \\ ~ \\ \LARGE Version \mpomver{}\\
238238
\title{{\huge \bfseries \mpomname{} User's Manual } \\ ~ \\ \LARGE Version \mpomver{}}
239239
\author{Ray~D.~Zimmerman}
240-
%\date{May 8, 2020} % comment this line to display the current date
240+
\date{July 8, 2020} % comment this line to display the current date
241241
%\date{May 8, 2020\thanks{Second revision. First revision was April 29, 2020}} % comment this line to display the current date
242242

243243
%%% BEGIN DOCUMENT
@@ -265,7 +265,7 @@ \section{Introduction}
265265

266266
\subsection{Background}
267267

268-
\mpomlink{} is a package of \matlab{} language M-files\footnote{Also compatible with GNU Octave~\cite{octave}.} for constructing and solving mathematical optimization problems. It provides an easy-to-use, object-oriented interface for building and solving your optimization model. It also includes a unified interface for calling numerous LP, QP, mixed-integer and nonlinear solvers, with the ability to switch solvers by simply changing an input option.
268+
\mpomlink{} is a package of \matlab{} language M-files\footnote{Also compatible with GNU Octave~\cite{octave}.} for constructing and solving mathematical programming and optimization problems. It provides an easy-to-use, object-oriented interface for building and solving your model. It also includes a unified interface for calling numerous LP, QP, mixed-integer and nonlinear solvers, with the ability to switch solvers simply by changing an input option.
269269
The \mpom{} project page can be found at:
270270

271271
\bigskip
@@ -322,12 +322,12 @@ \subsection{License and Terms of Use}
322322
\subsection{Citing \mpom{}}
323323

324324
We request that publications derived from the use of \mpom{} explicitly acknowledge that fact by citing the \mpomname{} User's Manual~\cite{mpom_manual}.
325-
The citation and DOI can be version-specific or general, as appropriate. For version 1.0, use:
325+
The citation and DOI can be version-specific or general, as appropriate. For version 2.0, use:
326326

327327
\begin{quote}
328328
\footnotesize
329-
R.~D. Zimmerman. \mpomname{} User's Manual, Verision 1.0. 2020. [Online]. Available: \url{https://matpower.org/docs/MP-Opt-Model-manual-1.0.pdf}\\
330-
\doi{10.5281/zenodo.3818003}
329+
R.~D. Zimmerman. \mpomname{} User's Manual, Verision 2.0. 2020. [Online]. Available: \url{https://matpower.org/docs/MP-Opt-Model-manual-2.0.pdf}\\
330+
\doi{10.5281/zenodo.3935928}
331331
\end{quote}
332332
For a version non-specific citation, use the following citation and DOI,
333333
with \emph{\textless{}YEAR\textgreater{}} replaced by the year of the most recent release:
@@ -353,7 +353,7 @@ \subsection{\mpom{} Development}
353353

354354
\bigskip
355355

356-
The \mpom{} GitHub project hosts the public Git code repository as well as a public issue tracker for handling bug reports, patches, and other issues and contributions. There are separate GitHub hosted repositories and issue trackers for \mptest{}, \mips{}, \matpower{}, etc., all available from \url{https://github.com/MATPOWER/}.
356+
The \mpom{} GitHub project hosts the public Git code repository as well as a public issue tracker for handling bug reports, patches, and other issues and contributions. There are separate GitHub hosted repositories and issue trackers for \mpom{}, \mptest{}, \mips{}, and \matpower{}, etc., all are available from \url{https://github.com/MATPOWER/}.
357357

358358

359359
%%------------------------------------------
@@ -410,8 +410,8 @@ \subsection{Installation}
410410
t_om_solve_qps..........ok (79 of 319 skipped)
411411
t_om_solve_miqps........ok (12 of 72 skipped)
412412
t_om_solve_nlps.........ok
413-
All tests successful (2439 passed, 259 skipped of 2698)
414-
Elapsed time 3.15 seconds.
413+
All tests successful (2519 passed, 259 skipped of 2778)
414+
Elapsed time 2.52 seconds.
415415
\end{Code}
416416
\end{enumerate}
417417

@@ -2808,19 +2808,19 @@ \subsection{\mosek{} -- High-performance LP, QP, MILP and MIQP Solvers}
28082808

28092809
Although \mosek{} is a commercial package, at the time of this writing there is a free academic license available. See \url{https://www.mosek.com/products/academic-licenses/} for more details.
28102810

2811-
When the \matlab{} interface to \mosek{} is installed, it can be used to solve general LP and QP problems via \matpower{}'s common QP solver interface \code{qps\_master}, or MILP and MIQP problems via \code{miqps\_master}, with the algorithm option set to \codeq{MOSEK}, or by calling \code{qps\_mosek} or \code{miqps\_mosek} directly.
2811+
When the \matlab{} interface to \mosek{} is installed, it can be used to solve general LP and QP problems via \mpom{}'s common QP solver interface \code{qps\_master}, or MILP and MIQP problems via \code{miqps\_master}, with the algorithm option set to \codeq{MOSEK}, or by calling \code{qps\_mosek} or \code{miqps\_mosek} directly.
28122812

28132813
\subsection{\ot{} -- LP, QP, NLP, NLEQ and MILP Solvers}
28142814
\label{app:ot}
28152815

2816-
\matlab{}'s \ot{}~\cite{ot, otug}, available from The MathWorks, provides a number of high-performance solvers that \matpower{} can take advantage of.
2816+
\matlab{}'s \ot{}~\cite{ot, otug}, available from The MathWorks, provides a number of high-performance solvers that \mpom{} can take advantage of.
28172817

28182818
It includes \code{fsolve} for nonlinear equations (NLEQ), \code{fmincon} for nonlinear programming problems (NLP), and \code{linprog} and \code{quadprog} for linear programming (LP) and quadratic programming (QP) problems, respectively.
28192819
For mixed-integer linear programs (MILP), it provides \code{intlingprog}.
28202820
Each solver implements a number of different solution algorithms.
28212821
More information is available from The MathWorks, Inc. at \url{https://www.mathworks.com/}.
28222822

2823-
When available, the \ot{} solvers can be used to solve general LP and QP problems via \matpower{}'s common QP solver interface \code{qps\_master}, or MILP problems via \code{miqps\_master}, with the algorithm option set to \codeq{OT}, or by calling \code{qps\_ot} or \code{miqps\_ot} directly. It can be to solve general NLP problems via \mpom{}'s common NLP solver interface \code{nlps\_master} with the algorithm option set to \codeq{FMINCON}, or by calling \code{nlps\_fmincon} directly. It can also be used to solve general NLEQ problems via \mpom{}'s common NLEQ solver interface \code{nleqs\_master} with the algorithm option set to \codeq{FSOLVE}, or by calling \code{nleqs\_fsolve} directly.
2823+
When available, the \ot{} solvers can be used to solve general LP and QP problems via \mpom{}'s common QP solver interface \code{qps\_master}, or MILP problems via \code{miqps\_master}, with the algorithm option set to \codeq{OT}, or by calling \code{qps\_ot} or \code{miqps\_ot} directly. It can be to solve general NLP problems via \mpom{}'s common NLP solver interface \code{nlps\_master} with the algorithm option set to \codeq{FMINCON}, or by calling \code{nlps\_fmincon} directly. It can also be used to solve general NLEQ problems via \mpom{}'s common NLEQ solver interface \code{nleqs\_master} with the algorithm option set to \codeq{FSOLVE}, or by calling \code{nleqs\_fsolve} directly.
28242824

28252825

28262826
%%------------------------------------------
@@ -2851,7 +2851,7 @@ \subsubsection*{New Features}
28512851
\item \code{nlps\_fmincon()} provides implementation of unified nonlinear programming solver interface for \code{fmincon}.
28522852
\item \code{nlps\_ipopt()} provides implementation of unified nonlinear programming solver interface interface for \ipopt{}.
28532853
\item \code{nlps\_knitro()} provides implementation of unified nonlinear programming solver interface interface for \ipopt{}.
2854-
\item \code{nlps\_master()} provides a single wrapper function for calling any of \matpower{}'s nonlinear programming solvers.
2854+
\item \code{nlps\_master()} provides a single wrapper function for calling any of \mpom{}'s nonlinear programming solvers.
28552855
\end{itemize}
28562856
\end{itemize}
28572857

@@ -2916,10 +2916,10 @@ \subsubsection*{Other Improvements}
29162916
\end{itemize}
29172917

29182918

2919-
\subsection{Version 1.1 -- released ??? ?, 2020}
2920-
\label{app:v11}
2919+
\subsection{Version 2.0 -- released Jul 8, 2020}
2920+
\label{app:v20}
29212921

2922-
The \href{https://matpower.org/docs/MP-Opt-Model-manual-1.1.pdf}{\mpom{} 1.1 User's Manual} is available online.\footnote{\url{https://matpower.org/docs/MP-Opt-Model-manual-1.1.pdf}}
2922+
The \href{https://matpower.org/docs/MP-Opt-Model-manual-2.0.pdf}{\mpom{} 2.0 User's Manual} is available online.\footnote{\url{https://matpower.org/docs/MP-Opt-Model-manual-2.0.pdf}}
29232923

29242924
\subsubsection*{New Features}
29252925
\begin{itemize}
@@ -2930,7 +2930,7 @@ \subsubsection*{New Features}
29302930
\begin{itemize}
29312931
\item \code{mpopt2nleqopt()} creates or modifies an options struct for \code{nleqs\_master()} from a \matpower{} options struct.
29322932
\item \code{nleqs\_fsolve()} provides implementation of unified nonlinear equation solver interface for \code{fsolve}.
2933-
\item \code{nleqs\_master()} provides a single wrapper function for calling any of \matpower{}'s nonlinear equation solvers.
2933+
\item \code{nleqs\_master()} provides a single wrapper function for calling any of \mpom{}'s nonlinear equation solvers.
29342934
\item \code{nleqs\_newton()} provides implementation of Newton's method solver with a unified nonlinear equation solver interface.
29352935
\item \code{opt\_model/params\_nln\_constraint()} method returns parameters for a named (and optionally indexed) set of nonlinear constraints.
29362936
\item \code{opt\_model/params\_nln\_cost()} method returns parameters for a named (and optionally indexed) set of general nonlinear costs.
@@ -2946,6 +2946,7 @@ \subsubsection*{New Features}
29462946
\subsubsection*{Other Changes}
29472947
\begin{itemize}
29482948
\item Add to \code{eval\_nln\_constraint()} method the ability to compute constraints for a single named set.
2949+
\item Skip evaluation of gradient if \code{eval\_nln\_constraint()} is called with a single output argument.
29492950
\item Remove redundant MIPS tests from \code{test\_mp\_opt\_model.m}.
29502951
\item Add tests for solving LP/QP, MILP/MIQP, NLP and NLEQ problems via \code{opt\_model/solve()}.
29512952
\item Add Table~\ref{tab:have_fcn_tags} of valid \code{have\_fcn()} input tags to User's Manual.

lib/Contents.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
% MP-Opt-Model
2-
% Version 1.0 08-May-2020
2+
% Version 2.0 08-Jul-2020
33
%
44
% MP-Opt-Model is a package of MATLAB/Octave M-files for constructing
55
% and solving mathematical optimization problems. It provides an

lib/mpomver.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
% See https://github.com/MATPOWER/mp-opt-model for more info.
1818

1919
v = struct( 'Name', 'MP-Opt-Model', ...
20-
'Version', '1.1-dev', ...
20+
'Version', '2.0', ...
2121
'Release', '', ...
22-
'Date', '03-Jul-2020' );
22+
'Date', '08-Jul-2020' );
2323
if nargout > 0
2424
if nargin > 0
2525
rv = v;

0 commit comments

Comments
 (0)