|
| 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 |
0 commit comments