# Software

These are my software projects. For more details and the code please visit my Github page.

## OSQP

The OSQP (Operator Splitting Quadratic Program) solver is a numerical optimization package for solving convex quadratic programs in the form

$\begin{array}{ll} \text{minimize} & \frac{1}{2} x^T P x + q^T x \\[.5em] \text{subject to} & l \leq A x \leq u. \end{array}$Academic users include MIT, Stanford, ETH Zurich, University of Oxford, Berkeley, Imperial College, UCLA, KU Leuven, Lund University.

Industrial users include Lyft, Adobe, LinkedIn, Siemens, Baidu, Quantitative Brokers, Goral Trading, Macquarie.

## QDLDL

QDLDL is a free sparse $LDL^T$ factorization routine for solving linear systems of the form

$A x = b,$where $A$ is quasi-definite. Already used in many numerical solvers including OSQP and SCS.

## SwitchTimeOpt.jl

SwitchTimeOpt.jl is a Julia package to easily define and efficiently solve switching time optimization (STO) problems for linear and nonlinear systems of the form

$\begin{array}{ll} \underset{\tau}{\text{minimize}} & \int_{t_0}^{T} x(t)^\top Q x(t)\; \mathrm{d}t + x(T)^\top Q x(T)\\ \text{subject to} & \dot{x}(t) = f_i(x(t)) \quad t\in[\tau_i,\tau_{i+1}) \quad \forall i\\ & x(0) = x_0\\ & \tau_i \leq \tau_{i+1}, \quad \forall i \end{array}$where $f_i$ defines the system dynamics and $\tau_i$ are the switching times.