Expand description
§cvxrust
A Rust implementation of Disciplined Convex Programming (DCP).
cvxrust provides a domain-specific language for specifying convex optimization problems in Rust, with automatic verification of convexity rules and efficient solving via the Clarabel solver.
§Quick Start
ⓘ
use cvxrust::prelude::*;
// Create variables
let x = variable(5);
// Build and solve a least-squares problem
let a = constant_dmatrix(/* your matrix */);
let b = constant_vec(/* your vector */);
let solution = Problem::minimize(sum_squares(&(&a.matmul(&x) - &b)))
.subject_to([x.ge(constant(0.0))])
.solve()?;
println!("Optimal value: {}", solution.value.unwrap());§DCP Rules
cvxrust enforces Disciplined Convex Programming rules:
- Objective:
minimize(convex)ormaximize(concave) - Constraints:
convex <= concave,concave >= convex,affine == affine
Curvature follows DCP composition rules (e.g., convex + convex = convex).
See https://dcp.stanford.edu/ for details.
§Supported Atoms
§Affine (both convex and concave)
- Arithmetic:
+,-,*(by scalar),/(by scalar) - Aggregation:
sum,trace - Structural:
reshape,transpose,vstack,hstack - Linear algebra:
matmul,dot
§Convex
- Norms:
norm1,norm2,norm_inf - Element-wise:
abs,pos,neg_part - Aggregation:
maximum,sum_squares - Quadratic:
quad_form(with PSD matrix),quad_over_lin
§Concave
- Aggregation:
minimum - Quadratic:
quad_form(with NSD matrix)
§Architecture
- Expression trees built using the
Exprenum withArcsharing - DCP verification via curvature and sign tracking
- Canonicalization transforms to affine + cone constraints
- Native QP for quadratic objectives (not SOCP reformulation)
- Clarabel solver for LP, QP, and SOCP problems
Re-exports§
pub use error::CvxError;pub use error::Result;pub use problem::Problem;pub use solver::Solution;pub use solver::SolveStatus;
Modules§
- atoms
- Atom functions for building expressions.
- canon
- Canonicalization transforms expressions into standard form.
- constraints
- Constraint types for optimization problems.
- dcp
- DCP (Disciplined Convex Programming) analysis.
- error
- Error types for cvxrust.
- expr
- Expression types and creation utilities.
- prelude
- Prelude module for convenient imports.
- problem
- Problem definition and solving API.
- solver
- Solver interface for cvxrust.
- sparse
- Sparse matrix utilities.
Macros§
- constraint
- Macro for creating constraints with operator syntax.