Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mewilhel committed Feb 18, 2021
2 parents 14b7a22 + 933de12 commit ff96262
Show file tree
Hide file tree
Showing 78 changed files with 1,933 additions and 16,497 deletions.
7 changes: 7 additions & 0 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Configuration file for JuliaFormatter.jl, see: https://domluna.github.io/JuliaFormatter.jl/stable/config/

always_for_in = true
always_use_return = true
margin = 80
remove_extra_newlines = true
short_to_long_function_def = true
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Bug report
about: Help us locate bugs in EAGO

---

Thanks for your interest in EAGO!

Please read the following before posting a new bug report:

If you're submitting a bug report, be sure to include as much relevant information
as possible. In general, you should try include a minimal reproducible example,
the output of `versioninfo()`, and the output of `using Pkg; Pkg,status()`. For
bugs that result in error messages, please include a screenshot of the full
console output. See https://help.github.com/articles/basic-writing-and-formatting-syntax/
for background information on formatting text and code on GitHub issues.

Thanks for your contribution to EAGO!
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Feature request
about: Suggest how we can improve EAGO

---

Thanks for your interest in EAGO! You can use this Github issue to suggest new
features or make recommendations on additional documentation for EAGO.

**If your feature request is related to a problem, please describe the problem.**
Ex. I can't find a way to [...]

**Describe the solution you'd like**
Provide a clear brief description of the feature you'd like.

**Provide any other context you think we'd find helpful**

Thanks for your contribution to EAGO!
15 changes: 15 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: TagBot
on:
issue_comment:
types:
- created
workflow_dispatch:
jobs:
TagBot:
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
ssh: ${{ secrets.DOCUMENTER_KEY }}
23 changes: 23 additions & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Documentation
on:
push:
branches: [master]
tags: '*'
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@latest
with:
# Build documentation on Julia 1.3
version: '1.5'
- name: Install dependencies
run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
- name: Build and deploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key
run: julia --project=docs/ docs/make.jl
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
*.jl.cov
*.jl.*.cov
*.jl.mem
*.cov
docs/build/
32 changes: 32 additions & 0 deletions News.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,35 @@
- Parametric interval methods and the Implicit optimizer have been move to a separate package (to be tagged shortly.)
- JIT compilation time has been reduced substantially.
- Support for silent tag and time limits.

