All Projects → mariohsouto → ProxSDP.jl

mariohsouto / ProxSDP.jl

Licence: MIT license
Semidefinite programming optimization solver

Programming Languages

julia
2034 projects
matlab
3953 projects

Projects that are alternatives of or similar to ProxSDP.jl

CSDP.jl
Julia Wrapper for CSDP (https://projects.coin-or.org/Csdp/)
Stars: ✭ 18 (-73.91%)
Mutual labels:  optimization, solver, sdp
osqp
The Operator Splitting QP Solver
Stars: ✭ 929 (+1246.38%)
Mutual labels:  optimization, solver, convex-optimization
PEPit
PEPit is a package enabling computer-assisted worst-case analyses of first-order optimization methods.
Stars: ✭ 41 (-40.58%)
Mutual labels:  optimization, semidefinite-programming
Cppnumericalsolvers
a lightweight C++17 library of numerical optimization methods for nonlinear functions (Including L-BFGS-B for TensorFlow)
Stars: ✭ 638 (+824.64%)
Mutual labels:  optimization, solver
Osqp
The Operator Splitting QP Solver
Stars: ✭ 689 (+898.55%)
Mutual labels:  optimization, solver
qpmad
ROS-compatible Eigen-based Goldfarb-Idnani quadratic programming solver
Stars: ✭ 41 (-40.58%)
Mutual labels:  optimization, solver
bio ik
MoveIt kinematics_base plugin based on particle optimization & GA
Stars: ✭ 104 (+50.72%)
Mutual labels:  optimization, convex-optimization
Vroom
Vehicle Routing Open-source Optimization Machine
Stars: ✭ 533 (+672.46%)
Mutual labels:  optimization, solver
Angler
Frequency-domain photonic simulation and inverse design optimization for linear and nonlinear devices
Stars: ✭ 75 (+8.7%)
Mutual labels:  optimization, solver
Hiop
HPC solver for nonlinear optimization problems
Stars: ✭ 75 (+8.7%)
Mutual labels:  optimization, solver
Optimization
A set of lightweight header-only template functions implementing commonly-used optimization methods on Riemannian manifolds and convex spaces.
Stars: ✭ 66 (-4.35%)
Mutual labels:  optimization, convex-optimization
gibbous
Convex optimization for java and scala, built on Apache Commons Math
Stars: ✭ 17 (-75.36%)
Mutual labels:  optimization, convex-optimization
awesome-nn-optimization
Awesome list for Neural Network Optimization methods.
Stars: ✭ 39 (-43.48%)
Mutual labels:  optimization, convex-optimization
Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+3456.52%)
Mutual labels:  optimization, solver
Totsu
First-order conic solver for convex optimization problems
Stars: ✭ 18 (-73.91%)
Mutual labels:  optimization, solver
PyOptSamples
Optimization sample codes on Python
Stars: ✭ 20 (-71.01%)
Mutual labels:  optimization, convex-optimization
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 (-47.83%)
Mutual labels:  optimization, convex-optimization
cplex-example
Solving a TSP with the CPLEX C++ API.
Stars: ✭ 40 (-42.03%)
Mutual labels:  optimization, solver
Prioritizr
Systematic conservation prioritization in R
Stars: ✭ 62 (-10.14%)
Mutual labels:  optimization, solver
Cosmo.jl
COSMO: Accelerated ADMM-based solver for convex conic optimisation problems (LP, QP, SOCP, SDP, ExpCP, PowCP). Automatic chordal decomposition of sparse semidefinite programs.
Stars: ✭ 149 (+115.94%)
Mutual labels:  optimization, solver

ProxSDP logo

Build Status
Build Status Codecov branch

ProxSDP is an open-source semidefinite programming (SDP) solver based on the paper "Exploiting Low-Rank Structure in Semidefinite Programming by Approximate Operator Splitting". The main advantage of ProxSDP over other state-of-the-art solvers is the ability to exploit the low-rank structure inherent to several SDP problems.

Overview of problems ProxSDP can solve

Installation

You can install ProxSDP through the Julia package manager:

] add ProxSDP

Usage

Let's consider the semidefinite programming relaxation of the max-cut problem as in

    max   0.25 * W•X
    s.t.  diag(X) = 1,
          X ≽ 0,

JuMP

This problem can be solved by the following code using ProxSDP and JuMP.

# Load packages
using ProxSDP, JuMP, LinearAlgebra

# Number of vertices
n = 4
# Graph weights
W = [18.0  -5.0  -7.0  -6.0
     -5.0   6.0   0.0  -1.0
     -7.0   0.0   8.0  -1.0
     -6.0  -1.0  -1.0   8.0]

# Build Max-Cut SDP relaxation via JuMP
model = Model(with_optimizer(ProxSDP.Optimizer, log_verbose=true, tol_gap=1e-4, tol_feasibility=1e-4))
@variable(model, X[1:n, 1:n], PSD)
@objective(model, Max, 0.25 * dot(W, X))
@constraint(model, diag(X) .== 1)

# Solve optimization problem with ProxSDP
JuMP.optimize!(model)

# Retrieve solution
Xsol = JuMP.value.(X)

Convex.jl

Another alternative is to use ProxSDP via Convex.jl as the following

# Load packages
using Convex, ProxSDP

# Number of vertices
n = 4
# Graph weights
W = [18.0  -5.0  -7.0  -6.0
     -5.0   6.0   0.0  -1.0
     -7.0   0.0   8.0  -1.0
     -6.0  -1.0  -1.0   8.0]
     
# Define optimization problem
X = Semidefinite(n)
problem = maximize(0.25 * dot(W, X), diag(X) == 1)

# Solve optimization problem with ProxSDP
solve!(problem, ProxSDP.Optimizer(log_verbose=true, tol_gap=1e-4, tol_feasibility=1e-4))

# Get the objective value
problem.optval

# Retrieve solution
evaluate(X)

Citing this package

The published version of the paper can be found here and the arXiv version here.

We kindly request that you cite the paper as:

@article{souto2020exploiting,
  author = {Mario Souto and Joaquim D. Garcia and \'Alvaro Veiga},
  title = {Exploiting low-rank structure in semidefinite programming by approximate operator splitting},
  journal = {Optimization},
  pages = {1-28},
  year  = {2020},
  publisher = {Taylor & Francis},
  doi = {10.1080/02331934.2020.1823387},
  URL = {https://doi.org/10.1080/02331934.2020.1823387}
}

The preprint version of the paper can be found here.

Disclaimer

  • ProxSDP is a research software, therefore it should not be used in production.
  • Please open an issue if you find any problems, developers will try to fix and find alternatives.
  • There is no continuous development for 32-bit systems, the package should work, but might reach some issues.
  • ProxSDP assumes primal and dual feasibility.

ROAD MAP

  • Support for exponential and power cones;
  • Warm start.
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].