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