Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Implemented a more performant and robust expression generation system
- Implemented a more performant NL file writer (NLv2)
- Implemented a more performant LP file writer (LPv2)
- Applied PEP8 standards throughout the
codebase - Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- Removed the
pyomo check
command - New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- CP (Constraint programming models and solver interfaces)
- DoE (Model based design of experiments)
- External grey box models
- IIS (Standard interface to solver IIS capabilities)
- MPC (Data structures/utils for rolling horizon dynamic optimization)
- piecewise (Modeling with and reformulating multivariate piecewise linear
functions) - PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Core
- Bugfix: component indexes specified as lists (#2765)
- Remove the use of weakrefs in
SymbolMap
(#2791) - Improve conversions between Pyomo and Sympy expressions (#2806)
- Rework expression generation to leverage multiple dispatch (#2722)
- Improve robustness of
calculate_variable_from_constraint()
(#2812) - Add support for infix Boolean logical operators (#2835)
- Improvements to Pyomo component iteration (#2829)
- Documentation
- Solvers Interfaces
- NEOS: fix typo in
kestrelAMPL.kill()
argument (#2758) - Better handling of mutable parameters in HiGHS interface (#2763)
- Improve linear data structure in NL writer (#2769)
- Bugfix for shared named expressions in NL writer (#2790)
- Resolve NPV constants in
LinearExpressions
in NL writer (#2811) - GAMS/Baron: ensure negative numbers are parenthesized (#2833)
- Release LP version 2 (LPv2) writer (#2823, #2840)
- NEOS: fix typo in
- Testing
- GDP
- Add
gdp.bound_pretransformation
(#2824)
- Add
- Contributed Packages
- APPSI: Improve logging consistency across solvers (#2787)
- APPSI: Update
available
method in APPSI-Gurobi interface (#2828) - DoE: Release version 2 (#2794)
- incidence_analysis: Remove strict usage of PyomoNLP (#2752)
- incidence_analysis: Test
IndexedBlock
(#2789) - incidence_analysis: Use standard repn for incidence graph generation (#2834)
- Parmest: Update for pandas 2.0.0 release (#2795)
- piecewise: Add contrib.piecewise package (#2708, #2768, #2766, #2797, #2798,
#2826) - PyNumero: Refactor CyIpopt interface to subclass
cyipopt.Problem
(#2760) - PyNumero: Fix CyIpopt interface when
load_solutions=False
(#2820) - PyROS: Fixes to PyROS Separation Routine (#2815)
- PyROS: Fixes to Coefficient Matching and Timing Functionalities (#2837)