ERROR in osqp_setup: KKT matrix factorization

Hello,

I am using the C++ interface of osqp for a MPC application. I am pretty sure that the objective function matrix P (Hessian) is positive semi definite (I checked the eigenvalues which are all positive).
However, if I run the optimization the solver generates the following error:

“ERROR in LDL_factor: Error in KKT matrix LDL factorization when computing the nonzero elements. The problem seems to be non-convex
ERROR in osqp_setup: KKT matrix factorization.
The problem seems to be non-convex.”

How can I solve this issue?

Best regards.


P =
110 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0 0
0 110 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0
0 0 10000 0 0 0 0 0 0 0 0 -20000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0 0
0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0
0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0
0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0
0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0
0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0
0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06
0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 20000 0 0 0 0 0 0 0 0 -20000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -200 0 0 0 0 0 0 0 0 -20 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20000 0 0 0 0 0 0 0 0 -20000 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2e-06
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -220 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 0 0 0 0 0 0 0 0 -220 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20000 0 0 0 0 0 0 0 0 -20000 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2e-06 0 0 0 0 0 0 0 0 -2e-06
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10000 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5e-06

When specifying P, we assume that you are providing the upper triangular part of a symmetric matrix. The ‘P’ you have provided has all positive eigenvalues if you just treat it as a triangular matrix, but the correct matrix to check is:

P + P’ - diag(diag( P ))

That matrix is not positive semidefinite, since the leftmost eigenvalue is -1.6737e+04.

Thanks, it worked.

Regards.