Skip to main content

Crate quadprog

Crate quadprog 

Source
Expand description

§quadprog

Crate Docs Build

A dense quadratic program solver in pure rust, based on the Goldfarb-Idnani algorithm. This implementation draws primarily from quadprog.

§Usage

Add this to your Cargo.toml:

[dependencies]
quadprog = "*"

Then solve a strictly convex QP of the form:

    minimize     1/2 x' Q x + c' x
    subject to   A1 x  = b1
                 A2 x <= b2

For example, to solve

    minimize     1/2 x^2 + 1/2 y^2 + x
    subject to   x + 2 y >= 1

write

use quadprog::solve_qp;
let mut q = [1., 0., 0., 1.];
let c = [1., 0.];
let a = [-1., -2.];
let b = [-1.];
let sol = solve_qp(&mut q, &c, &a, &b, 0, false).unwrap();
assert_eq!(sol.sol, &[-0.6, 0.8]);

§References

D. Goldfarb and A. Idnani (1983). A numerically stable dual method for solving strictly convex quadratic programs. Mathematical Programming, 27, 1-33.

Structs§

Solution
The solution to a quadratic program.

Functions§

solve_qp
Solve a strictly convex quadratic program.