Crate osqp [−] [src]
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.readthedocs.io.
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::{Settings, Workspace}; // 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]; // Change the default alpha and disable verbose output let settings = Settings::default() .alpha(1.0) .verbose(false); // Create an OSQP workspace let mut workspace = Workspace::new(P, q, A, l, u, &settings); // Solve problem let solution = workspace.solve(); // Print the solution println!("{:?}", solution.x());
Structs
CscMatrix | |
Settings | |
Solution | |
Workspace |
Enums
LinsysSolver | |
Status |