From 644c4825073cdaa977dd384f83bb7d6f7382f5c9 Mon Sep 17 00:00:00 2001 From: Dimitri Alston Date: Mon, 12 Jun 2023 12:46:54 -0400 Subject: [PATCH 1/5] Update README.md Updated information on EAGO for v0.8.0 release. --- .github/workflows/ci.yml | 4 ++-- README.md | 28 +++++++++------------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99b2d253..a05075c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,10 +22,10 @@ jobs: - version: '1.6' os: windows-latest arch: x64 - - version: '1.7' + - version: '1.9' os: ubuntu-latest arch: x64 - - version: '1.7' + - version: '1.9' os: windows-latest arch: x64 steps: diff --git a/README.md b/README.md index 03d2e6a3..15169b78 100644 --- a/README.md +++ b/README.md @@ -99,17 +99,10 @@ As a global optimization platform, EAGO's solvers can be used to find solutions The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface, domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available in the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository. ## Recent News -- 2/5/2021: [EAGO v0.6.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.6.0). - - License changed from CC BY-NC-SA 4.0 to MIT - - Fix deprecated Ipopt constructor - - Fix discrepancy between the returned objective value and the objective evaluated at the solution. - - Dramatically decrease allocates and first-run performance of SIP routines. - - Add two algorithms which modify SIPres detailed in Djelassi, H. and Mitsos A. 2017. - - Fix objective interval fallback function. - - New SIP interface with extendable subroutines. - - Fix x^y relaxation bug. - - Add issues template. - - Add SIP subroutine documentation. +- 6/12/2023: [EAGO v0.8.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.8.0). + - Updated EAGO to use the `MathOptInterface.Nonlinear (MOINL)` submodule instead of `JuMP._Derivatives`. + - Added logic and comparison operators to `EAGO.OperatorRegistry`. + - Updated `reform_epigraph_min!` function to use `MOINL` models instead of `JuMP` models. For a full list of EAGO release news, see click [**here**](https://github.com/PSORLab/EAGO.jl/releases) @@ -122,27 +115,24 @@ From the Julia REPL, type ] to enter the Pkg REPL mode and run the following com pkg> add EAGO ``` -Currently, EAGO is tied to a 0.19+ or greater version of JuMP. This allows a replication -of some of the internal features shared by EAGO and JuMP's AD scheme aka -generation of Wengert Tapes pass evaluators between JuMP and EAGO etc. +Currently, EAGO is tied to version 1.11 of JuMP. This allows a replication of some of the internal features shared by EAGO and JuMP's AD scheme, e.g., generation of Wergert Tapes, passing evaluators between JuMP and EAGO, etc. ```julia pkg> add JuMP ``` -EAGO v0.6.0 is the current tagged version and requires Julia 1.2+ for full functionality (however Julia 1.0+ versions support partial functionality). Use with version 1.5 is recommended as the majority of in-house testing has occurred using this version of Julia. The user is directed to the [**High-Performance Configuration**](https://psorlab.github.io/EAGO.jl/Optimizer/high_performance/) -for instructions on how to install a high performance version of EAGO (rather than the basic entirely open-source version). +EAGO v0.8.0 is the current tagged version and requires Julia 1.6+ for full functionality (however Julia 1.0+ versions support partial functionality). Use with version 1.8 is recommended as the majority of in-house testing has occurred using this version of Julia. The user is directed to the [**High-Performance Configuration**](https://psorlab.github.io/EAGO.jl/Optimizer/high_performance/) for instructions on how to install a high performance version of EAGO (rather than the basic entirely open-source version). If any issues are encountered when loading EAGO (or when using it), please submit an issue using the Github [**issue tracker**](https://github.com/PSORLab/EAGO.jl/issues). -## Bug reporting, support and feature requests +## Bug Reporting, Support, and Feature Requests Please report bugs or feature requests by opening an issue using the Github [**issue tracker**](https://github.com/PSORLab/EAGO.jl/issues). All manners of feedback are encouraged. -## Current limitations +## Current Limitations - Nonlinear handling assumes that box-constraints of nonlinear terms are available or can be inferred from bounds-tightening. - Only currently supports continuous functions. Support for mixed-integer problems is forthcoming. -## Work In Progress +## Work in Progress - Extensions for nonconvex dynamic global & robust optimization. - Provide support for mixed-integer problems. - Update EAGO to support nonsmooth problems (requires: a nonsmooth local nlp optimizer or lexiographic AD, support for relaxations is already included). From d0d53b49e66368823104e65ab7d4b37cc16d3072 Mon Sep 17 00:00:00 2001 From: Dimitri Alston Date: Mon, 12 Jun 2023 12:52:31 -0400 Subject: [PATCH 2/5] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 15169b78..c62b005b 100644 --- a/README.md +++ b/README.md @@ -96,15 +96,15 @@ As a global optimization platform, EAGO's solvers can be used to find solutions ## Package Capabilities -The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface, domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available in the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository. +The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface (MOI), domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available in the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository. ## Recent News - 6/12/2023: [EAGO v0.8.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.8.0). - - Updated EAGO to use the `MathOptInterface.Nonlinear (MOINL)` submodule instead of `JuMP._Derivatives`. + - Updated EAGO to use the `MOI.Nonlinear` submodule instead of `JuMP._Derivatives`. - Added logic and comparison operators to `EAGO.OperatorRegistry`. - - Updated `reform_epigraph_min!` function to use `MOINL` models instead of `JuMP` models. + - Updated `reform_epigraph_min!` function to use `MOI.Nonlinear` models instead of `JuMP` models. -For a full list of EAGO release news, see click [**here**](https://github.com/PSORLab/EAGO.jl/releases) +For a full list of EAGO release news, click [**here**](https://github.com/PSORLab/EAGO.jl/releases) ## Installing EAGO From cc18eed37a090ff51a0c3de097fa19fab11b4393 Mon Sep 17 00:00:00 2001 From: Dimitri Alston Date: Mon, 12 Jun 2023 13:07:07 -0400 Subject: [PATCH 3/5] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c62b005b..6c30105a 100644 --- a/README.md +++ b/README.md @@ -96,15 +96,14 @@ As a global optimization platform, EAGO's solvers can be used to find solutions ## Package Capabilities -The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface (MOI), domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available in the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository. +The EAGO package has numerous features: a solver accessible from JuMP/MathOptInterface (MOI), domain reduction routines, McCormick relaxations, and specialized non-convex semi-infinite program solvers. A full description of all EAGO features is available on the [**documentation website**](https://psorlab.github.io/EAGO.jl/dev/). A series of example have been provided in the form of Jupyter notebooks in the separate [**EAGO-notebooks**](https://github.com/PSORLab/EAGO-notebooks) repository. ## Recent News - 6/12/2023: [EAGO v0.8.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.8.0). - Updated EAGO to use the `MOI.Nonlinear` submodule instead of `JuMP._Derivatives`. - Added logic and comparison operators to `EAGO.OperatorRegistry`. - - Updated `reform_epigraph_min!` function to use `MOI.Nonlinear` models instead of `JuMP` models. -For a full list of EAGO release news, click [**here**](https://github.com/PSORLab/EAGO.jl/releases) +For a full list of EAGO release news, click [**here**](https://github.com/PSORLab/EAGO.jl/releases). ## Installing EAGO From 29b96e64f79d3dae62edf40b4f27d4bfe2c20e95 Mon Sep 17 00:00:00 2001 From: Dimitri Alston Date: Mon, 12 Jun 2023 14:08:11 -0400 Subject: [PATCH 4/5] Update README.md --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6c30105a..a1d134ce 100644 --- a/README.md +++ b/README.md @@ -13,16 +13,16 @@ EAGO is an open-source development environment for **robust and global optimizat ## EAGO's Optimizer Capabilities -EAGO is a deterministic global optimizer designed to address a wide variety of optimization problems, emphasizing nonlinear programs (NLPs), by propagating McCormick relaxations along the factorable structure of each expression in the NLP. Most operators supported by modern automatic differentiation (AD) packages (e.g. **+**, **sin**, **cosh**) are supported by EAGO and a number utilities for sanitizing native Julia code and generating relaxations on a wide variety of user-defined functions have been included. Currently, EAGO supports problems that have a priori variable bounds defined and have differentiable constraints. That is, problems should be specified in the generic form below: +EAGO is a deterministic global optimizer designed to address a wide variety of optimization problems, emphasizing nonlinear programs (NLPs), by propagating McCormick relaxations along the factorable structure of each expression in the NLP. Most operators supported by modern automatic differentiation (AD) packages (e.g., `+`, `sin`, `cosh`) are supported by EAGO and a number utilities for sanitizing native Julia code and generating relaxations on a wide variety of user-defined functions have been included. Currently, EAGO supports problems that have a priori variable bounds defined and have differentiable constraints. That is, problems should be specified in the generic form below:

