# COSMO

68

11

8

4

### contributors

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:

$\begin{array}{ll}&space;\mbox{minimize}&space;&&space;\textstyle{\frac{1}{2}}x^\top&space;Px&space;+&space;q^\top&space;x\\&space;\mbox{subject&space;to}&space;&&space;Ax&space;+&space;s&space;=&space;b&space;\\&space;&&space;s&space;\in&space;\mathcal{K},&space;\end{array}$

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},
}


## Contributing

• Contributions are always welcome. Our style guide can be found here.
• Current issues, tasks and future ideas are listed in Issues:exclamation:. 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!

01/08/2018

1 day ago

405 commits