Skip to content

Commit

Permalink
Add git rep to local
Browse files Browse the repository at this point in the history
  • Loading branch information
mewilhel committed Jun 14, 2019
0 parents commit 582ff99
Show file tree
Hide file tree
Showing 240 changed files with 31,167 additions and 0 deletions.
1 change: 1 addition & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
comment: false
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.jl.cov
*.jl.*.cov
*.jl.mem

docs/build/
36 changes: 36 additions & 0 deletions .travis.yml
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());
5 changes: 5 additions & 0 deletions LICENSE.md
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.
26 changes: 26 additions & 0 deletions Project.toml
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]
39 changes: 39 additions & 0 deletions README.md
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://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/latest) | Coming Soon | [![Build Status](https://travis-ci.org/PSORLab/EAGO.jl.svg?branch=master)](https://travis-ci.org/PSORLab/EAGO.jl) | [![Build status](https://ci.appveyor.com/api/projects/status/edwwjgvbkdsqcr1t?svg=true)](https://ci.appveyor.com/project/MatthewStuber/eago-jl)

| **Coverage** | **Chat** |
|:------------:|:------------:|
|[![Coverage Status](https://coveralls.io/repos/github/PSORLab/EAGO.jl/badge.svg?branch=master)](https://coveralls.io/github/PSORLab/EAGO.jl?branch=master) [![codecov](https://codecov.io/gh/PSORLab/EAGO.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/PSORLab/EAGO.jl) | [![Join the chat at https://gitter.im/EAGODevelopment](https://badges.gitter.im/Join%20Chat.svg)](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.
18 changes: 18 additions & 0 deletions REQUIRE
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+
1 change: 1 addition & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
theme: jekyll-theme-cayman
44 changes: 44 additions & 0 deletions appveyor.yml
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%"
43 changes: 43 additions & 0 deletions docs/make.jl
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 added docs/mkdocs.yml
Empty file.
Binary file added docs/src/BranchBound/BnBChart1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/src/BranchBound/BnBChart2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions docs/src/BranchBound/Overview.md
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.

![BnBChart1](BnBChart1.png)

- 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.
56 changes: 56 additions & 0 deletions docs/src/BranchBound/back.md
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!
```
Loading

0 comments on commit 582ff99

Please sign in to comment.