COSMO

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

https://github.com/oxfordcontrol/cosmo.jl

Science Score: 85.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: springer.com
  • Committers with academic emails
    4 of 17 committers (23.5%) from academic institutions
  • Institutional organization owner
    Organization oxfordcontrol has institutional domain (www.eng.ox.ac.uk)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.9%) to scientific vocabulary

Keywords

conic-programs convex-optimization julia-language optimization sdp semidefinite-programming solver

Keywords from Contributors

flux sciml interface surrogate arrays base jump julialang composibility primitives
Last synced: 4 months ago · JSON representation ·

Repository

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

Basic Info
Statistics
  • Stars: 301
  • Watchers: 13
  • Forks: 42
  • Open Issues: 17
  • Releases: 28
Topics
conic-programs convex-optimization julia-language optimization sdp semidefinite-programming solver
Created almost 8 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog License Citation

README.md

FeaturesInstallationChangelogCitingContributing

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 installed via the Julia package manager (type ]): pkg> add COSMO

🧪 Examples

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.

🎓 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

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. - How to get started with developing and testing this package is described in the documentation: How-to-develop. - 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 or via email.

🐍 Python - Interface

COSMO can 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.

Owner

  • Name: University of Oxford Control Group
  • Login: oxfordcontrol
  • Kind: organization
  • Location: Oxford, UK

Citation (CITATION.bib)

@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},
  year    = {2021},
  doi     = {10.1007/s10957-021-01896-x},
  url     = {https://doi.org/10.1007/s10957-021-01896-x},
}

GitHub Events

Total
  • Issues event: 3
  • Watch event: 19
  • Issue comment event: 10
  • Push event: 6
  • Pull request event: 6
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 3
  • Watch event: 19
  • Issue comment event: 10
  • Push event: 6
  • Pull request event: 6
  • Fork event: 1
  • Create event: 1

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 702
  • Total Committers: 17
  • Avg Commits per committer: 41.294
  • Development Distribution Score (DDS): 0.177
Past Year
  • Commits: 6
  • Committers: 3
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.333
Top Committers
Name Email Commits
Michael m****l@g****g 578
Paul Goulart p****t@e****k 68
nrontsis n****s@g****m 25
Oscar Dowson o****w 7
Benoît Legat b****t@g****m 5
Eric Hanson 5****n 4
Robert Schwarz m****l@r****t 3
github-actions[bot] 4****] 2
Mathieu Besançon m****n@g****m 2
Marek Kaluba m****a@k****u 1
Ian McInerney I****y@i****g 1
Julia TagBot 5****t 1
Marek Kaluba k****r@a****l 1
Mateus Araújo m****n@g****m 1
Mengchang Wang w****g@g****m 1
N5N3 2****6@q****m 1
lizz i****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 71
  • Total pull requests: 57
  • Average time to close issues: 9 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 38
  • Total pull request authors: 19
  • Average comments per issue: 2.77
  • Average comments per pull request: 2.18
  • Merged pull requests: 37
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 3
  • Pull requests: 5
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 7 days
  • Issue authors: 2
  • Pull request authors: 4
  • Average comments per issue: 0.67
  • Average comments per pull request: 2.0
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • migarstka (13)
  • blegat (5)
  • angeris (4)
  • Sage0614 (3)
  • nrontsis (3)
  • lrnv (3)
  • goulart-paul (3)
  • imciner2 (2)
  • araujoms (2)
  • guilhermebodin (2)
  • JinraeKim (2)
  • Mark-L-Stone (2)
  • mlubin (2)
  • maxchendt (1)
  • 1oly (1)
Pull Request Authors
  • github-actions[bot] (10)
  • goulart-paul (8)
  • migarstka (8)
  • nrontsis (7)
  • blegat (6)
  • odow (4)
  • tepidjuice (3)
  • matbesancon (2)
  • kalmarek (2)
  • araujoms (2)
  • Amuwa (1)
  • StefanKarpinski (1)
  • rschwarz (1)
  • ericphanson (1)
  • lrnv (1)
Top Labels
Issue Labels
bug (20) enhancement (15) test (2) docs (1) understand (1) performance (1)
Pull Request Labels
performance (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 75 total
  • Total dependent packages: 3
  • Total dependent repositories: 0
  • Total versions: 29
juliahub.com: COSMO

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

  • Versions: 29
  • Dependent Packages: 3
  • Dependent Repositories: 0
  • Downloads: 75 Total
Rankings
Stargazers count: 3.1%
Forks count: 3.4%
Average: 8.3%
Dependent repos count: 9.9%
Dependent packages count: 16.6%
Last synced: 4 months ago

Dependencies

.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CompatHelper.yml actions