Releases: Pyomo/pyomo
Releases · Pyomo/pyomo
Pyomo 6.5.0
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Implemented a more performant NL file writer (NLv2)
- Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- CP (Constraint programming models and solver interfaces)
- DoE (Model based design of experiments)
- External grey box models
- IIS (Standard interface to solver IIS capabilities)
- MPC (Data structures/utils for rolling horizon dynamic optimization)
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Apply
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)
- Apply
- Core
- Solver Interfaces
- Documentation
- Testing
- DAE
- GDP
- Add GDP-to-MIP transformation base class (#2687)
- Contributed Packages
- DoE: New module for model-based design of experiments (#2294, #2711, #2527)
- FBBT: Add tolerances to tests (#2675)
- GDPopt: Switch a LBB test to use Gurobi as MINLP solver (#2686)
- incidence_analysis: Add
plot
method toIncidenceGraphInterface
(#2716) - incidence_analysis: Refactor to cache a graph instead of a matrix (#2715)
- incidence_analysis: Add documentation and update API (#2727, #2745)
- incidence_analysis: Add logging solve_strongly_connected_components (#2723)
- MindtPy: Refactor to improve extensibility and maintainability (#2654)
- Parmest: Suppress mpi-sppy output in import (#2692)
- PyNumero: Add tee argument to Pyomo-SciPy square solvers (#2668)
- PyNumero: Support implicit function solvers in ExternalPyomoModel (#2652)
- PyROS: Fix user_time and wallclock_time bug (#2670)
- PyROS: More judicious enforcement of PyROS Solver time limit (#2660, #2706)
- PyROS: Update documentation (#2698, #2707)
- PyROS: Adjust routine for loading DR polishing model solutions (#2700)
- Viewer: Update to support PySide6 and display units and domain (#2689)
Pyomo 6.4.4
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- CP (Constraint programming models and solver interfaces)
- External grey box models
- IIS (Standard interface to solver IIS capabilities)
- MPC (Data structures/utils for rolling horizon dynamic optimization)
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Core
- Solver Interfaces
- Fix handling of nonconvex MIQCP problems in Xpress (#2625)
- Testing
- Update GitHub actions to cancel jobs when new changes are pushed (#2634)
- Remove requirement for a
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
- Contributed Packages
Pyomo 6.4.3
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Added support for Python 3.10, 3.11
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- CP (Constraint programming models and solver interfaces)
- External grey box models
- IIS (Standard interface to solver IIS capabilities)
- MPC (Data structures/utils for rolling horizon dynamic optimization)
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Update PauseGC to work in nested contexts (#2507)
- Simplify deepcopy/pickle logic to speed up model clone (#2510)
- Fix generate_standard_repn to handle unexpected NPV expressions (#2511)
- Add thread safe proxies for PauseGC, TempFileManager singletons (#2514)
- Fix ConstructionTimer bug for components indexed by nonfinite sets (#2518)
- Add calculate_variable_from_constraint differentiation mode option (#2549)
- Update URL for downloading GSL and GJH (#2556, #2588)
- Update logic for retrying failed downloads (#2569)
- Add support and testing for Python 3.11 (#2596, #2618)
- Update deprecation utilities to improve user messages (#2606)
- Core
- Refactor expression hierarchy, add RelationalExpression base class (#2499)
- Support cloning individual blocks (#2504)
- Block performance improvements (#2508)
- Add support for creating a slice to a single ComponentData object (#2509)
- Fix missing import of value in pyomo.core.base.external (#2525)
- Improve handling of restricted words on Blocks (#2535)
- Improve Reference() performance (#2537)
- Fix mapping gradient/hessian for external functions with string args (#2539)
- Fix bug for sum_product(Var, Param, Param) (#2551)
- Add deprecation path for expression objects moved to relational_expr (#2554)
- Exception when setting value of Expression to non-numeric expression (#2567)
- Improve deepcopy performance (#2628)
- Documentation
- Fix examples in working_models.rst (#2502)
- Solver Interfaces
- Improve SCIP results object (#2462)
- Improve warning message when LP writer raises KeyError (#2497)
- Fix Gurobi work limit bug (#2530)
- Updates and fixes for the NLv2 writer (#2540, #2622, #2568)
- Fix Xpress when stopped due to MAXTIME or MAXNODES (#2553)
- Add support for MOSEK 10 affine conic constraints (#2557)
- Fix missing explicit space in GAMS put command (#2578)
- Fix GAMS logfile storage location (#2580)
- LP writer performance improvements (#2583, #2585)
- Update handling of MOSEK Env and Python module (#2591)
- Release MOSEK license when optimize raises a mosek.Error (#2593)
- Update list of allowable characters in CPLEX filenames (#2597)
- Testing
- Update performance driver to be usable outside of Pyomo (#2505)
- Update the performance test driver (#2538)
- Reduce amount of environment code cached in GitHub actions (#2565)
- Update GitHub actions versions from v2 to v3 (#2566)
- Allow nan to compare equal in assertStructuredAlmostEqual() (#2582)
- Add test utilities for comparing expressions (#2590)
- Skip a test in MOSEK 10 due to a bug in warm starting MIQPs (#2614)
- Update skipped CBC test that works with CBC 2.10.6 (#2615)
- Add SCIP to GitHub actions environment (#2602)
- GDP
- Use OrderedSet instead of list in GDPTree to improve performance (#2516)
- Reduce calls to logical_to_linear in GDP transformations (#2519)
- Add utility for gathering BigM values after transformation (#2520)
- Add tighter logical constraints in transformations of nested GDPs (#2550)
- Fix pickling of transformed GDP models (#2576)
- Add multiple-bigM transformation (#2592)
- Improve performance of BigM transformation (#2605)
- Remove weakref mapping Disjunctions to their algebraic_constraint (#2617)
- Contributed Packages
- APPSI: Fix exception raised by appsi_gurobi during Python shutdown (#2498)
- APPSI: Improve handling of Gurobi results (#2517)
- APPSI: Add interface to HiGHS solver (#2561)
- APPSI: Only release Gurobi license after deleting all instances (#2599)
- APPSI: Patch IntEnum to preserve pre-3.11 formatting (#2607)
- CP: New package for constraint programming (#2570, #2612)
- GDPopt: Add warning when reporting results from LBB (#2534)
- GDPopt: Delete dummy objective when we're done using it (#2552)
- GDPopt: Add enumerate solution approach (#2559, #2575)
- IIS: Add package for computing the IIS of an infeasible Pyomo model (#2512)
- MindtPy: Fix bug in termination condition (#2587)
- MindtPy: Fix bug in checking absolute and relative gap (#2608)
- MPC: Data structures/utils for rolling horizon dynamic optimization (#2477)
- Parmest: Solve square problem to initialize regression problem (#2438)
- Parmest: Return ContinuousSet values from theta_est() (#2464)
- PyNumero: Fix NumPy deprecation warnings (#2521)
- PyNumero: Add interfaces to SciPy square solvers (#2523)
- PyNumero: Check AmplInterface availability in SciPy solver tests (#2594)
- PyNumero: Add ProjectedExtendedNLP class (#2601)
- PyNumero: Add interface to SciPy scalar Newton solver (#2603)
- PyROS: Rewrite UncertaintySet docstrings/improve validation (#2488)
- PyROS: Updates to subproblem initialization and solver call routines (#2515)
- PyROS: Fix collection of sub-solver solve times (#2543)
Pyomo 6.4.2
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Added support for Python 3.10
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Resolve dill incompatibility with attempt_import (#2419)
- Speed up book tests and improve import/logging infrastructure (#2449)
- Make typing overloads available at runtime (#2471)
- Update list of known TPLs to reflect Python 3.10 (#2478)
- Add NL writer version 2 but don't activate by default (#2473)
- Add deprecation.relocated_module utility (#2492)
- Core
- Support cython functions through Initializer (#2421)
- Ensure UnindexedComponent_set is correctly pickled/restored (#2416)
- Update as_numeric() to raise an exception on non-is_numeric_type() Pyomo
objects (#2444) - replace_expressions: support replacing variables with constants (#2410)
- Update component_data_objects and component_data_iterindex to not
return duplicate data (#2456) - Fix exception handling logic bug in quicksum (#2458)
- Reduce recursion in model clone/deepcopy (#2487)
- Resolve exception cloning empty LinearExpression objects (#2489)
- Resolve errors from inplace operators on Expression objects (#2493)
- Documentation
- Solver Interfaces
- Testing
- Skip SCIP 8.0 tests on PyPy (#2424)
- Force conda to use conda-forge channel in GHA (#2430)
- Fix GHA win/3.10 Python version inconsistency (#2433)
- Enable Pyomo.DAE Simulator tests on PyPy (#2443)
- Abort the Jenkins build if virtualenv creation fails (#2451)
- Remove scipy from GHA PyPy builds (#2474)
- Move performance testing driver scripts to scripts/performance (#2476)
- Improve common.timing test robustness (#2490)
- Contributed Packages
- APPSI: Improve error message in nl writer when all variables fixed (#2407)
- APPSI: Fix bug in Gurobi interface when modifying the objective (#2454)
- APPSI: Solve blocks that use variables that are not on the block (#2453)
- APPSI: Method to release Gurobi license from persistent interface (#2480)
- community_detection: Trap exceptions from networkx (#2415)
- FBBT: Add tolerances to tests (#2445)
- GDPopt: Refactor to improve extensibility and maintainability (#2406)
- incidence_analysis: Add method for weakly connected components (#2418)
- MindtPy: Fix bug in copying variable values between models (#2432)
- MindtPy: Add support for appsi_cplex and appsi_gurobi (#2373)
- Parmest: Add utils submodule and support to convert Params to Vars (#2352)
- Parmest: Fix use of relocated_module_attribute (#2472)
- PyROS: Fixes to ellipsoidal sets (#2425)
- PyROS: Account for variable domains (#2426)
- PyROS: Fix objective validation (#2371)
- PyROS: Avoid master feasibility problem unit consistency checks (#2459)
- PyROS: Fix discrete uncertainty set separation (#2469)
- PyROS: Update exception handling parsing BARON lower/upper bounds (#2486)
Pyomo 6.4.1
Highlights of the 6.0 release series
- Improved stability and robustness of core Pyomo code and solver interfaces
- Integration of Boolean variables into GDP
- Integration of NumPy support into the Pyomo expression system
- Added support for Python 3.10
- Removed support for Python 3.6
- New packages:
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
- External grey box models
- PyROS (Pyomo Robust Optimization Solver)
- Structural model analysis
- Rewrite of the TrustRegion Solver
Changes in this release
- General
- Extend linux distribution map logic (#2361)
- Improve string processing in ConfigList, ConfigDict, and ListOf (#2360)
- Update copyright assertion (#2368, #2378)
- Deprecate name_buffer argument to getname (#2370)
- Defer construction of the main Pyomo parser (#2385)
- Improve error checking parsing ConfigDict string value (#2399)
- Core
- Solver Interfaces
- Testing
- 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
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
- Core
- Solver Interfaces
- Remove PICO solver interface (#2341)
- Testing
- 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
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 pintQuantity
(#2222) - NPV_SumExpression to inherit from NPV_Mixin (#2209)
- Add support for
abs
in numeric differentiation (#2232) - Search filesystem for AMPLExternalFunction library (#2305)
-
Documentation
-
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
topytest
(#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
-
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)