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

OSQP Stars Downloads

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

minimize12xTPx+qTxsubject tolAxu.\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 is a free sparse LDLTLDL^T factorization routine for solving linear systems of the form

Ax=b,A x = b,

where AA is quasi-definite. Already used in many numerical solvers including OSQP and SCS.

SwitchTimeOpt.jl Stars

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

minimizeτt0Tx(t)Qx(t)  dt+x(T)Qx(T)subject tox˙(t)=fi(x(t))t[τi,τi+1)ix(0)=x0τiτi+1,i\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 fif_i defines the system dynamics and τi\tau_i are the switching times.