# Software

**Our GitHub page is available at: https://github.com/unc-optimization**

**Sieve-SDP – A preprocessing Matlab toolbox for Semidefinite Programming**

**Sieve-SDP**is a MATAB code to preprocess SDPs based on a simple algorithm developed in “Y. Zhu, G. Pataki, and Q. Tran-Dinh:, https://arxiv.org/abs/1710.08954“.**Sieve-SDP: a simple facial reduction algorithm to preprocess semidefinite programs****Sieve-SDP**can be downloaded from https://github.com/unc-optimization/SieveSDP.

**PAPA – Proximal Alternating Penalty Algorithms**

**PAPA-v1.0**is a MATLAB software package for solving constrained convex optimization problems of the form:where and are two convex functions, , is a simple, nonempty, closed, and convex set in .

Here, we assume that and are proximally tractable, i.e., the proximal operators and are efficient to compute (see below).**PAPA**aims at solving constrained convex optimization problem for any convex functions and , where their proximal operator is provided.

**PAPA**is developed by**Quoc Tran-Dinh**at the Department of Statistics and Operations Research, University of North Carolina at Chapel Hill (UNC), North Carolina.**Download:****PAPA-v1.0**can be downloaded**HERE**.**References:**The theory and algorithms implemented in**PAPA**can be found in:- Q. Tran Dinh: Proximal Alternating Penalty Algorithms for Nonsmooth Constrained Convex Optimization, Manuscript, STOR-UNC, Nov., 2017. (preprint:

- Q. Tran Dinh: Proximal Alternating Penalty Algorithms for Nonsmooth Constrained Convex Optimization, Manuscript, STOR-UNC, Nov., 2017. (preprint:

**LMAOPT – Low-Rank Matrix Approximation Optimization**

**LMAOPT-v1.0**is a MATLAB code collection for solving three special cases of the following low-rank matrix optimization problem:where is a proper, closed and convex function from , is a linear operator from to , and is a given observed vector. Here, we are more interested in the case . Currently, we provide the code to solve three special cases of the above problem:

**Quadratic loss:**;**Quadratic loss and symmetric case:**and ; and**Nonsmooth objective loss with tractably proximal operators:**For instance, .

**LMAOPT**is implemented by**Quoc Tran-Dinh**at the Department of Statistics and Operations Research (STAT&OR), The University of North Carolina at Chapel Hill (UNC). This is a joint work with Zheqi Zhang at STAT & OR, UNC.**Download:****LMAOPT-v1.0**can be downloaded**HERE**.

For further information, please read**Readme3.txt**.**References:**The theory and algorithms implemented in**LMAOPT**can be found in the following manuscript: Q. Tran-Dinh, and Z. Zhang:**Extended Gauss-Newton and Gauss-Newton ADMM algorithms for low-rank matrix optimization**.*STAT&OR Tech. Report UNC-REPORT-2016.a*, (2016). Preprint: http://arxiv.org/abs/1606.03358

**Useful Software Tools in Optimization**

These opensource and academic free-of-charge software tools are very useful for research in optimization:

- ACADOToolkit – A Toolkit for Automatic Control and Dynamic Optimization (open-source), Boris Houska and Hans Joachim Ferreau (for C++ and Matlab).

- IPOPT – Sparse Nonlinear Optimization (open-source).
- CasADi – A minimalistic computer algebra system with automatic differentiation (open-source), Joel Andersson (for C++ and Python).
- qpOASES – Parametric Quadratic Programming for MPC (open-source), Hans Joachim Ferreau.
- TFOCS – Templates for first-order conic solvers, Stephen Becker.
- CVX – Disciplined Convex Programming, Michael Grant.
- Some of many other software tools that I have been using: SDPT3, SDPNAL+, SeDuMi, SDPA, Mosek, CPLEX, etc.