NC-OPT is an open source software package for Nonconvex Composite Optimization in MATLAB. Its main purpose is to: (a) provide a general API for creating models based on a first-order oracle framework; and (b) leverage the fast matrix subroutines in MATLAB to solve these models. The interface of NC-OPT is loosely based on the well-known Gurobi API.
Currently, the following problems classes are supported:
Unconstrained Composite Optimization
Linearly Set Constrained Composite Optimization
Nonconvex-Concave Min-Max Optimization
Spectral Composite Optimization
Convex Cone Constrained Composite Optimization
Instances of the above classes include semidefinite programming, convex programming, cone programming, linear and quadratic programmin, and nonconvex programming.
The components of NC-OPT can be split into the following categories.
Classes that abstract the idea of a first-order oracle at a point. It contains one or more of the following oracles: function value, function gradient, and proximal oracle.
A collection of composite optimzation solvers that solve the problem associated with a particular first-order oracle. Some examples include: the composite gradient method, the accelerated composite gradient method, and the accelerated inexact proximal point method.
A collection of constrained composite optimization frameworks that use a solver to solve a constrained composite optimization model. Some examples include: the quadratic penalty framework, the augmented Lagrangian framework, and the dampened augmented Lagrangian framework.
A class that abstracts the idea of a composite optimization model. It contains properties that describe various aspects of the model, including: objective function, constraints, solver, framework, tolerances, and logging.