## v0.4.0
- 6/7/2020: [**EAGO v0.4.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.0).
- Support for new MOI/JuMP `RawParameter` input and a number of new attributes.
- Separates McCormick and ReverseMcCormick libraries (now [McCormick.jl](https://github.com/PSORLab/McCormick.jl) and [ReverseMcCormick.jl](https://github.com/PSORLab/ReverseMcCormick.jl))
from main package. McCormick.jl is reexported.
- Relaxation calculations now return NaN values on a domain violation.
- Tolerance based validation of cuts has been added to generate numerically safe cuts.
- Significantly simplify internal codebase for `EAGO.Optimizer` (no changes to API): fully decouples input problem specifications from the formulation used internally, stack only stores variables that are branched on, and a number of internal rearrangements to clearly delineate different routines.
- Add problem classification preprocessing that throws to simpler routines if LP problem types are detected (enables future support for SOCP, MILP, MISOCP, and Convex forms).
- Fix multiple bugs and add more transparent error codes.
- 06/17/2020: [**EAGO v0.4.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/commit/9c1bcf024a19840a0ac49c8c6da13619a5f3845f#comments) Contains minor bug releases.
- 08/29/2020: [**EAGO v0.4.2 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.2) Support for Julia v1.5.

## v0.5.0
- 11/18/2020: [**EAGO v0.5.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.0)
- Introduces the `register_eago_operators!(m::JuMP.Model)` which can be used
to register all nonstandard nonlinear terms used in EAGO in any JuMP model.
- Introduces `positive`, `negative`, `lower_bnd`, `upper_bnd`, and `bnd`
functions which can be used to enforce bounds on intermediate terms in
nonlinear expressions (EAGO.Optimizer only).
- Adds envelopes: `abs2`, `sinpi`, `cospi`, `fma`, `cbrt`.
- Adds envelopes and functions: `xlogx`
- Adds envelopes of special functions: `erf`, `erfc`, `erfinv`, `erfcinv`
- Adds envelopes of activation functions: `relu`, `gelu`, `elu`, `selu`, `swish1`,`sigmoid`, `softsign`, `softplus`,`bisigmoid`, `pentanh`, `leaky_relu`, `param_relu`.
- Error messages in `sip_explicit` have been made more transparent.
- Fixes some issues with documentation image rendering and links.
- Drops appveyor CI and Travis CI in favor of Github Actions.
- 11/18/2020 [**EAGO v0.5.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.1)
- Support for Julia ~1 (with limited functionality for Julia 1.0, 1.1).
- 11/18/2020 **EAGO v0.5.2 has been tagged**
- Fix user specified branching variables.
18 changes: 9 additions & 9 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name = "EAGO"
uuid = "bb8be931-2a91-5aca-9f87-79e1cb69959a"

authors = ["Matthew Wilhelm <[email protected]>"]
version = "0.5.2"
version = "0.6.0"

[deps]
Cassette = "7057c7e9-c182-5462-911a-8362d720325c"
Expand All @@ -27,18 +27,18 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"

[compat]
Cassette = "0.3.1"
DataStructures = "~0.17"
DataStructures = "~0.17, ~0.18"
DocStringExtensions = "~0.8"
FastRounding = "0.2"
FastRounding = "~0.2, ~0.3"
ForwardDiff = "~0.5.0, ~0.6, ~0.7, ~0.8, ~0.9, ~0.10"
GLPK = "~0.9, ~0.10, ~0.11, ~0.12"
GLPK = "~0.9, ~0.10, ~0.11, ~0.12, ~0.13"
IntervalArithmetic = "~0.14, ~0.15, ~0.16, ~0.17"
IntervalContractors = "~0.3, ~0.4"
Ipopt = "0.6.0, 0.6.1"
JuMP = "0.21.2"
MathOptInterface = "0.9.13"
McCormick = "~0.10"
NaNMath = "0.3"
Ipopt = "~0.6"
JuMP = "0.21.2, 0.21.3, 0.21.4, 0.21.5, 0.21.6"
MathOptInterface = "0.9.13, 0.9.14, 0.9.15, 0.9.16, 0.9.17, 0.9.18, 0.9.19"
McCormick = "0.10.3"
NaNMath = "~0.3"
NumericIO = "= 0.3.1"
ReverseMcCormick = "~0.8, ~0.9"
Reexport = "~0.2"
Expand Down
45 changes: 13 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ EAGO is an open-source development environment for **robust and global optimizat

| **Documentation** | **Linux/OS/Windows** | **Persistent DOI** |
|:-----------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|
| [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://PSORLab.github.io/EAGO.jl/dev) | [![Build Status](https://github.com/PSORLab/EAGO.jl/workflows/CI/badge.svg?branch=master)](https://github.com/PSORLab/EAGO.jl/actions?query=workflow%3ACI) | [![DOI](https://zenodo.org/badge/108954118.svg)](https://zenodo.org/badge/latestdoi/108954118) |
| [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://PSORLab.github.io/EAGO.jl/stable) [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://PSORLab.github.io/EAGO.jl/dev) | [![Build Status](https://github.com/PSORLab/EAGO.jl/workflows/CI/badge.svg?branch=master)](https://github.com/PSORLab/EAGO.jl/actions?query=workflow%3ACI) | [![DOI](https://zenodo.org/badge/108954118.svg)](https://zenodo.org/badge/latestdoi/108954118) |

| **Coverage** | **Chat** |
|:------------:|:------------:|
Expand Down Expand Up @@ -99,36 +99,17 @@ 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

- 6/7/2020: [**EAGO v0.4.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.0).
- Support for new MOI/JuMP `RawParameter` input and a number of new attributes.
- Separates McCormick and ReverseMcCormick libraries (now [McCormick.jl](https://github.com/PSORLab/McCormick.jl) and [ReverseMcCormick.jl](https://github.com/PSORLab/ReverseMcCormick.jl))
from main package. McCormick.jl is reexported.
- Relaxation calculations now return NaN values on a domain violation.
- Tolerance based validation of cuts has been added to generate numerically safe cuts.
- Significantly simplify internal codebase for `EAGO.Optimizer` (no changes to API): fully decouples input problem specifications from the formulation used internally, stack only stores variables that are branched on, and a number of internal rearrangements to clearly delineate different routines.
- Add problem classification preprocessing that throws to simpler routines if LP problem types are detected (enables future support for SOCP, MILP, MISOCP, and Convex forms).
- Fix multiple bugs and add more transparent error codes.

- 06/17/2020: [**EAGO v0.4.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/commit/9c1bcf024a19840a0ac49c8c6da13619a5f3845f#comments) Contains minor bug releases.
- 08/29/2020: [**EAGO v0.4.2 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.4.2) Support for Julia v1.5.
- 11/18/2020: [**EAGO v0.5.0 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.0)
- Introduces the `register_eago_operators!(m::JuMP.Model)` which can be used
to register all nonstandard nonlinear terms used in EAGO in any JuMP model.
- Introduces `positive`, `negative`, `lower_bnd`, `upper_bnd`, and `bnd`
functions which can be used to enforce bounds on intermediate terms in
nonlinear expressions (EAGO.Optimizer only).
- Adds envelopes: `abs2`, `sinpi`, `cospi`, `fma`, `cbrt`.
- Adds envelopes and functions: `xlogx`
- Adds envelopes of special functions: `erf`, `erfc`, `erfinv`, `erfcinv`
- Adds envelopes of activation functions: `relu`, `gelu`, `elu`, `selu`, `swish1`,
`sigmoid`, `softsign`, `softplus`,
`bisigmoid`, `pentanh`, `leaky_relu`,
`param_relu`.
- Error messages in `sip_explicit` have been made more transparent.
- Fixes some issues with documentation image rendering and links.
- Drops appveyor CI and Travis CI in favor of Github Actions.
- 11/18/2020 [**EAGO v0.5.1 has been tagged**](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.5.1) Support for Julia ~1 (with limited functionality for Julia 1.0, 1.1).
- 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.

For a full list of EAGO release news, see click [**here**](https://github.com/PSORLab/EAGO.jl/releases)

Expand All @@ -149,7 +130,7 @@ generation of Wergert Tapes pass evaluators between JuMP and EAGO etc.
pkg> add JuMP
```

EAGO v0.5.1 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/)
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).
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).

Expand Down
3 changes: 2 additions & 1 deletion docs/Project.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
DocumenterTools = "35a29f4d-8980-5a13-9543-d66fff28ecb8"
EAGO = "bb8be931-2a91-5aca-9f87-79e1cb69959a"
IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
Expand All @@ -8,4 +9,4 @@ McCormick = "53c679d3-6890-5091-8386-c291e8c8aaa1"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[compat]
Documenter = "0.24"
Documenter = "^0.26"
1 change: 1 addition & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
theme: jekyll-theme-slate
Loading

0 comments on commit ff96262

Please sign in to comment.