Crate cvxrust

Crate cvxrust 

Source
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) or maximize(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 Expr enum with Arc sharing
  • 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.