All Projects → mfalt → FirstOrderSolvers.jl

mfalt / FirstOrderSolvers.jl

Licence: other
Large scale convex optimization solvers in julia

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to FirstOrderSolvers.jl

osqp
The Operator Splitting QP Solver
Stars: ✭ 929 (+4545%)
Mutual labels:  solver, convex-optimization
qpmad
ROS-compatible Eigen-based Goldfarb-Idnani quadratic programming solver
Stars: ✭ 41 (+105%)
Mutual labels:  solver, optimization-algorithms
gibbous
Convex optimization for java and scala, built on Apache Commons Math
Stars: ✭ 17 (-15%)
Mutual labels:  optimization-algorithms, convex-optimization
portfolio allocation js
A JavaScript library to allocate and optimize financial portfolios.
Stars: ✭ 145 (+625%)
Mutual labels:  optimization-algorithms, convex-optimization
benchopt
Making your benchmark of optimization algorithms simple and open
Stars: ✭ 89 (+345%)
Mutual labels:  optimization-algorithms, convex-optimization
Cppnumericalsolvers
a lightweight C++17 library of numerical optimization methods for nonlinear functions (Including L-BFGS-B for TensorFlow)
Stars: ✭ 638 (+3090%)
Mutual labels:  solver, optimization-algorithms
Deep-Learning-Optimization-Algorithms
Visualization of various deep learning optimization algorithms using PyTorch automatic differentiation and optimizers.
Stars: ✭ 47 (+135%)
Mutual labels:  optimization-algorithms, convex-optimization
optaplanner-quickstarts
OptaPlanner quick starts for AI optimization: many use cases shown in many different technologies.
Stars: ✭ 226 (+1030%)
Mutual labels:  solver, optimization-algorithms
GurobiLink
Wolfram Language interface to the Gurobi numerical optimization library
Stars: ✭ 16 (-20%)
Mutual labels:  optimization-algorithms, convex-optimization
ProxSDP.jl
Semidefinite programming optimization solver
Stars: ✭ 69 (+245%)
Mutual labels:  solver, convex-optimization
rcbc
COIN-OR branch and cut (CBC) bindings for R
Stars: ✭ 16 (-20%)
Mutual labels:  solver
zoofs
zoofs is a python library for performing feature selection using a variety of nature-inspired wrapper algorithms. The algorithms range from swarm-intelligence to physics-based to Evolutionary. It's easy to use , flexible and powerful tool to reduce your feature size.
Stars: ✭ 142 (+610%)
Mutual labels:  optimization-algorithms
nuxt-prune-html
🔌⚡ Nuxt module to prune html before sending it to the browser (it removes elements matching CSS selector(s)), useful for boosting performance showing a different HTML for bots/audits by removing all the scripts with dynamic rendering
Stars: ✭ 69 (+245%)
Mutual labels:  optimization-algorithms
car-racing
A toolkit for testing control and planning algorithm for car racing.
Stars: ✭ 30 (+50%)
Mutual labels:  optimization-algorithms
cplex-example
Solving a TSP with the CPLEX C++ API.
Stars: ✭ 40 (+100%)
Mutual labels:  solver
adaboost
An implementation of the paper "A Short Introduction to Boosting"
Stars: ✭ 20 (+0%)
Mutual labels:  optimization-algorithms
rust-lp-modeler
Lp modeler written in Rust
Stars: ✭ 75 (+275%)
Mutual labels:  solver
Joint-User-Association-and-In-band-Backhaul-Scheduling-and-in-5G-mmWave-Networks
Matlab Simulation for T. K. Vu, M. Bennis, S. Samarakoon, M. Debbah and M. Latva-aho, "Joint In-Band Backhauling and Interference Mitigation in 5G Heterogeneous Networks," European Wireless 2016; 22th European Wireless Conference, Oulu, Finland, 2016, pp. 1-6. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7499273&isnumber=7499250
Stars: ✭ 36 (+80%)
Mutual labels:  convex-optimization
libsmt.rs
Rust Bindings to interact with SMTLIB2 compliant solvers
Stars: ✭ 14 (-30%)
Mutual labels:  solver
hyper-engine
Python library for Bayesian hyper-parameters optimization
Stars: ✭ 80 (+300%)
Mutual labels:  optimization-algorithms

FirstOrderSolvers

Build Status Coverage Status codecov.io

Package for large scale convex optimization solvers in julia. This package is intended to allow for easy implementation, testing, and running of solvers through the Convex.jl interface. The package is currently under active development and uses the ProximalOperators.jl package to do the low level projections.

Installation

To run the solvers you need to have the following packages

Pkg.add("Convex")
Pkg.clone("https://github.com/mfalt/FirstOrderSolvers.jl.git")

Usage

Define an optimization problem in the format supported by Convex.jl, and supply the desired solver to the solve! function. Exaple using DR for feasibility problems with the GAP solver

using Convex, FirstOrderSolvers
m = 40;  n = 50
A = randn(m, n); b = randn(m, 1)
x = Variable(n)
problem = minimize(sumsquares(A * x - b), [x >= 0])

solve!(problem, GAP(0.5, 2.0, 2.0, max_iters=2000))

Solvers

Currently, the available solvers are

Solver Description Reference
GAP(α=0.8, α1=1.8, α2=1.8; kwargs...) Generalized Alternating Projections
DR(α=0.5; kwargs...) Douglas-Rachford (GAP(α, 2.0, 2.0)) Douglas, Rachford (1956)
AP(α=0.5; kwargs...) Alternating Projections (GAP(α, 1.0, 1.0)) Agmon (1954), Bregman (1967)
GAPA(α=1.0; kwargs...) GAP Adaptive Fält, Giselsson (2017)
FISTA(α=1.0; kwargs...) FISTA Beck, Teboulle (2009)
Dykstra(; kwargs...) Dykstra Boyle, Dykstra (1986)
GAPP(α=0.8, α1=1.8, α2=1.8; iproj=100; kwargs...) Projected GAP Fält, Giselsson (2016)

Keyword Arguments

All solvers accept for the following keyword arguments:

Argument Default Description (Values)
max_iters 10000 Maximum number of iterations
verbose 1 Print verbosity level 0,1
debug 1 Level of debug data to save 0,1,2
eps 1e-5 Accuracy of solution
checki 100 Interval for checking convergence

Debugging

If the keyword argument debug is set to 1 or 2 the following values will be stored in a ValueHistories.MVHistory in problem.model.history, for each iteration the convergence check is run:

Name Debug Level Required Description
:p 1 Relative Primal Residual
:d 1 Relative Dual Residual
:g 1 Relative Duality Gap
:ctx 1 cᵀx
:bty 1 bᵀy
1 κ
1 τ
:x 2 x
:y 2 y
:s 2 s

These values correspond to the values in the paper Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding (O'Donoghue et.al).

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].