## EAGO's Relaxations -For each nonlinear term, EAGO makes use of factorable representations to construct bounds and relaxations. In the case of F = y(y-5)sin(y), a list is generated and rules for constructing McCormick relaxations are used to formulate relaxations in the original Y decision space1: +For each nonlinear term, EAGO makes use of factorable representations to construct bounds and relaxations. In the case of `f(x) = x(x-5)sin(x)`, a list is generated and rules for constructing McCormick relaxations are used to formulate relaxations in the original `X` decision space1: -- *v*1 = y +- *v*1 = x - *v*2 = *v*1 - 5 - *v*3 = sin(*v*1) - *v*4 = *v*1*v*2 @@ -100,7 +100,9 @@ The EAGO package has numerous features: a solver accessible from JuMP/MathOptInt ## Recent News - 6/12/2023: [EAGO v0.8.0 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.8.0). - - Updated EAGO to use the `MOI.Nonlinear` submodule instead of `JuMP._Derivatives`. + - Updated EAGO for compatibility with the nonlinear expression API changes introduced in JuMP v1.2: https://discourse.julialang.org/t/ann-upcoming-refactoring-of-jumps-nonlinear-api/83052 + - EAGO now uses the `MOI.Nonlinear` submodule instead of `JuMP._Derivatives`. + - Models, nodes, expressions, constraints, and operators are now compatible with MOI. - Added logic and comparison operators to `EAGO.OperatorRegistry`. For a full list of EAGO release news, click [**here**](https://github.com/PSORLab/EAGO.jl/releases). @@ -108,7 +110,7 @@ For a full list of EAGO release news, click [**here**](https://github.com/PSORLa ## Installing EAGO EAGO is a registered Julia package and it can be installed using the Julia package manager. -From the Julia REPL, type ] to enter the Pkg REPL mode and run the following command +From the Julia REPL, type `]` to enter the Package manager (Pkg) mode and run the following command ```julia pkg> add EAGO From bf921de0bfce7a5173517ea7841eaf1f3d2b01a1 Mon Sep 17 00:00:00 2001 From: Dimitri Alston Date: Mon, 12 Jun 2023 14:09:47 -0400 Subject: [PATCH 5/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1d134ce..05944724 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ For each nonlinear term, EAGO makes use of factorable representations to constru - *v*3 = sin(*v*1) - *v*4 = *v*1*v*2 - *v*5 = *v*4*v*3 -- F = *v*5 +- f(x) = *v*5