forked from PSORLab/EAGO.jl
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 582ff99
Showing
240 changed files
with
31,167 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
comment: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.jl.cov | ||
*.jl.*.cov | ||
*.jl.mem | ||
|
||
docs/build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
## Documentation: http://docs.travis-ci.com/user/languages/julia/ | ||
language: julia | ||
|
||
sudo: required | ||
|
||
services: | ||
- docker | ||
|
||
os: | ||
- linux | ||
- osx #build never started in travis CI, will trouble shoot later | ||
|
||
julia: | ||
#- 0.7 disabled to speed up CI tests | ||
- 1.1 | ||
#- nightly disabled to speed up CI tests | ||
|
||
notifications: | ||
email: false | ||
|
||
git: | ||
depth: 99999999 | ||
|
||
matrix: | ||
allow_failures: | ||
- osx: v0.6 | ||
# - osx: nightly | ||
- julia: 1.1 | ||
addons: | ||
apt_packages: | ||
- gfortran | ||
|
||
after_success: | ||
- julia -e 'using Pkg; ps=Pkg.PackageSpec(name="Documenter", version="0.19"); Pkg.add(ps); Pkg.pin(ps)' | ||
- julia -e 'cd(Pkg.dir("EAGO")); include(joinpath("docs", "make.jl"))' | ||
- julia -e 'cd(Pkg.dir("EAGO")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Copyright (c) 2018: Matthew Wilhelm & Matthew Stuber. | ||
|
||
> This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. | ||
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, | ||
PO Box 1866, Mountain View, CA 94042, USA. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
name = "EAGO" | ||
uuid = "bb8be931-2a91-5aca-9f87-79e1cb69959a" | ||
version = "0.2.0" | ||
|
||
[deps] | ||
BandedMatrices = "aae01518-5342-5314-be14-df237901396f" | ||
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" | ||
Calculus = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" | ||
Cassette = "7057c7e9-c182-5462-911a-8362d720325c" | ||
CommonSubexpressions = "bbf7d656-a473-5ed7-a52c-81e309532950" | ||
DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" | ||
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" | ||
GLPK = "60bf3e95-4087-53dc-ae20-288a0d20c6a6" | ||
IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" | ||
IntervalContractors = "15111844-de3b-5229-b4ba-526f2f385dc9" | ||
Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9" | ||
JuMP = "4076af6c-e467-56ae-b986-b466b2749572" | ||
MacroTools = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" | ||
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" | ||
Reexport = "189a3867-3050-52da-a836-e630ba90ab69" | ||
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" | ||
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" | ||
|
||
[extras] | ||
|
||
[targets] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<img src="https://github.com/PSORLab/EAGO.jl/blob/master/docs/src/full_Logo1.png" width="75%" height="75%"> | ||
|
||
# EAGO: Easy-Advanced Global Optimization | ||
EAGO is an open-source development environment for **robust and global optimization** in Julia. | ||
|
||
|
||
| **Documentation** | **PackageEvaluator** | **Linux/OS** | **Windows 32/64** | | ||
|:-------------------------------------------------------------------------------:|:---------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:| | ||
| [](https://PSORLab.github.io/EAGO.jl/stable) [](https://PSORLab.github.io/EAGO.jl/latest) | Coming Soon | [](https://travis-ci.org/PSORLab/EAGO.jl) | [](https://ci.appveyor.com/project/MatthewStuber/eago-jl) | ||
|
||
| **Coverage** | **Chat** | | ||
|:------------:|:------------:| | ||
|[](https://coveralls.io/github/PSORLab/EAGO.jl?branch=master) [](https://codecov.io/gh/PSORLab/EAGO.jl) | [](https://gitter.im/EAGODevelopment/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) | ||
|
||
## Global Optimization | ||
|
||
As a global optimization platform, EAGO's solvers can be used to find solutions of general nonconvex problems with a guaranteed certificate of optimality. However, global solvers suffer from the curse of dimensionality and therefore their performance is outstripped by convex solvers. For users interested in large-scale applications, be warned that problems generally larger than a few variables may prove challenging for certain types of global optimization problems. | ||
|
||
## 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. | ||
|
||
## News | ||
|
||
- 4/12/2018: Initial release of combined EAGO packages. | ||
- 6/20/2018: [EAGO v0.1.2 has been tagged](https://github.com/PSORLab/EAGO.jl/releases/tag/v0.1.2). Significant speed and functionality updates. | ||
<!-- | ||
- 1/29/2018: [EAGO v0.2.0 has been tagged]((https://github.com/PSORLab/EAGO.jl/releases/tag/v0.2.0). This update creates a number of breaking changes to the EAGO API. Please review the use cases provided in the documentation to update examples. | ||
- Updated to support Julia 1.0, MathOptInterface (MOI), and MOI construction of subproblems. | ||
- Additional domain reduction routines available. | ||
- Support for specialized handling of linear and quadratic terms. | ||
- Significant performance improvements due to pre-allocation of Wengert tapes and MOI support. | ||
- A more intuitive API for McCormick relaxation construction. | ||
--> | ||
## Related Packages | ||
|
||
- [**ValidatedNumerics.jl**](https://github.com/JuliaIntervals/ValidatedNumerics.jl), a Julia library for validated interval calculations, including basic interval extensions, constraint programming, and interval contactors | ||
- [**MC++**](https://omega-icl.github.io/mcpp/): A mature McCormick relaxation package in C++ that also includes McCormick-Taylor, Chebyshev | ||
Polyhedral and Ellipsoidal arithmetics. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
julia 0.7 | ||
JuMP 0.19.0 | ||
MathOptInterface 0.8.1 | ||
IntervalArithmetic 0.15+ | ||
IntervalContractors 0.3+ | ||
StaticArrays 0.8.3 | ||
DiffRules 0.0.5+ | ||
Ipopt 0.5.1 | ||
Reexport 0.2.0 | ||
CommonSubexpressions 0.2.0 | ||
GLPK 0.9.1 | ||
ReverseDiff 0.3.1 | ||
ForwardDiff 0.10.1 | ||
Calculus 0.4.1+ | ||
MacroTools | ||
BenchmarkTools | ||
Cassette 0.2.1 | ||
BandedMatrices 0.8.0+ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
theme: jekyll-theme-cayman |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
environment: | ||
matrix: | ||
#- julia_version: 0.7 # disabled to speed up CI test | ||
- julia_version: 1.1 | ||
#- julia_version: nightly | ||
|
||
platform: | ||
- x86 # 32-bit | ||
- x64 # 64-bit | ||
|
||
|
||
# Uncomment the following lines to allow failures on nightly julia | ||
# (tests will run but not make your overall status red) | ||
matrix: | ||
allow_failures: | ||
- julia_version: 1.1 | ||
|
||
branches: | ||
only: | ||
- master | ||
- /release-.*/ | ||
|
||
notifications: | ||
- provider: Email | ||
on_build_success: false | ||
on_build_failure: false | ||
on_build_status_changed: false | ||
|
||
install: | ||
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1")) | ||
|
||
build_script: | ||
- echo "%JL_BUILD_SCRIPT%" | ||
- C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%" | ||
|
||
test_script: | ||
- echo "%JL_TEST_SCRIPT%" | ||
- C:\julia\bin\julia -e "%JL_TEST_SCRIPT%"" | ||
|
||
# # Uncomment to support code coverage upload. Should only be enabled for packages | ||
# # which would have coverage gaps without running on Windows | ||
# on_success: | ||
# - echo "%JL_CODECOV_SCRIPT%" | ||
# - C:\julia\bin\julia -e "%JL_CODECOV_SCRIPT%" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
push!(LOAD_PATH,"../src/") | ||
|
||
using Documenter | ||
using EAGO | ||
|
||
makedocs(modules = [EAGO], | ||
doctest = true, | ||
format = Documenter.HTML(), | ||
authors = "Matthew Wilhelm", | ||
sitename = "EAGO.jl: Easy Advanced Global Optimization", | ||
pages = ["Introduction" => "index.md", | ||
#"Why EAGO?" => "why.md", | ||
"Branch & Bound" => ["BranchBound/overview.md", | ||
"BranchBound/usage.md", | ||
"BranchBound/back.md"], | ||
"McCormick Operator Library" => ["McCormick/overview.md", | ||
"McCormick/usage.md", | ||
"McCormick/operators.md", | ||
"McCormick/type.md", | ||
"McCormick/implicit.md", | ||
"McCormick/options.md"], | ||
"Global Optimizer" => ["Optimizer/optimizers.md", | ||
"Optimizer/starting.md", | ||
"Optimizer/high_performance.md", | ||
"Optimizer/DomainReduction/feasibility.md", | ||
"Optimizer/DomainReduction/obbt.md"], | ||
"Semi-Infinite Programming" => ["SemiInfinite/solving.md", | ||
"SemiInfinite/api.md"], | ||
"Contributing to EAGO" => ["Dev/contributing.md", | ||
"Dev/future.md"], | ||
"References" => "ref.md", | ||
"Citing EAGO" => "cite.md"] | ||
) | ||
|
||
|
||
deploydocs( | ||
deps = Deps.pip("pygments", "mkdocs", "python-markdown-math"), | ||
repo = "github.com/PSORLab/EAGO.jl.git", | ||
target = "build", | ||
osname = "linux", | ||
julia = "1.1", | ||
deps = nothing, | ||
make = nothing) |
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Overview | ||
|
||
This component is meant to provide a flexible framework for implementing spatial branch-and-bound based optimization routines in Julia. | ||
All components of the branch-and-bound routine can be customized by the individual user: lower bounding problem, upper bounding problem. | ||
The branch and bound routine consists of a main solve algorithm that executes as depicted in the flowchart below. | ||
Routines for setting the objects to implement standard B&B routines are also provided using a `set_to_default!()` function. | ||
|
||
 | ||
|
||
- The `lower_problem::Function`, `upper_problem::Function`, `preprocess::Function `, and `postprocess::Function` are fields in | ||
the EAGO optimizer each of which should take inputs `(x::EAGO.Optimizer,y::EAGO.NodeBB)`. They each set fields a `SubProblemInfo` | ||
subtypes contained in fields of `x::EAGO.Optimizer`: `current_lower_info::LowerInfo`, `current_upper_info::UpperInfo`, | ||
`current_preprocess_info::PreprocessInfo`, `current_postprocess_info::PostprocessInfo`. | ||
|
||
The `EAGO.NodeBB` object is used to store the current subproblem's box constraints and detailed here in the [Backend]() section. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Backend | ||
|
||
|
||
## Branch and Bound Node Storage | ||
```@docs | ||
EAGO.NodeBB | ||
``` | ||
|
||
## Default checks | ||
|
||
Below are the default function for the Branch-and-Bound library. The EAGO solver | ||
populates these fields based on user inputs to the solver in order to deliver a | ||
valid nonconvex NLP solver. | ||
|
||
The default repetition, termination, and convergence check functions are described below: | ||
```@docs | ||
EAGO.default_repeat_check | ||
EAGO.default_termination_check | ||
EAGO.default_convergence_check | ||
``` | ||
|
||
## Fathoming | ||
|
||
By default, nodes are fathomed on value dominance. | ||
```@docs | ||
EAGO.fathom! | ||
``` | ||
|
||
## Bisection Methods | ||
Method for relative width bisection on all dimension in stack: | ||
|
||
```@docs | ||
EAGO.continuous_relative_bisect | ||
``` | ||
|
||
Method for relative width bisection ignoring the last `nx` dimensions: | ||
|
||
```@docs | ||
EAGO.implicit_bisection | ||
``` | ||
|
||
## Selection Methods for Common Branching Schemes | ||
|
||
Select node for best-first search: | ||
|
||
```@docs | ||
EAGO.node_select_best! | ||
``` | ||
|
||
## Functions for generating console displayed | ||
```@docs | ||
EAGO.print_node! | ||
EAGO.print_iteration! | ||
EAGO.print_solution! | ||
EAGO.print_results! | ||
``` |
Oops, something went wrong.