Software Projects

Most of my group's software projects can be found on the Oxford Control GitHub page.

Clarabel – Interior point solver for convex conic programming.

An interior point numerical solver for convex optimization problems using a novel homogeneous embedding – solves problems with linear, second-order cone, power cone, exponential cone and semidefiniteness constraints. We provide separate implementations in Julia and in Rust. We also provide additional interfaces to the Rust implementation via Python, R and C/C++.

OSQP – Operator Splitting Quadratic Program solver

A QP solver based on operator splitting methods / alternating direction method of multipliers (ADMM). Written in C, with interfaces to many other programming languages.

The solver is based on this paper.

COSMO.jl – The Conic operator splitting method (COSMO) solver.

A general purpose convex conic solver for LPs, QPs, SOCPs, SDPs and many other standard problem types. Natively supports quadratic objective functions. Based on operator splitting methods / alternating direction method of multipliers (ADMM). Written in Julia, including an interface to JuMP.

This package is based on this paper.

QDLDL – LDL factorisation for quasidefinite matrices.

A lightweight factorisation package for symmetric quasidefinite matrices written in C, with a second implementation in Julia.

QPnorm.jl – An active set solver for indefinite QPs with norm constraints.

An active set solver for indefinite quadratic programming problems with both linear inequalities and interval constraints on the 2–norm of the decision variables. Implemented in Julia. A supporting package for solving the Trust Region Subproblem can be found here. A supporting package for solving indefinite QPs with linear inequalities only can be found here.

This package is based on this paper.

miOSQP – Mixed-integer QP solver based on OSQP

An mixed-integer quadratic programming (MIQP) extension to OSQP based on branch-and bound. Written in Python, based on this paper.

CDCS – Cone Decomposition Conic Solver

A Matlab-based ADMM solver for partially decomposable conic optimization programs, particularly suitable for large scale semi-definite programs.

The toolbox is based on this paper.

SwitchTimeOpt - Switching time optimization in Julia

Julia package to easily define and efficiently solve switching time optimization (STO) problems for linear and nonlinear systems. Supports a wide variety of nonlinear solvers through MathProgBase.jl interface such as Ipopt, KNITRO, NLopt.

The package is based on this paper.

QUINOPT - Modelling polynomial quadratic inequalities

A Matlab/Yalmip modelling layer for optimization problems with polynomial quadratic integral inequality constraints.

The toolbox is based on this paper.

QPIP – An interior point solver for quadratic and linear programs.

A Matlab-based QP solver that uses the Mehrotra predictor-corrector method for solving convex QPs. Based heavily on OOQP.

OMD – Optimal Mode Decomposition in Matlab

A Matlab toolbox that computes the Optimal Mode Decomposition (OMD) and Dynamic Mode Decomposition (DMD).

The toolbox is based on this paper.