Releases: Pyomo/pyomo
Releases · Pyomo/pyomo
Pyomo 6.9.5
Highlights of the 6.9 release series
- Removed support for Python 3.8
- Added support for Python 3.14
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New External Function for Cubic Spline Interpolation
- New ASL External Functions Library
- New solver interfaces:
knitro_directKNITRO Python bindings interface- Add
gurobi_directsupport for MINLP - 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.9
- This is the first release to be tested against Python 3.14
CHANGELOG
- General
- Core
- Documentation
- Update URLs in source code (#3755)
- Solver Interfaces
- Set Gurobi LogToConsole instead of OutputFlag to handle "tee" (#3716)
- New KNITRO direct solver interface (#3707)
- Add Gurobi direct support for MINLP (#3745)
- Bugfix: IPOPT log parser and no objective case (#3738)
- Add test to ensure
Resultsobject is populated fully (#3709) - Mark that AMPL Gurobi 12.0.3 returns incorrect dual values (#3750)
- Gams gurobi valid solvers fix (#3714)
- Validate new api_version() method, implement on wrapper classes (#3717)
- Testing
- Update to pypy3.11 and ignore pint (#3756)
- Contributed Packages
- alternative_solutions: Gurobi solution pool tweak (#3726)
- DoE: Finish GreyBox / ME-opt Hessian (#3740, #3727)
- DoE: Measurement error convention correction (#3723)
- piecewise: Fix deprecation in NonlinearToPWL/LinearRepnVisitor (#3752)
- PyROS: Restructure and add tutorial to online documentation (#3733)
- PyROS: Modify the logging system (#3732)
- PyROS: Ensure support for problems With no Vars/uncertain Params (#3720)
Pyomo 6.9.4
Highlights of the 6.9 release series
- Removed support for Python 3.8
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New External Function for Cubic Spline Interpolation
- New ASL External Functions Library
- New solver interfaces:
- Support for upcoming knitro Python package
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Core
- Bugfix: standard form with fixed variables (#3704)
- DAE
- Fix simulator bug (#3692)
- Solver Interfaces
- Testing
- Contributed Packages
- benders: Added support for HiGHS solver (#3686)
- DoE: Add grey box objectives (#3606)
- Parmest: Correct two very old test skips (#3697)
- Parmest: Extend capability for weighted SSE objective (#3535)
- PyROS: Modify two solver tests (#3694)
- sensitivity_toolbox: Sensitivity calculation for named expressions (#3685)
Pyomo 6.9.3
Highlights of the 6.9 release series
- Removed support for Python 3.8
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New External Function for Cubic Spline Interpolation
- New ASL External Functions Library
- New solver interfaces:
- Support for upcoming knitro Python package
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Typo corrections (#3675, #3652, #3615)
- Rework
ConfigDictnumpydoc generation support (#3667) - Improve
TeeStreamrobustness (#3583, #3588, #3601, #3633, #3640) - Modernize infrastructure to use
pyproject.toml(#3603, #3676) - Numpy2 compatibility fixes (#3607, #3636)
- Allow custom messages in derived classes from
PyomoException(#3596) - Resolve Python 3.14 compatibility issues (#3643)
- Resolve an assortment of infrastructure errors (pkg_resources/GAMS) (#3644)
- Introduce retries into
download-extensions(#3656) - Add project-level default configuration for
black(#3660)
- Core
- Simplify declaration of custom blocks, support rule keyword args (#3570)
- Bugfix: Evaluate name in message (#3580)
- Map Constraint.Feasible/Infeasible to concrete constraints (#3546)
- Rewrite
core.relax_integer_varstransformation (#3586, #3645) - Disallow calling
del_componentwith ComponentData arguments (#3440) - Initialize IndexSet from scalar functions returning dict (#3664)
- Refactor linear/quadratic expression compilers (#3651)
- Bugfixes for
core.lp_dualtransformation (#3672)
- Documentation
- GDP
- Enable parallel big-M calculation for
gdp.mbigmtransformation (#3641)
- Enable parallel big-M calculation for
- Solver Interfaces
- NL writer: resolve model scaling bug writing
Expressionobjects (#3673) - Add qp support for HiGHS (#3531)
- Update supported NEOS solvers (#3576, #3582, #3653)
- Resolve GAMS/Windows logfile name issue (#3595)
- Ensure full test list of solvers (#3598)
- Suppress warmstart message from Xpress (#3599)
- Resolve issues copying and pickling
SolverResults(#3597) - Detailed IPOPT log parser in
ipopt_v2(#3577) - Fix how QUADOBJ section written to MPS files (#3609)
- Correctly handle HighsModelStatus.kSolutionLimit (#3634)
- More robust GAMS results parsing (#3642)
- Mark expected failures for BARON 25.7.16 (#3662, #3665)
- Bugfix for comparing results objects to other types (#3677)
- Bugfix for SOS constraints and
row_orderoption in lp writer (#3678)
- NL writer: resolve model scaling bug writing
- Testing
- Contributed Packages
- APPSI: Remove debugging messages in
appsi_highs(#3613) - aslfunctions: Add external function library (#3648)
- cspline_external: Add utils to constrain parameter calculations (#3593)
- DoE: Various bugfixes (#3574)
- DoE: More verbose output for sensitivity analysis (#3525)
- DoE: Add update_model utility updating suffix values (#3650)
- mpc: Add time interpolation to data (#3559)
- parmest: Fix inconsistent results when using seed in examples (#3621)
- parmest: Bug fixes in main driver and example files (#3635)
- PyNumero: Improve BlockVector numpy2 compatibility (#3585)
- PyROS: Make exporting subproblems more customizable (#3649)
- PyROS: Update separation priority ordering interface (#3581)
- PyROS: Update uncertainty set validation methods (#3558)
- PyROS: Adjust handling of separation objective evaluation errors (#3646)
- sensitivity_toolbox: Pynumero: include independent variables (#3655)
- sensitivity_toolbox: Add PyNumero-based functions (#3561)
- simplification: Newer version of GiNaC - URL failure resolution (#3604)
- viewer: Update for PyQt6, improve load time (#3647)
- APPSI: Remove debugging messages in
Pyomo 6.9.2
Highlights of the 6.9 release series
- Removed support for Python 3.8
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New External Function for Cubic Spline Interpolation
- New solver interfaces:
- Support for upcoming knitro Python package
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Update Copyright to 2025 (#3515)
capture_output: do not output to captured file descriptors (#3537, #3560)calc_variable_from_constraint: guard against expression overflow (#3541)- Standardize the usage of pyomo.environ imports (#3545)
- Update ASL CMake builders (#3548)
- Support passing LoggerAdapter objects to LogStream (#3547)
- Core
- Documentation
- Solver Interfaces
- Fix bug in
XpressPersistent.update_var(#3566) - Avoid duplicate
AMPLFUNCentries inipopt_v2(#3554) - Update deprecation warnings in
contrib.solver(#3553, #3555) - Support for upcoming knitro python package (#3478)
- Future solver interface reorganization and updates (#3476)
- Update HiGHS interface to allow keyboard interrupts (#3509, #3511)
- Fix/extend MOSEK option handling (#3488)
- Fix bug in
- Testing
- Defer
pathlibimport, remove test output file (#3563) - Add IDAES Solvers to Mac; Update to Ubuntu 22.04 (#3556)
- Clean up numeric_expr dispatcher test driver (#3551)
- Testing and coverage fixes (#3549)
- Resolve intermittent test failure (increase sleep time) (#3517)
- Be more careful when/how we timeout conda install (#3514)
- Defer
- Contributed Packages
- cspline_external: Add a function for cubic spline interpolation (#3216)
- DoE: Correct initialization when using lower diagonal of FIM (#3532)
- FBBT: Resolve bug registering native type handlers (#3567)
- parmest/DoE: Ordering and param bug fixes (#3512)
- PyNumero: Add support for greybox models (#3364)
- PyROS: Modify Decision Rule Order Efficiency (#3562)
- PyROS: Revise second-stage equality reformulation under discrete
(scenario-based) uncertainty (#3533) - PyROS: Add Uncertain Parameter Reduction (#3503)
Pyomo 6.9.1
Highlights of the 6.9 release series
- Removed support for Python 3.8
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New solver interfaces:
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Documentation
- Testing
- Contributed Packages
Pyomo 6.9.0
Highlights of the 6.9 release series
- Removed support for Python 3.8
- New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
- New solver interfaces:
- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Core
- Solver Interfaces
- Testing
- Pin Sphinx to not 8.2.0 (#3479)
- Typos corrections (#3437, #3474)
- Address intermittent TeeStream test failure (#3465)
- 2025 Testing update: Black 25.1.0, testing Qt without X11 (#3463)
- Testing: exclude Xpress 9.5.1 on Windows/GHA/Python3.{0,1} (#3455)
- CY25 CI Infrastructure and typo fixes (#3453)
- Verify we are testing all NEOS solvers (#3433)
- Contributed Packages
- GDPOpt: Add Logic-Based Discrete-Steepest Descent Algorithm (#3331)
- PyROS: Fix/Tweak Documentation and Solver Output Logging (#3475)
- PyROS: Fix Treatment of Fixed Model Variables and Initialization of
Auxiliary Uncertain Parameters (#3461) - PyROS: Improve handling of separation problem sub-solver errors (#3441)
- PyROS: Extend valid types for solver argument
uncertain_params(#3439) - PyROS: Add Gaussian confidence level attribute to
EllipsoidalSet(#3434)
Pyomo 6.8.2
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
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
InvalidNumberhandling in writers (#3390) - Update
common.timingto make tests more deterministic (#3397) - Defer processing
ConfigValue/ConfigListdefault until first use (#3394) - Improved support for moved/renamed/deprecated modules (#3385)
- Fix
ConfigValueinitialization in multithreaded environments (#3405) ConfigDict: prevent recursion on partially-constructed objects (#3409)- Fix bug in
AutoSlotsdeepcopy (#3412, #3413) - Update
mpi4py_availableto work aroundconda-forge/openmpi(#3416)
- Core
- Documentation
- Solver Interfaces
- Remove deprecated
gurobipyaddConstrcall (#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/MPIBlockVectorbase 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_solutionof scaling
transformation (#3275) - Add
contextoption toSuffixFinder(#3348) - Remove the
_suppress_ctypesattribute from Block (#3347) - Improve
Setinitialization 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
resultandresults(#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