PyTorch implementation (via Eigen/C++ bindings) of a solver for strictly convex Lorentz cone-constrained Quadratic Programs (LCQP's), equivalent to strongly monotone Second Order Linear Complementarity Problems (SOLCP's), based on Alejandro Castro et al.'s Semi-Analytic Primal Solver, developed by Toyota Research Institute.
Problems are sovled with decision variables
Given problem data sappy solves the following equivalent LCQP/SOLCP pair for
The solver interface is as follows:
from sappy import SAPSolver
solver = SAPSolver()
l = solver.apply(J, q, eps)
The interface supports one dimension of batching, such that J,q can be torch.Tensor's of shapes (n, 3k), (3k,) or (n_batch, n, 3k), (n_batch, 3k,).
solver.apply supports reverse-mode differentiation via sensitivity analysis.
pip install git+https://github.com/mshalm/sappy.git