COSMO: Accelerated ADMM-based solver for convex conic optimisation problems (LP, QP, SOCP, SDP, ExpCP, PowCP). Automatic chordal decomposition of sparse semidefinite programs.
APACHE-2.0 License
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^(mn)
, 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).
COSMO
can be installed via the Julia package manager (type ]
): pkg> add COSMO
Optimization problems appear in many applications such as power flow modelling, finance, control, and machine learning. We have collected a number of example problems in our documentation.
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.
This package is currently in maintenance mode. We are aiming to keep it compatible with new releases of JuMP/MOI. Helpful contributions are always welcome. Enhancement ideas are tagged as such in the Issues section.
COSMO can also be called from Python. Take a look at: cosmo-python
This project is licensed under the Apache License - see the LICENSE.md file for details.