Releases: Pyomo/pyomo
Releases · Pyomo/pyomo
Pyomo 6.8.1
"Annie"
Highlights of the 6.8 release series
- Complete Documentation Reorganization
- Added support for Python 3.13
- Refactor default Gurobi interface to support version 12
- Support for NumPy2
- Refactor of Design of Experiments (
contrib.doe
) - New packages:
- alternative_solutions: alternative (near) optimal solutions
- New solver interfaces:
- SAS: Statistical Analysis System
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
SIGNIFICANT CHANGE NOTICE
- This will be the last release to support Python 3.8
- This is the first release to be tested against Python 3.13
- Complete reorganization of our online documentation (#3382, #3378)
CHANGELOG
- General
- Add a 'Do not delete' Disclaimer to Issues/PR Templates (#3361)
- Add URL Status Badge to README (#3373)
- Resolve change in
InvalidNumber
handling in writers (#3390) - Update
common.timing
to make tests more deterministic (#3397) - Defer processing
ConfigValue
/ConfigList
default until first use (#3394) - Improved support for moved/renamed/deprecated modules (#3385)
- Fix
ConfigValue
initialization in multithreaded environments (#3405) ConfigDict
: prevent recursion on partially-constructed objects (#3409)- Fix bug in
AutoSlots
deepcopy (#3412, #3413) - Update
mpi4py_available
to work aroundconda-forge/openmpi
(#3416)
- Core
- Documentation
- Solver Interfaces
- Remove deprecated
gurobipy
addConstr
call (#3350) - Update Xpress interfaces to support 9.5 (#3392)
- Add support for templatized models in
gurobi_direct_v2
(#3362) - Update test for GAMS mapping 'infeasible or unbounded' to infeasible (#3396)
XpressDirect.available()
: check there is a valid license (#3400)- Move away from dependence on gurobi.sh (#3384)
- Fix error when xpress is imported before
xpress_direct
(#3410)
- Remove deprecated
- Testing
- Move URL Checker to Weekly Job (#3360)
- Correct newly discovered typos (#3365, #3399)
- Remove Octeract from NEOS solvers list (and other testing fixes) (#3374)
- Guard tests against broken Gurobi licenses (#3383)
- Remove pin to Gurobi 10.0.3 (#3393)
- Add Python 3.13 to Testing Infrastructure (#3401, #3419)
- Resolve
timeout()
failures on Windows/py3.13 (#3415)
- GDP
- Fix performance degradation in hull transformation (#3366)
- Contributed Packages
- DoE: Fix bug from using hardcoded value (#3358)
- iis: Catch catastrophic solver failure when building MIS (#3403)
- PyNumero: Reverse
BlockVector
/MPIBlockVector
base class order (#3380) - PyNumero: Resolve incompatibilities with NumPy2 (#3408)
- PyROS: Overhaul preprocessor subroutine and subproblem objects (#3341)
Pyomo 6.8.0
Highlights of the 6.8 release series
- Support for Numpy2
- Refactor of Design of Experiments (
contrib.doe
) - New packages:
- alternative_solutions: alternative (near) optimal solutions
- New solver interfaces:
- SAS: Statistical Analysis System
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
SIGNIFICANT CHANGE NOTICE
- Internal data storage for Constraint objects (see #3293)
- No longer release cythonized wheel for Python 3.11+ (see #3355)
CHANGELOG
- General
- Core
- Handle uninitialized variable in
propagate_solution
of scaling
transformation (#3275) - Add
context
option toSuffixFinder
(#3348) - Remove the
_suppress_ctypes
attribute from Block (#3347) - Improve
Set
initialization performance (#3302) - Update Constraint to only store the original expression (not
lower/body/upper) (#3293) - Kernel: fix bug in conic geomean (#3310)
- Fix bug with IndexedSet objects and the within argument (#3288)
- Support validate/filter for IndexedSet components using index (#3338)
- Handle uninitialized variable in
- Solver Interfaces
- Resolve NLv2 incompatibility with multithreading (#3332)
- Resolve writer performance degradation (#3343)
- Fix bug with inconsistent use of
result
andresults
(#3337) - LegacySolverWrapper: restore 'options' attribute (#3334)
- Fix bug in XpressDirect._load_slacks (#3318)
- NLv2: support expressions with nested external functions (#3319)
- Ignore errors on ASL solver version check (#3298)
- Add SAS solver interface (#2886, #3309)
- Testing
- GDP
- Don't transform known-to-be infeasible Disjuncts in multiple BigM (#3314)
- Contributed Packages
- alternative_solutions: Add a new contrib package for generating
alternative solutions (#3270) - APPSI: Allow maingo_solvermodel to be imported without maingopy (#3330)
- APPSI: Sort indices while removing constraints to fix bug in HiGHs
interface (#3281) - CP: Add beforeChild handling for bools in logical expressions (#3315)
- DoE: Refactor to improve API and maintainability (#3317)
- incidence_analysis: Raise error in
generate_strongly_connected_components
instead of asserting (#3305) - parmest: Add missing main call for example file (#3349)
- piecewise: Add incremental PW linear to MIP transformation (#3287)
- piecewise: Add nonlinear-to-piecewise-linear transformation (#3333)
- PyNumero: Support user-provided CyIpopt callbacks with 13 arguments (#3289)
- PyNumero: Support PyomoNLP scaling factors on sub-blocks (#3295)
- PyROS: Temporarily Adjust NL Writer Feasibility Tolerance (#3280)
- viewer: Add option to specify the model by variable name (#3271)
- alternative_solutions: Add a new contrib package for generating
Pyomo 6.7.3
Highlight of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- Improved handling of nested GDPs
- Redesigned user API for parameter estimation
- New packages:
- iis: new capability for identifying minimal intractable systems
- latex_printer: print Pyomo models to a LaTeX compatible format
- contrib.solver: preview of redesigned solver interfaces
- simplification: simplify Pyomo expressions
- New solver interfaces
- MAiNGO: Mixed-integer nonlinear global optimization
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- Core
- Solver Interfaces
- NLv2: Fix linear presolver with constant defined vars/external fcns (#3276)
- Testing
- Contributed Packages
Pyomo 6.7.2
Highlight of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- Improved handling of nested GDPs
- Redesigned user API for parameter estimation
- New packages:
- iis: new capability for identifying minimal intractable systems
- latex_printer: print Pyomo models to a LaTeX compatible format
- contrib.solver: preview of redesigned solver interfaces
- simplification: simplify Pyomo expressions
- New solver interfaces
- MAiNGO: Mixed-integer nonlinear global optimization
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Support config domains with either method or attribute domain_name (#3159)
- Automate TPL callback registrations (#3167)
- Fix type registrations for ExternalFunction arguments (#3168)
- Only modify module path and spec for deferred import modules (#3176)
- Add "mixed" standard form representation (#3201)
- Support "default" dispatchers in
ExitNodeDispatcher
(#3194) - Redefine objective sense as a proper
IntEnum
(#3224) - Fix division-by-0 bug in linear walker (#3246)
- Core
- Documentation
- Solver Interfaces
- Fix division by zero error in linear presolve (#3161)
- Subprocess timeout update (#3183)
- Solver Refactor - Bug fixes for various components (#3181, #3214, #3228)
- NLv2: handle presolved independent linear subsystems (#3193)
- Update
LegacySolverWrapper
compatibility with thepyomo
script (#3202) - Fix mosek_direct to use putqconk instead of putqcon (#3199)
- Check _skip_trivial_constraints before the constraint body (#3226)
- Fix AMPL solver duplicate funcadd (#3206)
- Disable the use of universal newlines in the ipopt_v2 NL file (#3231)
- NLv2: fix reporting numbers of nonlinear discrete variables (#3238)
- Fix: Get SCIP solving time considering float number with some text (#3234)
- Solver Refactor - Add
gurobi_direct
implementation (#3225)
- Testing
- Update TPL package list due to
contrib.solver
(#3164) - Set maxDiff=None on the base TestCase class (#3171)
- Testing infrastructure updates (#3175)
- Typos update for March 2024 (#3219)
- Add openmpi to testing environment to resolve issue in mpi4py (#3236, #3239)
- Skip black 24.4.1 due to a bug in the parser (#3247)
- Skip tests on draft and WIP pull requests (#3223)
- Update GHA to grab gurobipy from PyPI (#3254)
- Update TPL package list due to
- GDP
- Contributed Packages
- APPSI: cmodel: handle non-mutable params in var / constraint bounds (#3182)
- APPSI: Allow APPSI FBBT to handle nested named Expressions (#3185)
- APPSI: Add MAiNGO solver interface (#3165)
- CP: Add SequenceVar and other logical expressions for scheduling (#3227)
- DoE: Bug fixes (#3245)
- iis: Add minimal intractable system infeasibility diagnostics (#3172)
- incidence_analysis: Improve
solve_strongly_connected_components
performance for models with named expressions (#3186) - incidence_analysis: Add function to plot incidence graph in
Dulmage-Mendelsohn order (#3207) - incidence_analysis: Require variables and constraints to be specified
separately inIncidenceGraphInterface.remove_nodes
(#3212) - latex_printer: bugfix for set operations / multidimensional sets (#3177)
- MindtPy: Add HiGHS support (#2971)
- MindtPy: Add call_before_subproblem_solve callback (#3251)
- Parmest: New UI using experiment lists (#3160)
- piecewise: Add piecewise linear transformations (#3036)
- preprocessing: bugfix: intersect domains in variable aggregator (#3241)
- PyNumero: Allow CyIpopt to solve problems without objectives (#3163)
- PyNumero: Work around bug in CyIpopt 1.4.0 (#3222)
- PyNumero: Include "inventory" in readme (#3248)
- PyROS: Simplify custom domain validators (#3169)
- PyROS: Fix iteration logging for edge case involving discrete sets (#3170)
- PyROS: Update solver timing system (#3198)
- simplification: expression simplification using GiNaC or SymPy (#3088)
Pyomo 6.7.1
Highlight of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- Improved handling of nested GDPs
- New packages:
- latex_printer: print Pyomo models to a LaTeX compatible format
- contrib.solver: preview of redesigned solver interfaces
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Add support for tuples in
ComponentMap
; addDefaultComponentMap
(#3150) - Update
Path
,PathList
, andIsInstance
Domain Validators (#3144) - Remove usage of
__all__
(#3142) - Extend Path and Type Checking Validators of
common.config
(#3140) - Update Copyright Statements (#3139)
- Update
ExitNodeDispatcher
to better support extensibility (#3125) - Create contributors data gathering script (#3117)
- Prevent duplicate entries in ConfigDict declaration order (#3116)
- Remove unnecessary
__future__
imports (#3109) - Import pandas through pyomo.common.dependencies (#3102)
- Update links to workshop slides (#3079)
- Remove incorrect use of identity (is) comparisons (#3061)
- Add support for tuples in
- Core
- Add
Block.register_private_data_initializer()
(#3153) - Generalize the simple_constraint_rule decorator (#3152)
- Fix edge case assigning new numeric types to Var/Param with units (#3151)
- Add private_data to
_BlockData
(#3138) - IndexComponent create implicit sets as "anonymous" sets (#3075)
- Add
all_different
andcount_if
to the logical expression system (#3058) - Fix RangeSet.len when defined by floats (#3119)
- Overhaul the
Suffix
component (#3072) - Enforce expression immutability in
expr.args
(#3099) - Improve NumPy registration when assigning numpy to Param (#3093)
- Track changes in PyPy behavior introduced in 7.3.14 (#3087)
- Remove automatic numpy import (#3077)
- Fix
range_difference
for Sets with nonzero anchor points (#3063) - Clarify errors raised by accessing Sets by positional index (#3062)
- Add
- Documentation
- Solver Interfaces
- Testing
- Update Release Wheel Builder Action (#3149)
- Actions Version Update: Address node.js deprecations (#3118)
- New Black Major Release (24.1.0) (#3108)
- Use scip for PyROS tests (#3104)
- Add missing solver dependency flags for OnlineDocs tests (#3094)
- Re-enable
contrib.viewer.tests.test_qt.py
(#3085) - Add automated testing of OnlineDocs examples (#3080)
- Silence deprecation warnings emitted by Pyomo tests (#3076)
- Fix Python 3.12 tests (manage
pyutilib
,distutils
dependencies) (#3065)
- DAE
- Replace deprecated
numpy.math
alias with standardmath
module (#3074)
- Replace deprecated
- GDP
- Contributed Packages
- GDPopt: Fix lbb solve_data bug (#3133)
- GDPopt: Adding missing import for gdpopt.enumerate (#3105)
- FBBT: Extend
fbbt.ExpressionBoundsVisitor
to handle relational
expressions and Expr_if (#3129) - incidence_analysis: Method to add an edge in IncidenceGraphInterface (#3120)
- incidence_analysis: Add subgraph method to IncidencegraphInterface (#3122)
- incidence_analysis: Add
ampl_repn
option (#3069) - incidence_analysis: Update documentation (#3067)
- interior_point: Resolve test failure due to Mumps update (#3114)
- MindtPy: Various bug fixes (#3034)
- PyROS: Update Solver Argument Resolution and Validation Routines (#3126)
- PyROS: Update Subproblem Initialization Routines (#3071)
- PyROS: Fix DR polishing under nominal objective focus (#3060)
Pyomo 6.7.0
Highlights of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- New packages:
- latex_printer (print Pyomo models to a LaTeX compatible format)
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Remove Python 3.7, add Python 3.12 Support (#3050, #2956)
- Update report_timing() to support context manager API (#3039)
- Add
Preformatted
class for logging preformatted messages (#2998) - QuadraticRepnVisitor: Improve nonlinear expression expansion (#2997)
- Add
CITATION
file to main repository (#2992) - Minor typo / formatting fixes (#3010, #2975)
- Core
- Fix exception from interaction of Gurobi, Pint, Dask, and Threading (#3026)
- Fix differentiation of
Expressions
withnative_numeric_types
(#3017) - Warn for explicit declaration of immutable params with units (#3004)
- Use
SetInitializer
for initializingParam
domains; reinitializing
IndexedVar
domains (#3001) - Ensure templatize_constraint returns an expression (#2983)
- Prevent multiple applications of the scaling transform (#2979)
- Solver Interfaces
- Remove presolve-eliminated variables from named expressions (#3056)
- Improve LP/NL writer determinism (#3054)
- Add "writer" for converting linear models to standard matrix form (#3046)
- NLv2/LPv2: Log which suffix values were skipped at the DEBUG level (#3043)
- NLv2: add linear presolve and general problem scaling support (#3037)
- Adjust mps writer format for integer variable declaration (#2946)
- Fix scip results processing (#3023)
- Fix quadratic objective off-diagonal-terms in cplex_direct interface (#3025)
- Consolidate walker logic in LP/NL representations (#3015)
- LP writer: warn user for ignored suffixes (#2982)
- Update handling of
0*
in linear, quadratic walkers (#2981)
- Testing
- Pin
gurobipy
version for testing to 10.0.3 (#3053) - Update Performance Plot URL (#3033)
- Track change in Black rules (#3021)
- Resolve build infrastructure errors (with mpi4py, gams, networkx) (#3018)
- Improve GHA conda env package setup (#3013, #2967)
- Update Gurobi license checks in tests (#3011)
- Skip
fileutils
test failure that persists in OSX 12.7 (#3008) - LINTING: New Version of
crate-ci/typos
(#2987)
- Pin
- GDP
- Contributed Packages
- APPSI: Add interface to WNTR (#2902)
- APPSI: Capture HiGHS output when initializing model (#3005)
- APPSI: Fix auto-update when unfixing variable and changing bounds (#2996)
- APPSI: Fix reference bug in HiGHS interface (#2995)
- FBBT: Add new walker for compute_bounds_on_expr (#3027)
- incidence_analysis: Fix bugs with subset ordering and 0 coefficients (#3041)
- incidence_analysis: Update paper reference (#2969)
- latex_printer: Add contrib.latex_printer package (#2984)
- MindtPy: Add support for GreyBox models (#2988)
- parmest: Cleanup examples and tests (#3028)
- PyNumero: Handle evaluation errors in CyIpopt solver (#2994)
- PyROS: Report relative variable shifts in solver logs (#3035)
- PyROS: Update logging system (#2990)
Pyomo 6.6.2
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
-
ADVANCE CHANGE NOTICE
- This will be the last release to support Python 3.7.
-
General
- Fall back on
multiprocessing.dummy
whenmultiprocessing.Pool
is not
available (#2890) - Clean up implicit function imports (#2892)
- Ensure all pyomo modules import without warnings (#2897)
- Resolve
FileDownloader.get_os_version
exception for missing
lsb_release
(#2911) - Improve
calculate_variable_from_constraint
error messages (#2914) - Add function for collecting expressions with unit inconsistencies (#2904)
- Fix loading Scalar Param from
.dat
file (#2923)
- Fall back on
-
Core
- Resolve kernel pickle/clone errors (#2916)
- Reorganize numeric expression modules (#2909)
- Resolve error categorizing some Var discrete domains as "integer" (#2954)
- Named expressions:
expr
should always returnNumericValue
(#2948) - Support kwargs in partial objects passed to Initializer() (#2960)
- Remove
expr.current
(#2910)
-
Documentation
-
Solvers Interfaces
- Resolve handling of
{}**0
in Linear/QuadraticRepn (#2857) - Fix Linear/QuadraticRepnVisitor handling of
{}**{float}
(#2863, #2865) - GAMS: fix pickling models, update tests (#2913)
- Xpress: fix NLP results processing for Xpress 9.2.0 (#2921)
- Improve NaN handling in LP, NL writers (#2930)
- Ensure constants written correctly to LP/NL files (#2953)
- Resolve handling of
-
Testing
-
DAE
- Improve error message when attempting to discretize models with circular
references (#2943)
- Improve error message when attempting to discretize models with circular
-
GDP
-
Contributed Packages
- APPSI: change default behavior to not care where variables live (#2903)
- APPSI: Correctly Process Objective Bounds from Gurobi for Nonconvex QCPs
(#2898) - community_detection: fix networkx dependency in doctests (#2885)
- cp: Fix bug with
land
incontrib.logical_to_disjunctive
transformation
(#2879) - DoE: Update tutorial notebook (#2889)
- incidence_analysis: Filter variables with non-constant, fixed expressions
that resolve to zero inget_incident_variables
(#2882) - incidence_analysis: Correct behavior of
linear_only
argument in
get_incident_variables
(#2883) - MindtPy: Refactor to improve extensibility and maintainability (#2887)
- PyNumero: Add
PyNumeroEvaluationError
(#2901) - PyNumero: Make min and max work with MPIBlockVector when some blocks have
size 0 (#2896) - PyNumero: Remove old, unused PyNumero code (#2895)
- PyNumero: Fix typo in docstring (#2873)
- sensitivity_toolbox: Send lists to
numpy.vstack
rather than iterators
(#2881) - viewer: Fix model viewer (#2924)
Pyomo 6.6.1
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
- Solver Interfaces
- Contributed Packages
Pyomo 6.6.0
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)
Pyomo 6.5.0
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 NL file writer (NLv2)
- Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- 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)
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Apply
black
to enforce PEP8 standards in certain modules (#2737, #2738,
#2733, #2732, #2731, #2728, #2730, #2729, #2720, #2721, #2719, #2718) - Add Developers' call information to README (#2665)
- Deprecate
pyomo.checker
module (#2734) - Warn when infeasibility tools will not log output (#2666)
- Separate identification from logging in
pyomo.util.infeasible.log_*
(#2669) - Convert subprocess timeout parameters to module attributes (#2672)
- Resolve consistency issues in the Bunch class (#2685)
- Remove GSL downloader from
download-extensions
(#2725) - Update enhancement GitHub issue template to link to wiki (#2739)
- Add deprecation warning to
pyomo
command (#2740) - Require
version=
for all deprecation utilities (#2744) - Fix
pyomo --version
version string (#2743)
- Apply
- Core
- Solver Interfaces
- Documentation
- Testing
- DAE
- GDP
- Add GDP-to-MIP transformation base class (#2687)
- Contributed Packages
- DoE: New module for model-based design of experiments (#2294, #2711, #2527)
- FBBT: Add tolerances to tests (#2675)
- GDPopt: Switch a LBB test to use Gurobi as MINLP solver (#2686)
- incidence_analysis: Add
plot
method toIncidenceGraphInterface
(#2716) - incidence_analysis: Refactor to cache a graph instead of a matrix (#2715)
- incidence_analysis: Add documentation and update API (#2727, #2745)
- incidence_analysis: Add logging solve_strongly_connected_components (#2723)
- MindtPy: Refactor to improve extensibility and maintainability (#2654)
- Parmest: Suppress mpi-sppy output in import (#2692)
- PyNumero: Add tee argument to Pyomo-SciPy square solvers (#2668)
- PyNumero: Support implicit function solvers in ExternalPyomoModel (#2652)
- PyROS: Fix user_time and wallclock_time bug (#2670)
- PyROS: More judicious enforcement of PyROS Solver time limit (#2660, #2706)
- PyROS: Update documentation (#2698, #2707)
- PyROS: Adjust routine for loading DR polishing model solutions (#2700)
- Viewer: Update to support PySide6 and display units and domain (#2689)