Skip to content

Releases: Pyomo/pyomo

Pyomo 6.8.1

15 Nov 20:02
4bb8c49
Compare
Choose a tag to compare

"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 InvalidNumber handling in writers (#3390)
    • Update common.timing to make tests more deterministic (#3397)
    • Defer processing ConfigValue/ConfigList default until first use (#3394)
    • Improved support for moved/renamed/deprecated modules (#3385)
    • Fix ConfigValue initialization in multithreaded environments (#3405)
    • ConfigDict: prevent recursion on partially-constructed objects (#3409)
    • Fix bug in AutoSlots deepcopy (#3412, #3413)
    • Update mpi4py_available to work around conda-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)
  • 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 gurobipy addConstr call (#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)
  • 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/MPIBlockVector base class order (#3380)
    • PyNumero: Resolve incompatibilities with NumPy2 (#3408)
    • PyROS: Overhaul preprocessor subroutine and subproblem objects (#3341)

Pyomo 6.8.0

20 Aug 18:42
5609a8a
Compare
Choose a tag to compare

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_solution of scaling
      transformation (#3275)
    • Add context option to SuffixFinder (#3348)
    • Remove the _suppress_ctypes attribute from Block (#3347)
    • Improve Set initialization 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)
  • Solver Interfaces
    • Resolve NLv2 incompatibility with multithreading (#3332)
    • Resolve writer performance degradation (#3343)
    • Fix bug with inconsistent use of result and results (#3337)
    • LegacySolverWrapper: restore 'options' attribute (#3334)
    • Fix bug in XpressDirect._load_slacks (#3318)
    • NLv2: support expressions with nested external functions (#3319)
    • Ignore errors on ASL solver version check (#3298)
    • Add SAS solver interface (#2886, #3309)
  • Testing
    • 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)
    • incidence_analysis: Raise error in generate_strongly_connected_components
      instead of asserting (#3305)
    • parmest: Add missing main call for example file (#3349)
    • piecewise: Add incremental PW linear to MIP transformation (#3287)
    • piecewise: Add nonlinear-to-piecewise-linear transformation (#3333)
    • PyNumero: Support user-provided CyIpopt callbacks with 13 arguments (#3289)
    • PyNumero: Support PyomoNLP scaling factors on sub-blocks (#3295)
    • PyROS: Temporarily Adjust NL Writer Feasibility Tolerance (#3280)
    • viewer: Add option to specify the model by variable name (#3271)

Pyomo 6.7.3

29 May 21:57
8a90b66
Compare
Choose a tag to compare

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 NameError in some situations (#3264)
  • 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)

Pyomo 6.7.2

09 May 16:01
6f0dc65
Compare
Choose a tag to compare

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 Var objects in LinearExpression.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)
  • 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 LegacySolverWrapper compatibility with the pyomo script (#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_direct implementation (#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)
  • 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)
    • 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 in IncidenceGraphInterface.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

21 Feb 17:33
8b20d3d
Compare
Choose a tag to compare

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)

Pyomo 6.7.0

30 Nov 03:01
3b0edaf
Compare
Choose a tag to compare

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)

Pyomo 6.6.2

23 Aug 22:42
751392b
Compare
Choose a tag to compare

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)

Pyomo 6.6.1

30 May 20:38
3788135
Compare
Choose a tag to compare

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)

Pyomo 6.6.0

24 May 22:50
d39671e
Compare
Choose a tag to compare

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)

Pyomo 6.5.0

16 Feb 17:19
2dda659
Compare
Choose a tag to compare

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)