3个不稳定版本
0.2.1 | 2024年7月19日 |
---|---|
0.2.0 | 2024年7月19日 |
0.1.0 | 2024年7月7日 |
#1423 在 算法 中
每月275次下载
41KB
1K SLoC
simple_qp
simple_qp
允许以符号方式表述 二次规划 (QP) 问题。定义您的QP而无需使用难以阅读的矩阵初始化。
可用的求解器后端
目前,这些是可用的求解器后端
OSQP
CLARABEL
COIN CBC
:仅限于线性规划问题
示例代码
use simple_qp::constraint;
use simple_qp::problem_variables::ProblemVariables;
use simple_qp::solver::osqp_solver::OSQPSolver;
use simple_qp::solver::Solver;
fn main() {
let mut problem = ProblemVariables::default();
let x = problem.add_variable(Some(85.), None);
let y = problem.add_variable(Some(4.0), None);
let objective = (x - 42).square() + (y - 73).square() + (x - y).square();
let constraints = vec![
constraint!(50 <= 1.5 * (x / 3 + 2 * y) <= 100),
constraint!(x - y == 75 + 2 * y),
];
let solver = OSQPSolver::default();
let res = solver
.solve(problem, objective, constraints)
.expect("Solver error");
let x_solution = res.value(x);
let y_solution = res.value(y);
println!("x = {}, y = {}", x_solution, y_solution);
}
致谢
感谢 FlorianNAdam 提供的 constraint!
宏。
依赖关系
~4.5MB
~78K SLoC