Releases: Pyomo/pyomo
Releases · Pyomo/pyomo
Release list
Pyomo 6.10.1
Highlights of the 6.10 release series
- Removed support for Python 3.9
- Removed hard dependency on
ply - New Model Observer package
- New
initializationmodule for nonconvex, nonlinear problems - New solver interfaces:
gams_v2solver, writer, and solution loadercuoptdirect solver interfacescipdirect and persistent solver interfaces- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Core
- Remove
pyomo.dualityandpyomo.core.plugins.transform.model(#3876) - Improved
ConstraintData.equalityrelational expression generation (#3893) - Add new KKT Transformation for generating KKT reformulations (#3881)
- New options/mappings in the core.add_slack_variables Transformation (#3869)
- Centralize processing of monomial terms in LinearRepn compiler (#3956)
- Remove
- Documentation
- Remove "deep" references to
scipopt.org; update DOI for DoE paper (#3968) - Add AI policy to contribution guide (#3959)
- Add a new template for tracking tasks (#3935)
- Document use of 'Draft' status when reviewing PRs (#3918)
- Improve documentation for mutable vs immutable Params (#3890)
- Update README processing, version management (#3873)
- Update URL for cyipopt documentation (#3909)
- Remove "deep" references to
- GDP
- Solver Interfaces
- Fix memory leak in LegacySolverInterface wrapper (#3915)
- Add direct and persistent interfaces to SCIP (#3744)
- KNITRO: Add warm start support (#3833)
- Handle cuOpt UnboundedOrInfeasible termination status (11) (#3916)
- Fix bug in IPOPT version checking (#3862)
- Add tests for trivial constraints (#3703)
- Rework
SolutionLoader(#3701)
- Testing
- Add missing Ipopt guards (parmest); add GHA nosolvers test (#3962)
- Unpin GAMS release; rebuild GHA package cache (#3950)
- Update GHA TPL cache; resolve new test failures (#3865)
- Temporarily pin to PyPy 7.3.20 (#3899)
- Update actions; exclude mathworks from URL checks (#3900, #3929)
- Bugfix for non-standard sed on OSX (#3901)
- Update osx installers and urlchecker environment (#3914)
- GHA: run tests on draft PRs (#3926)
- Add NEOS solvers (#3919, #3924)
- Disallow cplex 22.1.2.1 from conda (#3910)
- Contributed Packages
- DoE: Fix trace/Cholesky initialization consistency (#3867)
- DoE: Update documentation (#3812)
- iis: Fix interface for current CPLEX releases (#3965)
- initialization: New tools for initializing nonconvex NLPs (#3912)
- mpc: Skip Expressions when loading MPC data (#3868)
- MindtPy: Internal short circuit base (#3907)
- MindtPy: Fix results returned when no discrete variables present (#3861)
- parmest/DoE: Reorganizing Documentation Pages (#3904)
- parmest: Simplify _Q_opt with block scenario structure (#3789)
- parmest: Add regularization objective option (#3550)
- piecewise: Factorable Programming for PWL Approximations (#3821)
- piecewise: Separate linear terms in
nonlinear_to_pwltransform. (#3814) - PyNumero: Efficiency change to sensitivity toolbox calculations (#3905)
- PyNumero: Use Hessian approximation for grey-boxes sent to CyIpopt (#3892)
- PyROS: Fix typos in PyROS
CardinalitySetdocumentation (#3972) - PyROS: Extend the
CardinalitySetto allow negative deviations (#3969) - PyROS: Add
CartesianProductSet(#3927, #3951) - PyROS: Add caching for computed uncertain parameter bounds (#3877)
- PyROS: Amend documentation of
BudgetSet.budget_membership_mat(#3954) - TrustRegion: Remove direct manipulation of
stdout(#3902) - TrustRegion: Add funnel globalization mechanism (#3823)
Pyomo 6.10.0
Highlights of the 6.10 release series
- Removed support for Python 3.9
- Removed hard dependency on
ply - New Model Observer package
- New solver interfaces:
gams_v2solver, writer, and solution loadercuoptdirect solver interface- v2: Ongoing solver interface refactor
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Remove support for Python 3.9 (#3760)
- Typo corrections (#3779, #3831)
- Remove external
plydependency (#3840) - Apply 2026
blackformatting updates (#3820) - Update copyright to 2026 (#3846)
- Improvements to
Configclasses, tests, and docs (#3790) - Improve efficiency of nested
StreamIndenterobjects (#3813)
- Core
- Documentation
- GDP
- Fix bug transforming Blocks in
gdp.mbigmtransformation (#3811)
- Fix bug transforming Blocks in
- Solver Interfaces
- Update
ipopt_v2interface (#3792) - Add cuOpt direct solver (#3620)
- Improvements for KNITRO interface (#3762, #3765, #3766, #3802, #3824,
#3826, #3827, #3837, #3794) - Remove
iteration_countas a default Results object value (#3767) - Compute
wall_timeusingtime.perf_counter(#3825) - Incorporate Model observer into
gurobi_v2interface (#3698) - Add new GAMS interface, writer, and solution loader (#3683)
- Update
- Testing
- Testing infrastructure cleanup/rework (#3764, #3770, #3773, #3810)
- Correct broken URLs (#3761, #3796, #3845, #3847, #3848)
- Pytest version workarounds (#3780, #3784)
- Specify
openmpibuild type in testing environment (#3797) - Add flexibility to error checking for
gurobi_minlp(#3822) - Update solver tests for gurobiasl 13.0.0 (#3850)
- Rework
conftest.pyto support solver/writer marker expressions (#3854) - Relax mumps reallocation test (#3857)
- Contributed Packages
- DoE: Disable unreliable test (#3776)
- DoE: Correct A optimality (#3803)
- DoE: Replace computationally expensive example with Rooney Biegler (#3828)
- GDPopt: Improvements to LDSDA (#3830)
- observer: Add in Model observer package (#3695, #3829)
- Parmest: Consolidate Rooney Biegler (#3793)
- Parmest: Update documentation (#3791)
- PyROS: Update tests for Python 3.14 (#3782)
- PyROS: Fix
IntersectionSetimplementation (#3786) - PyROS: Fix scaling typo in separation objectives (#3817)
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)