14 releases (8 breaking)

0.9.0 Jun 1, 2024
0.7.1 Mar 1, 2024
0.6.0 Sep 20, 2023
0.5.1 Jun 2, 2023
0.2.0 Jul 31, 2022

#97 in Math

Download history 1703/week @ 2024-07-21 1634/week @ 2024-07-28 2148/week @ 2024-08-04 1481/week @ 2024-08-11 1355/week @ 2024-08-18 1659/week @ 2024-08-25 1414/week @ 2024-09-01 2001/week @ 2024-09-08 1958/week @ 2024-09-15 2154/week @ 2024-09-22 1895/week @ 2024-09-29 2414/week @ 2024-10-06 1700/week @ 2024-10-13 2164/week @ 2024-10-20 1722/week @ 2024-10-27 2091/week @ 2024-11-03

7,770 downloads per month
Used in 6 crates (4 directly)

Apache-2.0

685KB
17K SLoC

Clarabel.jl logo

Interior Point Conic Optimization for Rust and Python

FeaturesInstallationLicenseDocumentation

Clarabel.rs is a Rust implementation of an interior point numerical solver for convex optimization problems using a novel homogeneous embedding. Clarabel.rs solves the following problem:

$$ \begin{array}{r} \text{minimize} & \frac{1}{2}x^T P x + q^T x\\[2ex] \text{subject to} & Ax + s = b \\[1ex] & s \in \mathcal{K} \end{array} $$

with decision variables $x \in \mathbb{R}^n$, $s \in \mathbb{R}^m$ and data matrices $P=P^\top \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, and $b \in \mathbb{R}^m$. The convex set $\mathcal{K}$ is a composition of convex cones.

For more information see the Clarabel Documentation (stable | dev).

Clarabel is also available in a Julia implementation. See here.

Features

  • Versatile: Clarabel.rs solves linear programs (LPs), quadratic programs (QPs), second-order cone programs (SOCPs) and semidefinite programs (SDPs). It also solves problems with exponential, power cone and generalized power cone constraints.
  • Quadratic objectives: Unlike interior point solvers based on the standard homogeneous self-dual embedding (HSDE), Clarabel.rs handles quadratic objectives without requiring any epigraphical reformulation of the objective. It can therefore be significantly faster than other HSDE-based solvers for problems with quadratic objective functions.
  • Infeasibility detection: Infeasible problems are detected using a homogeneous embedding technique.
  • Open Source: Our code is available on GitHub and distributed under the Apache 2.0 License

Installation

Clarabel can be imported to Cargo based Rust projects by adding

[dependencies]
clarabel = "0"  

to the project's Cargo.toml file. To install from source, see the Rust Installation Documentation.

To use the Python interface to the solver:

pip install clarabel

To install the Python interface from source, see the Python Installation Documentation.

Citing

@misc{Clarabel_2024,
      title={Clarabel: An interior-point solver for conic programs with quadratic objectives}, 
      author={Paul J. Goulart and Yuwen Chen},
      year={2024},
      eprint={2405.12762},
      archivePrefix={arXiv},
      primaryClass={math.OC}
}

License 🔍

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

Dependencies

~2–26MB
~319K SLoC