Recent Releases of pyomo
pyomo - 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
- Cleanup
collectionsmodule (#3708) - Work around environments where
IntEnum.__doc__is None (#3711) - Standardize 'multiprocessing' deferred import (#3702)
- Resolve
capture_output(capture_fd=True)deadlock on Windows (#3679)
- Cleanup
- Core
- Bugfix: standard form with fixed variables (#3704)
- DAE
- Fix simulator bug (#3692)
- Solver Interfaces
- Add reporting of SCIP node count to solver results (#3691)
- Create API version attribute for different solver generations (#3699)
- Ipopt_v2: update options processing (#3693)
- Expanded LegacySolverWrapper fixes (#3700)
- Testing
- Update GAMS download to new "latest" link (#3706)
- New TPL cache version on GHA workflows (#3705)
- 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)
- Python
Published by mrmundt 9 months ago
pyomo - 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
- Remove outdated references to
contrib.simplemodel(#3666) - Document and test dual sign convention (#3528)
- Remove references to projects.coin-or.org (#3612)
- Add solver information table to "Getting Started" (#3619)
- Rework logic in
building_documentation()(#3680)
- Remove outdated references to
- 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
- Exclude gnu.org from the URL checker tests (#3674)
- Remove leftover files after testing (#3670)
- Relax test tolerances due to changes in Xpress 45.1.1 (#3584)
- Remove
__version__requirement for performance test driver (#3617) - Temporarily pinning scikit-learn version (#3625)
- 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
- Python
Published by mrmundt 10 months ago
pyomo - 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
- Support multi-column DataFrames in Initializer (#3552)
- Multiple dispatch for relational expression generation (#3483)
- Type check
exceptionargs in component__call__implementations (#3538)
- Documentation
- Move RTD ads to the sidebar (#3536)
- Standardize Example Imports (#3543)
- LD-SDA Documentation (#3539)
- Fix broken URLs in documentation (#3529, #3544)
- Update future solver interface documentation (#3526)
- Document
BlockData.clone(#3542)
- 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)
- Python
Published by mrmundt about 1 year ago
pyomo - 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
- Remove URL and replace with full citation (#3490)
- Rename project "pyomo" in setup.py PEP 625
- Resolve errors in
TeeStreamandcapture_output(#3497)
- Documentation
- Update autosummary for Sphinx 8.2.1 (#3492)
- Resolve errors building documentation PDF (#3495)
- Testing
- conda: disable '--update-deps' to work around buggy libffi(?) (#3499)
- Update for March 2024 typos release (#3500)
- Add timeout when installing optional packages (solvers) in conda (#3501)
- Updates to CodeCov configuration (#3491)
- Contributed Packages
- APPSI: Add warmstart for appsi_highs (issue #3450) (#3494)
- Python
Published by blnicho about 1 year ago
pyomo - 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
- Big Wheel of Misfortune - A Practice in Reviewing Old Issues (#3460, #3473)
- Resolve buffering issues in
TeeStreamandcapture_output(#3449) - Update GHA badges on README.md (#3457)
- Fix incompatibility with
impandDeferredImportCallbackFinder(#3444) - Remove Python 3.8 Support (#3438)
- Core
- Resolve error parenthesizing pow mantissa (#3472)
- Resolve OSX error accessing closed filehandle (#3467)
- Allow construction of CUID from another CUID (#3464)
- Clean up
identify_variables/identify_mutable_parameters; deprecateSimpleExpressionVisitor(#3436)
- Solver Interfaces
- Solver refactor: BUGFIX, f-string in contrib/solver (#3481)
- Update Gurobi NL interface for Gurobi 12.x (#3470)
- Defer starting the SAS session until needed (#3448)
- Solver refactor: Validator for
teeincontrib.solver.config(#3482)
- 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)
- Python
Published by mrmundt over 1 year ago
pyomo - 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
- Core
- Resolve errors in mapping ScalarVar to numpy ndarray (#3423)
- Documentation
- Update Documentation URLs (#3425)
- Solver Interfaces
- Resolve error in xpress_direct interface retrieving reduced costs (#3422)
- Testing
- Remove (unused) legacy test drivers (#3427)
- Python
Published by blnicho over 1 year ago
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
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
- Resolve bugs in
create_node_with_local_data(#3376) - Resolve issue in filter/validate deprecation path (#3368)
- Support
Param.pprint()for non-finite Params (#3387) - Add (parameterized) linear programming dual transformation (#3402)
- Resolve bugs in
- Documentation
- Autogenerate API documentation (#3378)
- Add Alternative Solutions documentation (#3370)
- Reorganize online documentation (#3382)
- Fix broken doc URLs (#3398)
- Improved autoenum documentation (#3389)
- Reduce the number of formats built on readthedocs to avoid timeout (#3404)
- 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)
- Python
Published by mrmundt over 1 year ago
pyomo - 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
- Add ParameterizedQuadraticRepn and corresponding walker (#3324)
- Update Pyomo for NumPy 2.0 compatibility (#3292, #3353)
- Add ParameterizedLinearRepn and corresponding walker (#3268)
- Update Release Process Workflow for changes in
pip(#3355)
- 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.loadslacks (#3318)
- NLv2: support expressions with nested external functions (#3319)
- Ignore errors on ASL solver version check (#3298)
- Add SAS solver interface (#2886, #3309)
- Testing
- Omnibus testing / platform portability fixes (#3335)
- Change BARON download URL (#3328)
- Disable interface/testing for NEOS/octeract (#3322)
- Fix typo in Jenkins driver (#3312)
- Jenkins: update logic for recording variables (#3311)
- Unpin Codecov / Update coverage (#3303)
- 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)
- incidenceanalysis: Raise error in `generatestronglyconnectedcomponents` 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)
- Python
Published by mrmundt almost 2 years ago
pyomo - 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
- Deprecate
pyomo.core.plugins.transform.model.to_standard_form()(#3265) - Reorder definitions to avoid
NameErrorin some situations (#3264)
- Deprecate
- Solver Interfaces
- NLv2: Fix linear presolver with constant defined vars/external fcns (#3276)
- Testing
- Add URL checking to GHA linting job (#3259, #3261)
- Skip Windows Python 3.8 conda GHA job (#3269)
- Contributed Packages
- DoE: Bug fixes for workshop (#3267)
- viewer: Update guard for pint import (#3277)
- Python
Published by blnicho almost 2 years ago
pyomo - 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
- Allow
Varobjects inLinearExpression.args(#3189) - Add type hints to components (#3173)
- Simplify expressions generated by
TemplateSumExpression(#3196) - Make component data public classes (#3221, #3253)
- Exploit repeated named expressions in
identify_variables(#3190)
- Allow
- Documentation
- NFC: Add link to the HOMOWP companion notebooks (#3195)
- Update installation documentation to include Cython instructions (#3208)
- Add links to the Pyomo Book Springer page (#3211)
- 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
LegacySolverWrappercompatibility with thepyomoscript (#3202) - Fix mosek_direct to use putqconk instead of putqcon (#3199)
- Check skiptrivial_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_directimplementation (#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
- Use private_data for all original / transformed component mappings (#3166)
- Fix a bug in gdp.bigm transformation for nested GDPs (#3213)
- 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)
- incidenceanalysis: Improve `solvestronglyconnectedcomponents` performance for models with named expressions (#3186)
- incidence_analysis: Add function to plot incidence graph in Dulmage-Mendelsohn order (#3207)
- incidenceanalysis: Require variables and constraints to be specified separately in `IncidenceGraphInterface.removenodes` (#3212)
- latex_printer: bugfix for set operations / multidimensional sets (#3177)
- MindtPy: Add HiGHS support (#2971)
- MindtPy: Add callbeforesubproblem_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)
- Python
Published by jsiirola about 2 years ago
pyomo - 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, andIsInstanceDomain Validators (#3144) - Remove usage of
__all__(#3142) - Extend Path and Type Checking Validators of
common.config(#3140) - Update Copyright Statements (#3139)
- Update
ExitNodeDispatcherto 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 simpleconstraintrule decorator (#3152)
- Fix edge case assigning new numeric types to Var/Param with units (#3151)
- Add privatedata to `BlockData` (#3138)
- IndexComponent create implicit sets as "anonymous" sets (#3075)
- Add
all_differentandcount_ifto the logical expression system (#3058) - Fix RangeSet.len when defined by floats (#3119)
- Overhaul the
Suffixcomponent (#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_differencefor Sets with nonzero anchor points (#3063) - Clarify errors raised by accessing Sets by positional index (#3062)
- Add
- Documentation
- Update intersphinx links, remove docs for nonfunctional code (#3155)
- Update MPC documentation and citation (#3148)
- Fix an error in the documentation for LinearExpression (#3090)
- Fix Pyomo.DoE documentation (#3070)
- Fix latex_printer documentation (#3066)
- Solver Interfaces
- Preview release of new solver interfaces as pyomo.contrib.solver (#3137, #3156)
- Make error msg more explicit wrt different interfaces (#3141)
- NLv2: only raise exception for empty models in the legacy API (#3135)
- Add
to_expr()to AMPLRepn, fix NLWriterInfo return type (#3095)
- 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,distutilsdependencies) (#3065)
- DAE
- Replace deprecated
numpy.mathalias with standardmathmodule (#3074)
- Replace deprecated
- GDP
- Handle nested GDPs correctly in all the transformations (#3145)
- Fix bugs in nested models in gdp.hull transformation (#3143)
- Various bug fixes in gdp.mbigm transformation (#3073)
- Add GDP => MINLP Transformation (#3082)
- Contributed Packages
- GDPopt: Fix lbb solve_data bug (#3133)
- GDPopt: Adding missing import for gdpopt.enumerate (#3105)
- FBBT: Extend
fbbt.ExpressionBoundsVisitorto 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)
- incidenceanalysis: Add `amplrepn` 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)
- Python
Published by mrmundt over 2 years ago
pyomo - 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
Preformattedclass for logging preformatted messages (#2998) - QuadraticRepnVisitor: Improve nonlinear expression expansion (#2997)
- Add
CITATIONfile 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
Expressionswithnative_numeric_types(#3017) - Warn for explicit declaration of immutable params with units (#3004)
- Use
SetInitializerfor initializingParamdomains; reinitializingIndexedVardomains (#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
gurobipyversion 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
fileutilstest failure that persists in OSX 12.7 (#3008) - LINTING: New Version of
crate-ci/typos(#2987)
- Pin
- GDP
- Improve Disjunction construction error for invalid types (#3042)
- Adding new walker for computeboundson_expr (#3027)
- Fix bugs in gdp.bound_pretransformation (#2973)
- Fix various bugs in GDP transformations (#3009)
- Add a few more GDP examples (#2932)
- 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 computeboundson_expr (#3027)
- incidence_analysis: Fix bugs with subset ordering and 0 coefficients (#3041)
- incidence_analysis: Update paper reference (#2969)
- latexprinter: Add contrib.latexprinter 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)
- Python
Published by jsiirola over 2 years ago
pyomo - 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 checkcommand - 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.dummywhenmultiprocessing.Poolis not available (#2890) - Clean up implicit function imports (#2892)
- Ensure all pyomo modules import without warnings (#2897)
- Resolve
FileDownloader.get_os_versionexception for missinglsb_release(#2911) - Improve
calculate_variable_from_constrainterror messages (#2914) - Add function for collecting expressions with unit inconsistencies (#2904)
- Fix loading Scalar Param from
.datfile (#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:
exprshould always returnNumericValue(#2948) - Support kwargs in partial objects passed to Initializer() (#2960)
- Remove
expr.current(#2910)
Documentation
- Fixing a 'that' vs. 'which' mistake in error about bounds crossing (#2950)
- Add Explicit Linting Instructions to PR Template (#2947)
- Update
pyomo.commondocumentation (#2912) - Remove HTML4 Forcing in Online Docs (#2949)
- Improved documentation for SOS (#2875)
- Silence deprecation warnings (#2854)
Solvers Interfaces
- Resolve handling of
{}**0in 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
- Remove the 'singletest' job from "branches" builds (#2917)
- Reactivate NEOS-MOSEK Tests (#2870)
- New version of
crate-ci/typosGitHub Actions (#2869, #2931)
DAE
- Improve error message when attempting to discretize models with circular references (#2943)
GDP
- Fixing a typo in gdp.hull transformation (#2915)
- Add some more instances to the GDP constrained layout example (#2838)
- Adding (reversible)
gdp.transform_current_disjunctive_logictransformation (#2809)
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
landincontrib.logical_to_disjunctivetransformation (#2879) - DoE: Update tutorial notebook (#2889)
- incidenceanalysis: Filter variables with non-constant, fixed expressions that resolve to zero in `getincident_variables` (#2882)
- incidenceanalysis: Correct behavior of `linearonly
argument ingetincidentvariables` (#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.vstackrather than iterators (#2881) - viewer: Fix model viewer (#2924)
- Python
Published by mrmundt almost 3 years ago
pyomo - 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 checkcommand - 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
- Update cmake builder for recent setuptools (#2847)
- Fixing minor formatting for 6.6.0 release changes (#2842)
- Silence deprecation warnings (#2854)
- Core
- Update indentation handling in
config.StringFormatter(#2853) - Restore slice API broken by #2829 (#2849)
- Resolve handling of {}**0 in
LinearRepn/QuadraticRepn(#2857)
- Update indentation handling in
- Solver Interfaces
- NL writer: resolve error identifying vars in indexed SOS (#2852)
- Manage Gurobi environments in GurobiDirect (#2680)
- Contributed Packages
- cp: fix handling fixed BooleanVars in logical-to-disjunctive walker (#2850)
- FBBT: Fix typo when handling GeneralExpression objects (#2848)
- MindtPy: add support for cyipopt (#2830)
- Python
Published by jsiirola almost 3 years ago
pyomo - 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 checkcommand - 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
- Remove
pyomo check/pyomo.checkermodule (#2753) - Improve formatting of docstrings generated from
ConfigDict(#2754) - Deprecate
add_docstring_list(#2755) - Reapply
blackto previously completed directories (#2775) - Improve formatting for
DeveloperError,MouseTrapmessages (#2805)
- Remove
- 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
- Copyright and Book Updates (#2750)
- Link documentation in incidence_analysis README (#2759)
- Update ReadtheDocs Configuration (#2780)
- Correct import in community.rst (#2792)
- Remove instructions for python <= 3.0 (#2822)
- 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
LinearExpressionsin NL writer (#2811) - GAMS/Baron: ensure negative numbers are parenthesized (#2833)
- Release LP version 2 (LPv2) writer (#2823, #2840)
- NEOS: fix typo in
- Testing
- Rework Upload of Coverage Reports (#2761)
- Update constant for visitor tests for python 3.11.2 (#2799)
- Auto-Linting: Spelling Black Style Checker (#2800, #2818)
- Skip MOSEK tests on NEOS (due to unknown NEOS error) (#2839)
- GDP
- Add
gdp.bound_pretransformation(#2824)
- Add
- Contributed Packages
- APPSI: Improve logging consistency across solvers (#2787)
- APPSI: Update
availablemethod 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)
- Python
Published by blnicho about 3 years ago
pyomo - 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
blackto 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.checkermodule (#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
pyomocommand (#2740) - Require
version=for all deprecation utilities (#2744) - Fix
pyomo --versionversion string (#2743)
- Apply
- Core
- Fix minor typo: taht -> that in set.py (#2679)
- Fix bugs in scaling transformation (#2678)
- Rework handling of 'dimensionless' units in Pyomo (#2691)
- Solver Interfaces
- Switch default NL writer to nlv2 and bug fixes (#2676, #2710, #2726)
- Enable MOSEK10 warm-start flag and relocate var initialization (#2647)
- Fix handling of POW in Baron writer (#2693)
- Update GAMS license check to avoid exception when not available (#2697)
- Documentation
- Fix incorrect documentation for sending options to solvers (#2688)
- Fix Sphinx warnings (#2712)
- Document Python Version Support policy (#2735)
- Document deprecation and removal of functionality (#2741)
- Document docstring formatting requirements (#2742)
- Testing
- Skip failing Baron tests (#2694)
- Remove residual
nosereferences (#2736) - Update GHA setup-python version (#2705)
- Improve GHA conda setup performance (#2701)
- Add unit test for QCQO problems with MOSEK (#2682)
- DAE
- Fix typo in
__init__.py(#2683) - Add
activefilter to flattener (#2643)
- Fix typo in
- 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
plotmethod toIncidenceGraphInterface(#2716) - incidence_analysis: Refactor to cache a graph instead of a matrix (#2715)
- incidence_analysis: Add documentation and update API (#2727, #2745)
- incidenceanalysis: Add logging solvestronglyconnectedcomponents (#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 usertime and wallclocktime 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)
- Python
Published by jsiirola over 3 years ago
pyomo - Pyomo 6.4.4
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
- 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)
- 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
- Convert
txttomdfiles (CHANGELOG,LICENSE,RELEASE) (#2635) - Parallelize build of manylinux wheels (#2636)
- Update source for Jenkins status badge (#2639, #2640)
- Update
relocated_module_attributeto work with cythonized modules (#2644) - Add utility methods to
HierarchicalTimer(#2651)
- Convert
- Core
- Fix preservation of stale flags through clone/pickle (#2633)
- Add support for local suffixes in scaling transformation (#2619)
- Solver Interfaces
- Fix handling of nonconvex MIQCP problems in Xpress (#2625)
- Testing
- Update GitHub actions to cancel jobs when new changes are pushed (#2634)
- Remove requirement for a
pyutilibdirectory in Jenkins driver (#2637) - Enable GitHub actions build on Windows Python 3.11 (#2638)
- Add build services infrastructure status badge (#2646)
- Add version upper bound on MOSEK warmstart test skip (#2649)
- Improve compare.py handling of nosetests/pytest output (#2661)
- GDP
- Add option to use multiple-bigm only on bound constraints (#2624)
- Add logicaltodisjunctive and replace uses of logicaltolinear (#2627)
- Contributed Packages
- FBBT: Fix bug with
ExternalFunctionexpressions (#2657) - PyROS: Fix uncertain param bounds evaluation for
FactorModelSet(#2620) - PyROS: Add origin attribute to
BudgetSet(#2645) - PyROS: Fix
UncertaintySet.bounding_problemmethod (#2659)
- FBBT: Fix bug with
- Python
Published by mrmundt over 3 years ago
pyomo - Pyomo 6.4.3
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
- 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)
- 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
- Update PauseGC to work in nested contexts (#2507)
- Simplify deepcopy/pickle logic to speed up model clone (#2510)
- Fix generatestandardrepn to handle unexpected NPV expressions (#2511)
- Add thread safe proxies for PauseGC, TempFileManager singletons (#2514)
- Fix ConstructionTimer bug for components indexed by nonfinite sets (#2518)
- Add calculatevariablefrom_constraint differentiation mode option (#2549)
- Update URL for downloading GSL and GJH (#2556, #2588)
- Update logic for retrying failed downloads (#2569)
- Add support and testing for Python 3.11 (#2596, #2618)
- Update deprecation utilities to improve user messages (#2606)
- Core
- Refactor expression hierarchy, add RelationalExpression base class (#2499)
- Support cloning individual blocks (#2504)
- Block performance improvements (#2508)
- Add support for creating a slice to a single ComponentData object (#2509)
- Fix missing import of value in pyomo.core.base.external (#2525)
- Improve handling of restricted words on Blocks (#2535)
- Improve Reference() performance (#2537)
- Fix mapping gradient/hessian for external functions with string args (#2539)
- Fix bug for sum_product(Var, Param, Param) (#2551)
- Add deprecation path for expression objects moved to relational_expr (#2554)
- Exception when setting value of Expression to non-numeric expression (#2567)
- Improve deepcopy performance (#2628)
- Documentation
- Fix examples in working_models.rst (#2502)
- Solver Interfaces
- Improve SCIP results object (#2462)
- Improve warning message when LP writer raises KeyError (#2497)
- Fix Gurobi work limit bug (#2530)
- Updates and fixes for the NLv2 writer (#2540, #2622, #2568)
- Fix Xpress when stopped due to MAXTIME or MAXNODES (#2553)
- Add support for MOSEK 10 affine conic constraints (#2557)
- Fix missing explicit space in GAMS put command (#2578)
- Fix GAMS logfile storage location (#2580)
- LP writer performance improvements (#2583, #2585)
- Update handling of MOSEK Env and Python module (#2591)
- Release MOSEK license when optimize raises a mosek.Error (#2593)
- Update list of allowable characters in CPLEX filenames (#2597)
- Testing
- Update performance driver to be usable outside of Pyomo (#2505)
- Update the performance test driver (#2538)
- Reduce amount of environment code cached in GitHub actions (#2565)
- Update GitHub actions versions from v2 to v3 (#2566)
- Allow nan to compare equal in assertStructuredAlmostEqual() (#2582)
- Add test utilities for comparing expressions (#2590)
- Skip a test in MOSEK 10 due to a bug in warm starting MIQPs (#2614)
- Update skipped CBC test that works with CBC 2.10.6 (#2615)
- Add SCIP to GitHub actions environment (#2602)
- GDP
- Use OrderedSet instead of list in GDPTree to improve performance (#2516)
- Reduce calls to logicaltolinear in GDP transformations (#2519)
- Add utility for gathering BigM values after transformation (#2520)
- Add tighter logical constraints in transformations of nested GDPs (#2550)
- Fix pickling of transformed GDP models (#2576)
- Add multiple-bigM transformation (#2592)
- Improve performance of BigM transformation (#2605)
- Remove weakref mapping Disjunctions to their algebraic_constraint (#2617)
- Contributed Packages
- APPSI: Fix exception raised by appsi_gurobi during Python shutdown (#2498)
- APPSI: Improve handling of Gurobi results (#2517)
- APPSI: Add interface to HiGHS solver (#2561)
- APPSI: Only release Gurobi license after deleting all instances (#2599)
- APPSI: Patch IntEnum to preserve pre-3.11 formatting (#2607)
- CP: New package for constraint programming (#2570, #2612)
- GDPopt: Add warning when reporting results from LBB (#2534)
- GDPopt: Delete dummy objective when we're done using it (#2552)
- GDPopt: Add enumerate solution approach (#2559, #2575)
- IIS: Add package for computing the IIS of an infeasible Pyomo model (#2512)
- MindtPy: Fix bug in termination condition (#2587)
- MindtPy: Fix bug in checking absolute and relative gap (#2608)
- MPC: Data structures/utils for rolling horizon dynamic optimization (#2477)
- Parmest: Solve square problem to initialize regression problem (#2438)
- Parmest: Return ContinuousSet values from theta_est() (#2464)
- PyNumero: Fix NumPy deprecation warnings (#2521)
- PyNumero: Add interfaces to SciPy square solvers (#2523)
- PyNumero: Check AmplInterface availability in SciPy solver tests (#2594)
- PyNumero: Add ProjectedExtendedNLP class (#2601)
- PyNumero: Add interface to SciPy scalar Newton solver (#2603)
- PyROS: Rewrite UncertaintySet docstrings/improve validation (#2488)
- PyROS: Updates to subproblem initialization and solver call routines (#2515)
- PyROS: Fix collection of sub-solver solve times (#2543)
- Python
Published by jsiirola over 3 years ago
pyomo - Pyomo 6.4.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
- Added support for Python 3.10
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Resolve dill incompatibility with attempt_import (#2419)
- Speed up book tests and improve import/logging infrastructure (#2449)
- Make typing overloads available at runtime (#2471)
- Update list of known TPLs to reflect Python 3.10 (#2478)
- Add NL writer version 2 but don't activate by default (#2473)
- Add deprecation.relocated_module utility (#2492)
- Core
- Support cython functions through Initializer (#2421)
- Ensure UnindexedComponent_set is correctly pickled/restored (#2416)
- Update asnumeric() to raise an exception on non-isnumeric_type() Pyomo objects (#2444)
- replace_expressions: support replacing variables with constants (#2410)
- Update componentdataobjects and componentdataiterindex to not return duplicate data (#2456)
- Fix exception handling logic bug in quicksum (#2458)
- Reduce recursion in model clone/deepcopy (#2487)
- Resolve exception cloning empty LinearExpression objects (#2489)
- Resolve errors from inplace operators on Expression objects (#2493)
- Documentation
- Fix typos and incorrect link (#2420, #2482)
- Fix Sphinx warnings in documentation builds (#2434)
- Solver Interfaces
- Add support for SCIP 8.0 (#2409)
- Add explicit space to GAMS put statements to support GAMS 39+ (#2450)
- Catch exceptions in BARON interface when parsing objective bounds (#2467)
- Testing
- Skip SCIP 8.0 tests on PyPy (#2424)
- Force conda to use conda-forge channel in GHA (#2430)
- Fix GHA win/3.10 Python version inconsistency (#2433)
- Enable Pyomo.DAE Simulator tests on PyPy (#2443)
- Abort the Jenkins build if virtualenv creation fails (#2451)
- Remove scipy from GHA PyPy builds (#2474)
- Move performance testing driver scripts to scripts/performance (#2476)
- Improve common.timing test robustness (#2490)
- Contributed Packages
- APPSI: Improve error message in nl writer when all variables fixed (#2407)
- APPSI: Fix bug in Gurobi interface when modifying the objective (#2454)
- APPSI: Solve blocks that use variables that are not on the block (#2453)
- APPSI: Method to release Gurobi license from persistent interface (#2480)
- community_detection: Trap exceptions from networkx (#2415)
- FBBT: Add tolerances to tests (#2445)
- GDPopt: Refactor to improve extensibility and maintainability (#2406)
- incidence_analysis: Add method for weakly connected components (#2418)
- MindtPy: Fix bug in copying variable values between models (#2432)
- MindtPy: Add support for appsicplex and appsigurobi (#2373)
- Parmest: Add utils submodule and support to convert Params to Vars (#2352)
- Parmest: Fix use of relocatedmoduleattribute (#2472)
- PyROS: Fixes to ellipsoidal sets (#2425)
- PyROS: Account for variable domains (#2426)
- PyROS: Fix objective validation (#2371)
- PyROS: Avoid master feasibility problem unit consistency checks (#2459)
- PyROS: Fix discrete uncertainty set separation (#2469)
- PyROS: Update exception handling parsing BARON lower/upper bounds (#2486)
- Python
Published by jsiirola almost 4 years ago
pyomo - Pyomo 6.4.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
- Added support for Python 3.10
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Extend linux distribution map logic (#2361)
- Improve string processing in ConfigList, ConfigDict, and ListOf (#2360)
- Update copyright assertion (#2368, #2378)
- Deprecate name_buffer argument to getname (#2370)
- Defer construction of the main Pyomo parser (#2385)
- Improve error checking parsing ConfigDict string value (#2399)
- Core
- Add indices to ComponentData objects (#2351)
- Ignore SetOf, BuildAction, and BuildCheck when checking units (#2366)
- Improve support for absolute value in differentiation and FBBT (#2347)
- Allow relative tolerance when comparing unit dimensionality (#2395)
- Solver Interfaces
- Fix bug in GLPK solver plugin (#2348)
- Update BARON solution parser (#2367)
- Testing
- Turn on failure for codecov-action (#2343)
- Fixes to GHA due to updates to Ubuntu runner and Conda (#2356, #2384, #2396)
- Update setup-python and pypy in GHA (#2364)
- Pin version of openmpi used for testing (#2369)
- DAE Updates
- Fix typo preventing a DAE test from running (#2349)
- Contributed Packages
- APPSI: Minor improvements and generalizations (#2383, #2386, #2389, #2391, #2388, #2392)
- incidence_analysis: Add option to ignore inequality constraints in IncidenceGraphInterface (#2350)
- MC++: Update interface tests (#2400)
- MindtPy: Add quadratic_strategy option to pass quadratic constraints or objectives to MIP solvers (#2338)
- Parmest: Skip tests when seaborn and matplotlib are missing (#2394)
- PyROS: Improve feasibility problem formulation, objective validation (#2353, #2371)
- Python
Published by jsiirola about 4 years ago
pyomo - Pyomo 6.4.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
- Added support for Python 3.10
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Distribute the amplfunctiondemo C source / cmake files (#2319)
- Add GitHub URL to setup.py for PyPI (#2325)
- Use constant indentation for long lines in the HierarchicalTimer (#2336)
- Core
- Remove incomplete pyomo/core/base/alias.py module (#2284)
- Remove Python 3.6 support (#2312)
- Solver Interfaces
- Remove PICO solver interface (#2341)
- Testing
- Add Windows pip single test (#2334)
- Fix test docstrings in piecewise to silence warnings (#2342)
- Contributed Packages
- APPSI: Update Gurobi solver unavailable message (#2320)
- APPSI: Remove distributables for Windows (#2326)
- APPSI: Fix bugs when working with the Gurobi solution pool (#2335)
- APPSI: Fix bug in persistent update for FBBT (#2340)
- Preprocessing: Stop using polynomial_degree to check for linear and constant expressions (#2324)
- PyNumero: Improve coverage of mpi block matrix tests (#2318)
- PyNumero: Skip bound/domain validation in ExternalPyomoModel (#2323)
- PyNumero: Remove deprecated useage of numpy.bool (#2339)
- PyROS: Fix variable default initialization (#2331)
- Python
Published by jsiirola about 4 years ago
pyomo - Pyomo 6.3.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
- Added support for Python 3.10
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- 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.6.
General
- Construct slices with normalized indices in slicing utility (#2223)
- Remove hard-coded project name from default attempt_import() message (#2237)
- Add --with-distributable-extensions option to setup.py (#2260)
- Update Pyomo versioning to always include the micro version number (#2265)
- Remove optional_packages from pyomo.environ (#2195)
- Add Python 3.10 as an officially-supported interpreter (#2302)
TempfileManagerupdates (deletion order, add context) (#2297)- Add
report_scalingutility to detect potential scaling issues (#2252)
Core
- Check Var bounds when setting values (#2196)
- Fix bug in implicit Var construction (#2210)
- Add support for user-defined Component List starting index (#2215)
- Switch Var.value setter to validate values (#2214)
- Overload component initializers with named keyword params (#2212, #2230)
- Resolve errors when creating Reference to a scalar Set (#2229)
- Standardize scalar-valued external function interfaces (#2231)
- Resolve bugs in cloning _ImplicitAny domains (#2233)
- Redesign Var.stale handling to use a global state flag (#2249)
- Update differentiate() to accept string mode identifiers (#2266)
- Add
as_quantity: evaluate a Pyomo expression to a pintQuantity(#2222) - NPVSumExpression to inherit from NPVMixin (#2209)
- Add support for
absin numeric differentiation (#2232) - Search filesystem for AMPLExternalFunction library (#2305)
Documentation
- Updates to installation documentation (#2259)
- Update GDP references (#2300)
- Add example AMPL external function library (#2295)
Solver Interfaces
- Disable log file in gurobi_direct when keepfiles=False (#2203)
- Remove old GLPK interfaces (#2256)
- Support gurobi lp interface through gurobipy module (#2262)
- Update CBC version identification (#2250)
- Increase CBC timeout when getting version/asl compatibility (#2293)
- Deprecate the
Aliascomponent (#2288) - Remove XPRESS interface (#2273)
- Support string arguments in NL external functions (#2295)
- Fix reversed NL operator codes for floor/ceil (#2216)
Testing
- Skip some fileutils tests on OSX Big Sur and Python<3.8 (#2224)
- Fix Windows/Python 3.6 testing dependency (#2234)
- Update test suite for BARON 22.1.19 (#2268)
- Rework coverage uploads to use GitHub Actions (#2225)
- Add option to test driver for turning off log capture (#2198)
- Relaxing timing target for Windows GHA (#2303)
- Resolve GDP test failure for missing solvers (#2306)
- Testing infrastructure Refactor:
noseteststopytest(#2298) - Make time limit more robust for APPSI (#2296)
- Resolve failing floating-point comparison failures in FBBT (#2244)
- Check gurobipy availability in doctests (#2253)
GDP Updates
- Ensure gdp.fix_disjuncts always creates a fully algebraic model (#2263)
- Add
partition_disjunctsandbetween_stepstransformations (#2221)
Contributed Packages
- APPSI: Fix bug with CBC options (#2243)
- APPSI: Correctly identify changes to constraints (#2299)
- APPSI: Improvements to persistent interface (#2246)
- APPSI: Implement FBBT in C++ module (#2248)
- APPSI: Resolve build errors on Windows (#2309)
- GDPopt: Fix bugs in preprocessing (#2211)
- GDPopt: Switch preprocessing to use FBBT (#2264)
- incidence_analysis: General improvements (#2239, #2240)
- MindtPy: Update online docs and logging (#2219, #2207)
- MindtPy: Add Primal/Dual Integral (#2285)
- MindtPy: Nonlinear sum reformulation of objective of MINLP (#2276)
- Parmest: Covariance matrix (#2287), Add examples (#2274)
- PyNumero: Add scaling factor support to ExternalPyomoModel (#2269)
- PyNumero: Use projected NLPs for ExternalPyomoModel inner problems (#2283)
- PyNumero: Add SQP example (#2291)
- PyROS: Support ConstraintList and range constraints (#2206)
- PyROS: Add optional bypassing of global separation subproblems (#2254)
- TrustRegion: New implementation of Trust Region Framework (#2238, #2279)
- Python
Published by jsiirola over 4 years ago