• Stars
    star
    280
  • Rank 147,492 (Top 3 %)
  • Language
    Julia
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

COSMO: Accelerated ADMM-based solver for convex conic optimisation problems (LP, QP, SOCP, SDP, ExpCP, PowCP). Automatic chordal decomposition of sparse semidefinite programs.

FeaturesInstallationNewsCitingContributing

This is a Julia implementation of the Conic operator splitting method (COSMO) solver. It can solve large convex conic optimization problems of the following form:

with decision variables x ϵ R^n, s ϵ R^m and data matrices P=P'>=0, q ϵ R^n, A ϵ R^(m×n), and b ϵ R^m. The convex set K is a composition of convex sets and cones.

For more information take a look at the COSMO.jl Documentation (stable | dev).

Features

  • Versatile: COSMO solves linear programs, quadratic programs, second-order cone programs, semidefinite programs and problems involving exponential and power cones
  • Quad SDPs: Positive semidefinite programs with quadratic objective functions are natively supported
  • Safeguarded acceleration: robust and faster convergence to higher precision using COSMOAccelerators
  • Infeasibility detection: Infeasible problems are detected without a homogeneous self-dual embedding of the problem
  • JuMP / Convex.jl support: We provide an interface to MathOptInterface (MOI), which allows you to describe your problem in JuMP and Convex.jl.
  • Warm starting: COSMO supports warm starting of the decision variables
  • Custom sets and linear solver: Customize COSMO's components by defining your own convex constraint sets and by choosing from a number of direct and indirect linear system solvers, for example, QDLDL, Pardiso, Conjugate Gradient and MINRES
  • Arbitrary precision types: You can solve problems with any floating point precision.
  • Open Source: Our code is free to use and distributed under the Apache 2.0 Licence
  • Chordal decomposition: COSMO tries to decompose large structured PSD constraints using chordal decomposition techniques. This often results in a significant speedup compared to the original problem.
  • Smart clique merging: After an initial decomposition of a structured SDP, COSMO recombines overlapping cliques/blocks to speed up the algorithm.

Installation

  • COSMO can be added via the Julia package manager (type ]): pkg> add COSMO

Citing

If you find COSMO useful in your project, we kindly request that you cite the following paper:

@Article{Garstka_2021,
  author  = {Michael Garstka and Mark Cannon and Paul Goulart},
  journal = {Journal of Optimization Theory and Applications},
  title   = {{COSMO}: A Conic Operator Splitting Method for Convex Conic Problems},
  volume  = {190},
  number  = {3},
  pages   = {779--810},
  year    = {2021},
  publisher = {Springer},
  doi     = {10.1007/s10957-021-01896-x},
  url     = {https://doi.org/10.1007/s10957-021-01896-x}
}

The article is available under Open Access here.

Contributing

  • Contributions are always welcome. Our style guide can be found here.
  • Current issues, tasks and future ideas are listed in Issues. Please report any issues or bugs that you encounter.
  • As an open source project we are also interested in any projects and applications that use COSMO. Please let us know by opening a GitHub issue.

Python - Interface

COSMO can also be called from Python. Take a look at: cosmo-python

Licence 🔍

This project is licensed under the Apache License - see the LICENSE.md file for details.

More Repositories

1

Clarabel.rs

Clarabel.rs: Interior-point solver for convex conic optimisation problems in Rust.
Rust
192
star
2

Clarabel.jl

Clarabel.jl: Interior-point solver for convex conic optimisation problems in Julia.
Julia
165
star
3

CDCS

An open-source MATLAB® ADMM solver for partially decomposable conic optimization programs.
MATLAB
63
star
4

SOSTOOLS

A free MATLAB toolbox for formulating and solving sums of squares (SOS) optimization programs
MATLAB
54
star
5

Bayesian-Optimization

Reference implementation of Optimistic Expected Improvement.
Python
45
star
6

Clarabel.cpp

Clarabel.cpp: C/C++ interface to the Clarabel Interior-point solver for convex conic optimisation problems.
C++
23
star
7

TRS.jl

Solving the Trust Region Subproblem as an Eigenproblem in Julia
Julia
19
star
8

QDLDL.jl

A free LDL factorisation routine (Julia implementation)
Julia
18
star
9

SwitchTimeOpt.jl

SwitchTimeOpt.jl - Switching Time Optimization in Julia
Julia
12
star
10

OMD

A Matlab package for computing the optimal mode decomposition (OMD) or dynamic mode decomposition (DMD).
MATLAB
12
star
11

cosmo-python

Python interface for COSMO.jl convex optimisation solver.
Python
11
star
12

SOSADMM

An open source first-order MATLAB solver for conic programs with row sparsity.
MATLAB
10
star
13

clarabel-r

Interior Point Conic Optimization Solver
R
9
star
14

qpip

Matlab interior point solver for quadratic programs
MATLAB
8
star
15

CDCS.jl

Julia wrapper for CDCS (https://github.com/oxfordcontrol/CDCS/)
Julia
6
star
16

ClarabelDocs

Documentation for the Clarabel interior point conic solver
Julia
5
star
17

COSMOAccelerators.jl

Accelerators for fixed-point methods, used in the conic solver COSMO.jl
Julia
5
star
18

GeneralQP.jl

An active set solver for general (definite/indefinite) dense Quadratic Programs
Julia
3
star
19

QPnorm.jl

Solving Nonconvex Quadratic Problems with a norm constraint
Julia
2
star
20

ClarabelBenchmarks

Benchmark tests for Clarabel solver
Julia
2
star
21

DoublyStochastic.jl

Doubly Stochastic Approximation of a Matrix in the Frobenius norm.
Julia
1
star
22

osqp-recipes

OSQP Python Conda recipes builder
1
star
23

osqp-wheels

OSQP Python wheels builder
Shell
1
star