Expand description
Clarabel.rs is a Rust implementation of an interior point numerical solver for convex optimization problems using a novel homogeneous embedding. Clarabel solves the following problem:
$$ \begin{array}{rl} \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 installation, tutorials and examples see the Clarabel User’s Guide (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.
§Python interface
Clarabel.rs comes with an optional Python interface. See the Python Installation Documentation.
§License
Licensed under Apache License, Version 2.0. LICENSE
Modules§
- algebra
- Clarabel algebra module.
- qdldl
- Native Rust implementation of the QDLDL solver.
- solver
- Clarabel solver main module.
- timers
- Internal timing functions and macros.
Constants§
- INFINITY_
DEFAULT - Constant indicating that an inequality bound is to be treated as infinite.
Functions§
- buildinfo
- print detailed build configuration info to stdout
- default_
infinity - Revert internal infinity bound to its default value. The default is
INFINITY_DEFAULT
- get_
infinity - Get the current value of the internal infinity bound.
- set_
infinity - Set the internal infinity bound to a new value.