# oxfordcontrol/COSMO.jl

COSMO: An ADMM-based solver for convex conic optimisation problems (LP, QP, SOCP, SDP, ExpCP, PowCP). Implemented in Julia
Julia
migarstka Merge pull request #98 from rschwarz/rs/moi095
Fix test failures with MOI 0.9.5
Latest commit 857bf18 Oct 16, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Sep 20, 2019
examples May 27, 2019
src Oct 16, 2019
test Oct 16, 2019
.bumpversion.cfg Aug 30, 2019
.codecov.yml Aug 10, 2018
.gitignore May 29, 2019
.travis.yml Aug 23, 2019
NEWS.md Aug 30, 2019
Project.toml Oct 16, 2019
appveyor.yml Oct 8, 2018

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.

## 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
• Infeasibility detection: Infeasible problems are detected without a homogeneous self-dual embedding of the problem
• JuMP support: COSMO supports MathOptInterface and JuMP, which allows you to describe your problem in JuMP
• 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.
• Warm starting: COSMO supports warm starting of the decision variables
• Open Source: Our code is free to use and distributed under the Apache 2.0 Licence

## 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:

@InProceedings{garstka_2019,
author        = {Michael Garstka and Mark Cannon and Paul Goulart},
title         = {{COSMO}: A conic operator splitting method for large convex problems},
booktitle     = {European Control Conference},
year          = {2019},
location      = {Naples, Italy},
doi            = {10.23919/ECC.2019.8796161},
eprint        = {1901.10887},
url           = {https://arxiv.org/abs/1901.10887},
archiveprefix = {arXiv},
keywords      = {Mathematics - Optimization and Control},
primaryclass  = {math.OC},
}