Pyomo Versions Save

An object-oriented algebraic modeling language in Python for structured optimization problems.

6.7.1

2 months ago

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; add DefaultComponentMap (#3150)
    • Update Path, PathList, and IsInstance Domain Validators (#3144)
    • Remove usage of __all__ (#3142)
    • Extend Path and Type Checking Validators of common.config (#3140)
    • Update Copyright Statements (#3139)
    • Update ExitNodeDispatcher to better support extensibility (#3125)
    • Create contributors data gathering script (#3117)
    • Prevent duplicate entries in ConfigDict declaration order (#3116)
    • Remove unnecessary __future__ imports (#3109)
    • Import pandas through pyomo.common.dependencies (#3102)
    • Update links to workshop slides (#3079)
    • Remove incorrect use of identity (is) comparisons (#3061)
  • Core
    • Add Block.register_private_data_initializer() (#3153)
    • Generalize the simple_constraint_rule decorator (#3152)
    • Fix edge case assigning new numeric types to Var/Param with units (#3151)
    • Add private_data to _BlockData (#3138)
    • IndexComponent create implicit sets as "anonymous" sets (#3075)
    • Add all_different and count_if to the logical expression system (#3058)
    • Fix RangeSet.len when defined by floats (#3119)
    • Overhaul the Suffix component (#3072)
    • Enforce expression immutability in expr.args (#3099)
    • Improve NumPy registration when assigning numpy to Param (#3093)
    • Track changes in PyPy behavior introduced in 7.3.14 (#3087)
    • Remove automatic numpy import (#3077)
    • Fix range_difference for Sets with nonzero anchor points (#3063)
    • Clarify errors raised by accessing Sets by positional index (#3062)
  • 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, distutils dependencies) (#3065)
  • DAE
    • Replace deprecated numpy.math alias with standard math module (#3074)
  • 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.ExpressionBoundsVisitor to handle relational expressions and Expr_if (#3129)
    • incidence_analysis: Method to add an edge in IncidenceGraphInterface (#3120)
    • incidence_analysis: Add subgraph method to IncidencegraphInterface (#3122)
    • incidence_analysis: Add ampl_repn option (#3069)
    • incidence_analysis: Update documentation (#3067)
    • interior_point: Resolve test failure due to Mumps update (#3114)
    • MindtPy: Various bug fixes (#3034)
    • PyROS: Update Solver Argument Resolution and Validation Routines (#3126)
    • PyROS: Update Subproblem Initialization Routines (#3071)
    • PyROS: Fix DR polishing under nominal objective focus (#3060)

6.7.0

5 months ago

Highlights of the 6.7 release series

  • Added support for Python 3.12
  • Removed support for Python 3.7
  • New writer for converting linear models to matrix form
  • New packages:
    • latex_printer (print Pyomo models to a LaTeX compatible format)
  • ...and of course numerous minor bug fixes and performance enhancements

Changes in this release

  • General
    • Remove Python 3.7, add Python 3.12 Support (#3050, #2956)
    • Update report_timing() to support context manager API (#3039)
    • Add Preformatted class for logging preformatted messages (#2998)
    • QuadraticRepnVisitor: Improve nonlinear expression expansion (#2997)
    • Add CITATION file to main repository (#2992)
    • Minor typo / formatting fixes (#3010, #2975)
  • Core
    • Fix exception from interaction of Gurobi, Pint, Dask, and Threading (#3026)
    • Fix differentiation of Expressions with native_numeric_types (#3017)
    • Warn for explicit declaration of immutable params with units (#3004)
    • Use SetInitializer for initializing Param domains; reinitializing IndexedVar domains (#3001)
    • Ensure templatize_constraint returns an expression (#2983)
    • Prevent multiple applications of the scaling transform (#2979)
  • Solver Interfaces
    • Remove presolve-eliminated variables from named expressions (#3056)
    • Improve LP/NL writer determinism (#3054)
    • Add "writer" for converting linear models to standard matrix form (#3046)
    • NLv2/LPv2: Log which suffix values were skipped at the DEBUG level (#3043)
    • NLv2: add linear presolve and general problem scaling support (#3037)
    • Adjust mps writer format for integer variable declaration (#2946)
    • Fix scip results processing (#3023)
    • Fix quadratic objective off-diagonal-terms in cplex_direct interface (#3025)
    • Consolidate walker logic in LP/NL representations (#3015)
    • LP writer: warn user for ignored suffixes (#2982)
    • Update handling of 0* in linear, quadratic walkers (#2981)
  • Testing
    • Pin gurobipy version for testing to 10.0.3 (#3053)
    • Update Performance Plot URL (#3033)
    • Track change in Black rules (#3021)
    • Resolve build infrastructure errors (with mpi4py, gams, networkx) (#3018)
    • Improve GHA conda env package setup (#3013, #2967)
    • Update Gurobi license checks in tests (#3011)
    • Skip fileutils test failure that persists in OSX 12.7 (#3008)
    • LINTING: New Version of crate-ci/typos (#2987)
  • GDP
    • Improve Disjunction construction error for invalid types (#3042)
    • Adding new walker for compute_bounds_on_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 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)

6.6.2

8 months ago

Highlights of the 6.0 release series

  • Improved stability and robustness of core Pyomo code and solver interfaces
  • Integration of Boolean variables into GDP
  • Integration of NumPy support into the Pyomo expression system
  • Implemented a more performant and robust expression generation system
  • Implemented a more performant NL file writer (NLv2)
  • Implemented a more performant LP file writer (LPv2)
  • Applied PEP8 standards throughout the codebase
  • Added support for Python 3.10, 3.11
  • Removed support for Python 3.6
  • Removed the pyomo check command
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • CP (Constraint programming models and solver interfaces)
    • DoE (Model based design of experiments)
    • External grey box models
    • IIS (Standard interface to solver IIS capabilities)
    • MPC (Data structures/utils for rolling horizon dynamic optimization)
    • piecewise (Modeling with and reformulating multivariate piecewise linear functions)
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • ADVANCE CHANGE NOTICE

    • This will be the last release to support Python 3.7.
  • General

    • Fall back on multiprocessing.dummy when multiprocessing.Pool is not available (#2890)
    • Clean up implicit function imports (#2892)
    • Ensure all pyomo modules import without warnings (#2897)
    • Resolve FileDownloader.get_os_version exception for missing lsb_release (#2911)
    • Improve calculate_variable_from_constraint error messages (#2914)
    • Add function for collecting expressions with unit inconsistencies (#2904)
    • Fix loading Scalar Param from .dat file (#2923)
  • Core

    • Resolve kernel pickle/clone errors (#2916)
    • Reorganize numeric expression modules (#2909)
    • Resolve error categorizing some Var discrete domains as "integer" (#2954)
    • Named expressions: expr should always return NumericValue (#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.common documentation (#2912)
    • Remove HTML4 Forcing in Online Docs (#2949)
    • Improved documentation for SOS (#2875)
    • Silence deprecation warnings (#2854)
  • Solvers Interfaces

    • Resolve handling of {}**0 in Linear/QuadraticRepn (#2857)
    • Fix Linear/QuadraticRepnVisitor handling of {}**{float} (#2863, #2865)
    • GAMS: fix pickling models, update tests (#2913)
    • Xpress: fix NLP results processing for Xpress 9.2.0 (#2921)
    • Improve NaN handling in LP, NL writers (#2930)
    • Ensure constants written correctly to LP/NL files (#2953)
  • Testing

    • Remove the 'singletest' job from "branches" builds (#2917)
    • Reactivate NEOS-MOSEK Tests (#2870)
    • New version of crate-ci/typos GitHub 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_logic transformation (#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 land in contrib.logical_to_disjunctive transformation (#2879)
    • DoE: Update tutorial notebook (#2889)
    • incidence_analysis: Filter variables with non-constant, fixed expressions that resolve to zero in get_incident_variables (#2882)
    • incidence_analysis: Correct behavior of linear_only argument in get_incident_variables (#2883)
    • MindtPy: Refactor to improve extensibility and maintainability (#2887)
    • PyNumero: Add PyNumeroEvaluationError (#2901)
    • PyNumero: Make min and max work with MPIBlockVector when some blocks have size 0 (#2896)
    • PyNumero: Remove old, unused PyNumero code (#2895)
    • PyNumero: Fix typo in docstring (#2873)
    • sensitivity_toolbox: Send lists to numpy.vstack rather than iterators (#2881)
    • viewer: Fix model viewer (#2924)

6.6.1

11 months ago

Highlights of the 6.0 release series

  • Improved stability and robustness of core Pyomo code and solver interfaces
  • Integration of Boolean variables into GDP
  • Integration of NumPy support into the Pyomo expression system
  • Implemented a more performant and robust expression generation system
  • Implemented a more performant NL file writer (NLv2)
  • Implemented a more performant LP file writer (LPv2)
  • Applied PEP8 standards throughout the codebase
  • Added support for Python 3.10, 3.11
  • Removed support for Python 3.6
  • Removed the pyomo check command
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • CP (Constraint programming models and solver interfaces)
    • DoE (Model based design of experiments)
    • External grey box models
    • IIS (Standard interface to solver IIS capabilities)
    • MPC (Data structures/utils for rolling horizon dynamic optimization)
    • piecewise (Modeling with and reformulating multivariate piecewise linear functions)
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • General
    • 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)
  • 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)

6.6.0

11 months ago

Highlights of the 6.0 release series

  • Improved stability and robustness of core Pyomo code and solver interfaces
  • Integration of Boolean variables into GDP
  • Integration of NumPy support into the Pyomo expression system
  • Implemented a more performant and robust expression generation system
  • Implemented a more performant NL file writer (NLv2)
  • Implemented a more performant LP file writer (LPv2)
  • Applied PEP8 standards throughout the codebase
  • Added support for Python 3.10, 3.11
  • Removed support for Python 3.6
  • Removed the pyomo check command
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • CP (Constraint programming models and solver interfaces)
    • DoE (Model based design of experiments)
    • External grey box models
    • IIS (Standard interface to solver IIS capabilities)
    • MPC (Data structures/utils for rolling horizon dynamic optimization)
    • piecewise (Modeling with and reformulating multivariate piecewise linear functions)
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • General
    • Remove pyomo check/pyomo.checker module (#2753)
    • Improve formatting of docstrings generated from ConfigDict (#2754)
    • Deprecate add_docstring_list (#2755)
    • Reapply black to previously completed directories (#2775)
    • Improve formatting for DeveloperError, MouseTrap messages (#2805)
  • 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 LinearExpressions in NL writer (#2811)
    • GAMS/Baron: ensure negative numbers are parenthesized (#2833)
    • Release LP version 2 (LPv2) writer (#2823, #2840)
  • 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)
  • Contributed Packages
    • APPSI: Improve logging consistency across solvers (#2787)
    • APPSI: Update available method in APPSI-Gurobi interface (#2828)
    • DoE: Release version 2 (#2794)
    • incidence_analysis: Remove strict usage of PyomoNLP (#2752)
    • incidence_analysis: Test IndexedBlock (#2789)
    • incidence_analysis: Use standard repn for incidence graph generation (#2834)
    • Parmest: Update for pandas 2.0.0 release (#2795)
    • piecewise: Add contrib.piecewise package (#2708, #2768, #2766, #2797, #2798, #2826)
    • PyNumero: Refactor CyIpopt interface to subclass cyipopt.Problem (#2760)
    • PyNumero: Fix CyIpopt interface when load_solutions=False (#2820)
    • PyROS: Fixes to PyROS Separation Routine (#2815)
    • PyROS: Fixes to Coefficient Matching and Timing Functionalities (#2837)

6.5.0

1 year ago

Highlights of the 6.0 release series

  • Improved stability and robustness of core Pyomo code and solver interfaces
  • Integration of Boolean variables into GDP
  • Integration of NumPy support into the Pyomo expression system
  • Implemented a more performant NL file writer (NLv2)
  • Added support for Python 3.10, 3.11
  • Removed support for Python 3.6
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • CP (Constraint programming models and solver interfaces)
    • DoE (Model based design of experiments)
    • External grey box models
    • IIS (Standard interface to solver IIS capabilities)
    • MPC (Data structures/utils for rolling horizon dynamic optimization)
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • General
    • Apply black to enforce PEP8 standards in certain modules (#2737, #2738, #2733, #2732, #2731, #2728, #2730, #2729, #2720, #2721, #2719, #2718)
    • Add Developers' call information to README (#2665)
    • Deprecate pyomo.checker module (#2734)
    • Warn when infeasibility tools will not log output (#2666)
    • Separate identification from logging in pyomo.util.infeasible.log_* (#2669)
    • Convert subprocess timeout parameters to module attributes (#2672)
    • Resolve consistency issues in the Bunch class (#2685)
    • Remove GSL downloader from download-extensions (#2725)
    • Update enhancement GitHub issue template to link to wiki (#2739)
    • Add deprecation warning to pyomo command (#2740)
    • Require version= for all deprecation utilities (#2744)
    • Fix pyomo --version version string (#2743)
  • 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 nose references (#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 active filter to flattener (#2643)
  • GDP
    • Add GDP-to-MIP transformation base class (#2687)
  • Contributed Packages
    • DoE: New module for model-based design of experiments (#2294, #2711, #2527)
    • FBBT: Add tolerances to tests (#2675)
    • GDPopt: Switch a LBB test to use Gurobi as MINLP solver (#2686)
    • incidence_analysis: Add plot method to IncidenceGraphInterface (#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)

6.4.4

1 year ago

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 txt to md files (CHANGELOG, LICENSE, RELEASE) (#2635)
    • Parallelize build of manylinux wheels (#2636)
    • Update source for Jenkins status badge (#2639, #2640)
    • Update relocated_module_attribute to work with cythonized modules (#2644)
    • Add utility methods to HierarchicalTimer (#2651)
  • 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 pyutilib directory 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 logical_to_disjunctive and replace uses of logical_to_linear (#2627)
  • Contributed Packages
    • FBBT: Fix bug with ExternalFunction expressions (#2657)
    • PyROS: Fix uncertain param bounds evaluation for FactorModelSet (#2620)
    • PyROS: Add origin attribute to BudgetSet (#2645)
    • PyROS: Fix UncertaintySet.bounding_problem method (#2659)

6.4.3

1 year ago

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)

6.4.2

1 year ago

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
    • 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 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)

6.4.1

2 years ago

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)