2个版本
0.0.1 | 2021年12月4日 |
---|---|
0.0.0 | 2021年12月4日 |
#10 在 #quadratic
162 每月下载量
42KB
937 行
QuadProg
一个基于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.