Releases: Pyomo/pyomo
Releases · Pyomo/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
- Documentation
- Solver Interfaces
- Fix division by zero error in linear presolve (#3161)
- Subprocess timeout update (#3183)
- Solver Refactor - Bug fixes for various components (#3181, #3214, #3228)
- NLv2: handle presolved independent linear subsystems (#3193)
- Update
LegacySolverWrappercompatibility with thepyomoscript (#3202) - Fix mosek_direct to use putqconk instead of putqcon (#3199)
- Check _skip_trivial_constraints before the constraint body (#3226)
- Fix AMPL solver duplicate funcadd (#3206)
- Disable the use of universal newlines in the ipopt_v2 NL file (#3231)
- NLv2: fix reporting numbers of nonlinear discrete variables (#3238)
- Fix: Get SCIP solving time considering float number with some text (#3234)
- Solver Refactor - Add
gurobi_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
- Contributed Packages
- APPSI: cmodel: handle non-mutable params in var / constraint bounds (#3182)
- APPSI: Allow APPSI FBBT to handle nested named Expressions (#3185)
- APPSI: Add MAiNGO solver interface (#3165)
- CP: Add SequenceVar and other logical expressions for scheduling (#3227)
- DoE: Bug fixes (#3245)
- iis: Add minimal intractable system infeasibility diagnostics (#3172)
- incidence_analysis: Improve
solve_strongly_connected_components
performance for models with named expressions (#3186) - incidence_analysis: Add function to plot incidence graph in
Dulmage-Mendelsohn order (#3207) - incidence_analysis: Require variables and constraints to be specified
separately inIncidenceGraphInterface.remove_nodes(#3212) - latex_printer: bugfix for set operations / multidimensional sets (#3177)
- MindtPy: Add HiGHS support (#2971)
- MindtPy: Add call_before_subproblem_solve callback (#3251)
- Parmest: New UI using experiment lists (#3160)
- piecewise: Add piecewise linear transformations (#3036)
- preprocessing: bugfix: intersect domains in variable aggregator (#3241)
- PyNumero: Allow CyIpopt to solve problems without objectives (#3163)
- PyNumero: Work around bug in CyIpopt 1.4.0 (#3222)
- PyNumero: Include "inventory" in readme (#3248)
- PyROS: Simplify custom domain validators (#3169)
- PyROS: Fix iteration logging for edge case involving discrete sets (#3170)
- PyROS: Update solver timing system (#3198)
- simplification: expression simplification using GiNaC or SymPy (#3088)
Pyomo 6.7.1
Highlight of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- Improved handling of nested GDPs
- New packages:
- latex_printer: print Pyomo models to a LaTeX compatible format
- contrib.solver: preview of redesigned solver interfaces
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Add support for tuples in
ComponentMap; addDefaultComponentMap(#3150) - Update
Path,PathList, 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 simple_constraint_rule decorator (#3152)
- Fix edge case assigning new numeric types to Var/Param with units (#3151)
- Add private_data to
_BlockData(#3138) - IndexComponent create implicit sets as "anonymous" sets (#3075)
- Add
all_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
- Solver Interfaces
- Testing
- Update Release Wheel Builder Action (#3149)
- Actions Version Update: Address node.js deprecations (#3118)
- New Black Major Release (24.1.0) (#3108)
- Use scip for PyROS tests (#3104)
- Add missing solver dependency flags for OnlineDocs tests (#3094)
- Re-enable
contrib.viewer.tests.test_qt.py(#3085) - Add automated testing of OnlineDocs examples (#3080)
- Silence deprecation warnings emitted by Pyomo tests (#3076)
- Fix Python 3.12 tests (manage
pyutilib,distutilsdependencies) (#3065)
- DAE
- Replace deprecated
numpy.mathalias with standardmathmodule (#3074)
- Replace deprecated
- GDP
- 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)
- incidence_analysis: Add
ampl_repnoption (#3069) - incidence_analysis: Update documentation (#3067)
- interior_point: Resolve test failure due to Mumps update (#3114)
- MindtPy: Various bug fixes (#3034)
- PyROS: Update Solver Argument Resolution and Validation Routines (#3126)
- PyROS: Update Subproblem Initialization Routines (#3071)
- PyROS: Fix DR polishing under nominal objective focus (#3060)
Pyomo 6.7.0
Highlights of the 6.7 release series
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- New packages:
- latex_printer (print Pyomo models to a LaTeX compatible format)
- ...and of course numerous minor bug fixes and performance enhancements
Changes in this release
- General
- Remove Python 3.7, add Python 3.12 Support (#3050, #2956)
- Update report_timing() to support context manager API (#3039)
- Add
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; reinitializing
IndexedVardomains (#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
- Contributed Packages
- APPSI: Add interface to WNTR (#2902)
- APPSI: Capture HiGHS output when initializing model (#3005)
- APPSI: Fix auto-update when unfixing variable and changing bounds (#2996)
- APPSI: Fix reference bug in HiGHS interface (#2995)
- FBBT: Add new walker for compute_bounds_on_expr (#3027)
- incidence_analysis: Fix bugs with subset ordering and 0 coefficients (#3041)
- incidence_analysis: Update paper reference (#2969)
- latex_printer: Add contrib.latex_printer package (#2984)
- MindtPy: Add support for GreyBox models (#2988)
- parmest: Cleanup examples and tests (#3028)
- PyNumero: Handle evaluation errors in CyIpopt solver (#2994)
- PyROS: Report relative variable shifts in solver logs (#3035)
- PyROS: Update logging system (#2990)
Pyomo 6.6.2
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Implemented a more performant and robust expression generation system
- Implemented a more performant NL file writer (NLv2)
- Implemented a more performant LP file writer (LPv2)
- Applied PEP8 standards throughout the
codebase - Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- Removed the
pyomo 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 missing
lsb_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
-
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
-
DAE
- Improve error message when attempting to discretize models with circular
references (#2943)
- Improve error message when attempting to discretize models with circular
-
GDP
-
Contributed Packages
- APPSI: change default behavior to not care where variables live (#2903)
- APPSI: Correctly Process Objective Bounds from Gurobi for Nonconvex QCPs
(#2898) - community_detection: fix networkx dependency in doctests (#2885)
- cp: Fix bug with
landincontrib.logical_to_disjunctivetransformation
(#2879) - DoE: Update tutorial notebook (#2889)
- incidence_analysis: Filter variables with non-constant, fixed expressions
that resolve to zero inget_incident_variables(#2882) - incidence_analysis: Correct behavior of
linear_onlyargument in
get_incident_variables(#2883) - MindtPy: Refactor to improve extensibility and maintainability (#2887)
- PyNumero: Add
PyNumeroEvaluationError(#2901) - PyNumero: Make min and max work with MPIBlockVector when some blocks have
size 0 (#2896) - PyNumero: Remove old, unused PyNumero code (#2895)
- PyNumero: Fix typo in docstring (#2873)
- sensitivity_toolbox: Send lists to
numpy.vstackrather than iterators
(#2881) - viewer: Fix model viewer (#2924)
Pyomo 6.6.1
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Implemented a more performant and robust expression generation system
- Implemented a more performant NL file writer (NLv2)
- Implemented a more performant LP file writer (LPv2)
- Applied PEP8 standards throughout the codebase
- Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- Removed the
pyomo 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
- Core
- Solver Interfaces
- Contributed Packages
Pyomo 6.6.0
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Implemented a more performant and robust expression generation system
- Implemented a more performant NL file writer (NLv2)
- Implemented a more performant LP file writer (LPv2)
- Applied PEP8 standards throughout the
codebase - Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- Removed the
pyomo 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
- Core
- Bugfix: component indexes specified as lists (#2765)
- Remove the use of weakrefs in
SymbolMap(#2791) - Improve conversions between Pyomo and Sympy expressions (#2806)
- Rework expression generation to leverage multiple dispatch (#2722)
- Improve robustness of
calculate_variable_from_constraint()(#2812) - Add support for infix Boolean logical operators (#2835)
- Improvements to Pyomo component iteration (#2829)
- Documentation
- Solvers Interfaces
- NEOS: fix typo in
kestrelAMPL.kill()argument (#2758) - Better handling of mutable parameters in HiGHS interface (#2763)
- Improve linear data structure in NL writer (#2769)
- Bugfix for shared named expressions in NL writer (#2790)
- Resolve NPV constants in
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
- 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)
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
- Solver Interfaces
- Documentation
- Testing
- DAE
- GDP
- Add GDP-to-MIP transformation base class (#2687)
- Contributed Packages
- DoE: New module for model-based design of experiments (#2294, #2711, #2527)
- FBBT: Add tolerances to tests (#2675)
- GDPopt: Switch a LBB test to use Gurobi as MINLP solver (#2686)
- incidence_analysis: Add
plotmethod toIncidenceGraphInterface(#2716) - incidence_analysis: Refactor to cache a graph instead of a matrix (#2715)
- incidence_analysis: Add documentation and update API (#2727, #2745)
- incidence_analysis: Add logging solve_strongly_connected_components (#2723)
- MindtPy: Refactor to improve extensibility and maintainability (#2654)
- Parmest: Suppress mpi-sppy output in import (#2692)
- PyNumero: Add tee argument to Pyomo-SciPy square solvers (#2668)
- PyNumero: Support implicit function solvers in ExternalPyomoModel (#2652)
- PyROS: Fix user_time and wallclock_time bug (#2670)
- PyROS: More judicious enforcement of PyROS Solver time limit (#2660, #2706)
- PyROS: Update documentation (#2698, #2707)
- PyROS: Adjust routine for loading DR polishing model solutions (#2700)
- Viewer: Update to support PySide6 and display units and domain (#2689)
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
- Core
- 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
- Contributed Packages
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 generate_standard_repn 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 calculate_variable_from_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 logical_to_linear 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)
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 as_numeric() to raise an exception on non-is_numeric_type() Pyomo
objects (#2444) - replace_expressions: support replacing variables with constants (#2410)
- Update component_data_objects and component_data_iterindex 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
- Solver Interfaces
- 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 appsi_cplex and appsi_gurobi (#2373)
- Parmest: Add utils submodule and support to convert Params to Vars (#2352)
- Parmest: Fix use of relocated_module_attribute (#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)