#quadratic #dense #pure #solver #forms #minimize #solve

quadprog

一个纯Rust实现的密集二次规划求解器

2个版本

0.0.1 2021年12月4日
0.0.0 2021年12月4日

#10#quadratic

Download history 57/week @ 2024-03-15 58/week @ 2024-03-22 72/week @ 2024-03-29 42/week @ 2024-04-05 50/week @ 2024-04-12 56/week @ 2024-04-19 57/week @ 2024-04-26 56/week @ 2024-05-03 47/week @ 2024-05-10 51/week @ 2024-05-17 59/week @ 2024-05-24 58/week @ 2024-05-31 33/week @ 2024-06-07 48/week @ 2024-06-14 53/week @ 2024-06-21 20/week @ 2024-06-28

162 每月下载量

GPL-2.0 许可协议

42KB
937

QuadProg

Crate Tests

一个基于Goldfarb Idnani算法的纯Rust实现的密集二次规划求解器。此实现基于一些来源,但主要借鉴了quadprog

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
quadprog = "0.0.1"

然后使用

quadprog::solve_qp(...)

lib.rs:

解决密集二次规划问题。

此包实现了Goldfarb Indiani方法[^1],用于解决形式如下二次规划问题

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

在纯Rust中。这些通过唯一导出的函数[solve_qp]来解决,该函数返回一个[Solution]结构体。

示例

如果我们想解决

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

我们可以使用以下示例来解决这个问题

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]);

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

无运行时依赖