[−][src]Crate osqp
The OSQP (Operator Splitting Quadratic Program) solver is a numerical optimization package for solving convex quadratic programs in the form
\[\begin{split}\begin{array}{ll}
\mbox{minimize} & \frac{1}{2} x^T P x + q^T x \\
\mbox{subject to} & l \leq A x \leq u
\end{array}\end{split}\]
where \(x\) is the optimization variable and \(P \in \mathbf{S}^{n}_{+}\) a positive semidefinite matrix.
Further information about the solver is available at osqp.org.
Example
Consider the following QP
\[\begin{split}\begin{array}{ll}
\mbox{minimize} & \frac{1}{2} x^T \begin{bmatrix}4 & 1\\ 1 & 2 \end{bmatrix} x + \begin{bmatrix}1 \\ 1\end{bmatrix}^T x \\
\mbox{subject to} & \begin{bmatrix}1 \\ 0 \\ 0\end{bmatrix} \leq \begin{bmatrix} 1 & 1\\ 1 & 0\\ 0 & 1\end{bmatrix} x \leq \begin{bmatrix}1 \\ 0.7 \\ 0.7\end{bmatrix}
\end{array}\end{split}\]
use osqp::{CscMatrix, Problem, Settings}; // Define problem data let P = &[[4.0, 1.0], [1.0, 2.0]]; let q = &[1.0, 1.0]; let A = &[[1.0, 1.0], [1.0, 0.0], [0.0, 1.0]]; let l = &[1.0, 0.0, 0.0]; let u = &[1.0, 0.7, 0.7]; // Extract the upper triangular elements of `P` let P = CscMatrix::from(P).into_upper_tri(); // Disable verbose output let settings = Settings::default() .verbose(false); // Create an OSQP problem let mut prob = Problem::new(P, q, A, l, u, &settings).expect("failed to setup problem"); // Solve problem let result = prob.solve(); // Print the solution println!("{:?}", result.x().expect("failed to solve problem"));
Structs
CscMatrix | A matrix in Compressed Sparse Column format. |
DualInfeasibilityCertificate | A proof of dual infeasibility. |
Failure | A problem that failed to be solved. |
PrimalInfeasibilityCertificate | A proof of primal infeasibility. |
Problem | An instance of the OSQP solver. |
Settings | The settings used when initialising a solver. |
Solution | A solution to a problem. |
Enums
LinsysSolver | The linear system solver for OSQP to use. |
PolishStatus | The status of the polish operation. |
SetupError | An error that can occur when setting up the solver. |
Status | The result of solving a problem. |