All Projects → lanl-ansi → Alpine.jl

lanl-ansi / Alpine.jl

Licence: other
A JuMP-based Global Optimization Solver for Non-convex Programs

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Alpine.jl

Training Material
A collection of code examples as well as presentations for training purposes
Stars: ✭ 85 (-15.84%)
Mutual labels:  optimization
Go Perfbook
Thoughts on Go performance optimization
Stars: ✭ 9,597 (+9401.98%)
Mutual labels:  optimization
Qreverse
A small study in hardware accelerated AoS reversal
Stars: ✭ 97 (-3.96%)
Mutual labels:  optimization
Csso Rails
CSS Optimizer(csso) ruby wrapper for Rails Asset pipeline
Stars: ✭ 86 (-14.85%)
Mutual labels:  optimization
Jplusone
Tool for automatic detection and asserting "N+1 SELECT problem" occurences in JPA based Spring Boot Java applications and finding origin of JPA issued SQL statements in general
Stars: ✭ 91 (-9.9%)
Mutual labels:  optimization
Rinsim
RinSim is a logistics simulator written in Java. RinSim supports (de)centralized algorithms for dynamic pickup-and-delivery problems (PDP). The simulator is developed at the imec-DistriNet group at the dept. of Computer Science, KU Leuven, Belgium.
Stars: ✭ 91 (-9.9%)
Mutual labels:  optimization
Esbuild Loader
⚡️ Speed up your Webpack build with esbuild
Stars: ✭ 1,245 (+1132.67%)
Mutual labels:  optimization
Dists
IQA: Deep Image Structure and Texture Similarity Metric
Stars: ✭ 101 (+0%)
Mutual labels:  optimization
Faster
SIMD for humans
Stars: ✭ 1,304 (+1191.09%)
Mutual labels:  optimization
Limes
Link Discovery Framework for Metric Spaces.
Stars: ✭ 94 (-6.93%)
Mutual labels:  optimization
Beautiful React Redux
Redux 🚀, Redux 🤘, Redux 🔥 - and the magic optimization
Stars: ✭ 87 (-13.86%)
Mutual labels:  optimization
Safeopt
Safe Bayesian Optimization
Stars: ✭ 90 (-10.89%)
Mutual labels:  optimization
Proximaloperators.jl
Proximal operators for nonsmooth optimization in Julia
Stars: ✭ 92 (-8.91%)
Mutual labels:  optimization
Auxpack
A dashboard for monitoring Webpack build stats.
Stars: ✭ 86 (-14.85%)
Mutual labels:  optimization
Monkeys
A strongly-typed genetic programming framework for Python
Stars: ✭ 98 (-2.97%)
Mutual labels:  optimization
Maze
Maze Applied Reinforcement Learning Framework
Stars: ✭ 85 (-15.84%)
Mutual labels:  optimization
Deep Learning Drizzle
Drench yourself in Deep Learning, Reinforcement Learning, Machine Learning, Computer Vision, and NLP by learning from these exciting lectures!!
Stars: ✭ 9,717 (+9520.79%)
Mutual labels:  optimization
Unreachable
Unreachable code path optimization hint for Swift
Stars: ✭ 101 (+0%)
Mutual labels:  optimization
Advisor
Open-source implementation of Google Vizier for hyper parameters tuning
Stars: ✭ 1,359 (+1245.54%)
Mutual labels:  optimization
Webpack Conditional Loader
C conditionals directive for JavaScript
Stars: ✭ 93 (-7.92%)
Mutual labels:  optimization

Alpine, A global solver for nonconvex MINLPs

Dev: Build Status codecov

"ALPINE: glob(AL) o(P)timization for mixed-(I)nteger programs with (N)onlinear (E)quations", is a novel global optimization solver that uses an adaptive, piecewise convexification scheme and constraint programming methods to solve non-convex Mixed-Integer Non-Linear Programs (MINLPs) efficiently. MINLPs are famously known as the "hard" programming problems that exist in many applications (see MINLPLib.jl). Alpine is also a good fit for subsets of the MINLP family, e.g., Mixed-Integer Quadradic Convex Programming (MIQCP), Non-Linear Programming (NLP), etc.

Unlike many other state-of-the-art MINLP solvers, Alpine is entirely built upon JuMP and MathProgBase Interface in Julia, which provides incredible flexibility for usage and further development.

Alpine globally solves a given MINLP by:

  • Analyzing the problem's expressions (objective & constraints) and applies approporite convex relaxations

  • Performing novel adaptive partitioning methods to create piecewise relaxations, bound tightening and polyhedral outer-approximations to guarantee global convergence

Allowable nonlinearities: Alpine can currently handle MINLPs with polynomials in constraints and/or in the objective. Currently, there is no support for exponential cones and Positive Semi-Definite (PSD) cones in MINLPs.

Presentation on Alpine.jl at the 2nd Annual JuMP-dev Workshop, held at the Institut de Mathématiques de Bordeaux, June 2018

Installation

Alpine, with it's repository under the LANL-ANSI group, can be installed through the Julia package manager:

julia> Pkg.add("Alpine")

Developers: Any further development of Alpine can be conducted on a new branch or a forked repo.

Underlying solvers

Though the algorithm implemented in Alpine is quite involved, most of the hard work and computational bottleneck would arise in the underlying solvers. Since every iteration of Alpine solves a subproblem to optimality, which is typically a convex MILP/MIQCQP and solves a nonconvex NLP/MINLP to local optimality, Alpine's run time heavily depends on the quality of these solvers. For best performance of Alpine, use commercial solvers such as CPLEX/Gurobi. However, due to the flexibility offered by JuMP/MathProgBase, the following solvers are supported in Alpine:

Solver Julia Package
CPLEX CPLEX.jl
Cbc Cbc.jl
Gurobi Gurobi.jl
Ipopt Ipopt.jl
Bonmin Bonmin.jl
Artelys KNITRO KNITRO.jl
Xpress Xpress.jl

Bug reports and support

Please report any issues via the Github issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc.

Challenging Problems

We are seeking out hard benchmark instances for MINLPs. Please get in touch either by opening an issue or privately if you would like to share any hard instances.

Citing Alpine

If you find Alpine useful in your work, we kindly request that you cite the following papers (pdf, pdf)

@article{NagarajanLuWangBentSundar2019,
  author = {Nagarajan, Harsha and Lu, Mowen and Wang, Site and Bent, Russell and Sundar, Kaarthik},
  title = {An adaptive, multivariate partitioning algorithm for global optimization of nonconvex programs},
  journal = {Journal of Global Optimization},
  year = {2019},
  issn = {1573-2916},
  doi = {10.1007/s10898-018-00734-1},
}

@inproceedings{NagarajanLuYamangilBent2016,
  title = {Tightening {McC}ormick relaxations for nonlinear programs via dynamic multivariate partitioning},
  author = {Nagarajan, Harsha and Lu, Mowen and Yamangil, Emre and Bent, Russell},
  booktitle = {International Conference on Principles and Practice of Constraint Programming},
  pages = {369--387},
  year = {2016},
  organization = {Springer},
  doi = {10.1007/978-3-319-44953-1_24},
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].