Skip to content

Releases: Pyomo/pyomo

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)

Pyomo 6.4.4

09 Dec 22:23
b0967c6
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
  • 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)

Pyomo 6.4.3

28 Nov 16:59
b749afe
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
  • 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

17 Aug 16:05
3333cec
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
  • 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)

Pyomo 6.4.1

13 May 18:26
a415dbf
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
  • 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)

Pyomo 6.4.0

16 Mar 15:32
7c42cec
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
  • Added support for Python 3.10
  • Removed support for Python 3.6
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • External grey box models
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • General
    • Distribute the ampl_function_demo C source / cmake files (#2319)
    • Add GitHub URL to setup.py for PyPI (#2325)
    • Use constant indentation for long lines in the HierarchicalTimer (#2336)
  • Core
    • Remove incomplete pyomo/core/base/alias.py module (#2284)
    • Remove Python 3.6 support (#2312)
  • Solver Interfaces
    • Remove PICO solver interface (#2341)
  • Testing
    • Add Windows pip single test (#2334)
    • Fix test docstrings in piecewise to silence warnings (#2342)
  • Contributed Packages
    • APPSI: Update Gurobi solver unavailable message (#2320)
    • APPSI: Remove distributables for Windows (#2326)
    • APPSI: Fix bugs when working with the Gurobi solution pool (#2335)
    • APPSI: Fix bug in persistent update for FBBT (#2340)
    • Preprocessing: Stop using polynomial_degree to check for linear and
      constant expressions (#2324)
    • PyNumero: Improve coverage of mpi block matrix tests (#2318)
    • PyNumero: Skip bound/domain validation in ExternalPyomoModel (#2323)
    • PyNumero: Remove deprecated useage of numpy.bool (#2339)
    • PyROS: Fix variable default initialization (#2331)

Pyomo 6.3.0

23 Feb 23:56
536deaa
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
  • Added support for Python 3.10
  • New packages:
    • APPSI (Auto-Persistent Pyomo Solver Interfaces)
    • External grey box models
    • PyROS (Pyomo Robust Optimization Solver)
    • Structural model analysis
    • Rewrite of the TrustRegion Solver

Changes in this release

  • ADVANCE CHANGE NOTICE

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

    • Construct slices with normalized indices in slicing utility (#2223)
    • Remove hard-coded project name from default attempt_import() message (#2237)
    • Add --with-distributable-extensions option to setup.py (#2260)
    • Update Pyomo versioning to always include the micro version number (#2265)
    • Remove optional_packages from pyomo.environ (#2195)
    • Add Python 3.10 as an officially-supported interpreter (#2302)
    • TempfileManager updates (deletion order, add context) (#2297)
    • Add report_scaling utility to detect potential scaling issues (#2252)
  • Core

    • Check Var bounds when setting values (#2196)
    • Fix bug in implicit Var construction (#2210)
    • Add support for user-defined Component List starting index (#2215)
    • Switch Var.value setter to validate values (#2214)
    • Overload component initializers with named keyword params (#2212, #2230)
    • Resolve errors when creating Reference to a scalar Set (#2229)
    • Standardize scalar-valued external function interfaces (#2231)
    • Resolve bugs in cloning _ImplicitAny domains (#2233)
    • Redesign Var.stale handling to use a global state flag (#2249)
    • Update differentiate() to accept string mode identifiers (#2266)
    • Add as_quantity: evaluate a Pyomo expression to a pint Quantity (#2222)
    • NPV_SumExpression to inherit from NPV_Mixin (#2209)
    • Add support for abs in numeric differentiation (#2232)
    • Search filesystem for AMPLExternalFunction library (#2305)
  • Documentation

    • Updates to installation documentation (#2259)
    • Update GDP references (#2300)
    • Add example AMPL external function library (#2295)
  • Solver Interfaces

    • Disable log file in gurobi_direct when keepfiles=False (#2203)
    • Remove old GLPK interfaces (#2256)
    • Support gurobi lp interface through gurobipy module (#2262)
    • Update CBC version identification (#2250)
    • Increase CBC timeout when getting version/asl compatibility (#2293)
    • Deprecate the Alias component (#2288)
    • Remove XPRESS interface (#2273)
    • Support string arguments in NL external functions (#2295)
    • Fix reversed NL operator codes for floor/ceil (#2216)
  • Testing

    • Skip some fileutils tests on OSX Big Sur and Python<3.8 (#2224)
    • Fix Windows/Python 3.6 testing dependency (#2234)
    • Update test suite for BARON 22.1.19 (#2268)
    • Rework coverage uploads to use GitHub Actions (#2225)
    • Add option to test driver for turning off log capture (#2198)
    • Relaxing timing target for Windows GHA (#2303)
    • Resolve GDP test failure for missing solvers (#2306)
    • Testing infrastructure Refactor: nosetests to pytest (#2298)
    • Make time limit more robust for APPSI (#2296)
    • Resolve failing floating-point comparison failures in FBBT (#2244)
    • Check gurobipy availability in doctests (#2253)
  • GDP Updates

    • Ensure gdp.fix_disjuncts always creates a fully algebraic model (#2263)
    • Add partition_disjuncts and between_steps transformations (#2221)
  • Contributed Packages

    • APPSI: Fix bug with CBC options (#2243)
    • APPSI: Correctly identify changes to constraints (#2299)
    • APPSI: Improvements to persistent interface (#2246)
    • APPSI: Implement FBBT in C++ module (#2248)
    • APPSI: Resolve build errors on Windows (#2309)
    • GDPopt: Fix bugs in preprocessing (#2211)
    • GDPopt: Switch preprocessing to use FBBT (#2264)
    • incidence_analysis: General improvements (#2239, #2240)
    • MindtPy: Update online docs and logging (#2219, #2207)
    • MindtPy: Add Primal/Dual Integral (#2285)
    • MindtPy: Nonlinear sum reformulation of objective of MINLP (#2276)
    • Parmest: Covariance matrix (#2287), Add examples (#2274)
    • PyNumero: Add scaling factor support to ExternalPyomoModel (#2269)
    • PyNumero: Use projected NLPs for ExternalPyomoModel inner problems (#2283)
    • PyNumero: Add SQP example (#2291)
    • PyROS: Support ConstraintList and range constraints (#2206)
    • PyROS: Add optional bypassing of global separation subproblems (#2254)
    • TrustRegion: New implementation of Trust Region Framework (#2238, #2279)