QuadtoSOC computes a cholesky factorization, which fails when the Q matrix is positive semidefinite but not positive definite:
|
F = try |
|
LinearAlgebra.cholesky(LinearAlgebra.Symmetric(Q)) |
|
catch |
|
throw( |
|
MOI.UnsupportedConstraint{typeof(func),typeof(set)}( |
|
"Unable to transform a quadratic constraint into a " * |
|
"second-order cone constraint because the quadratic " * |
|
"constraint is not strongly convex.\n\nConvex constraints " * |
|
"that are not strongly convex (i.e., the matrix is positive " * |
|
"semidefinite but not positive definite) are not supported " * |
|
"yet.\n\nNote that a quadratic equality constraint is " * |
|
"non-convex.", |
|
), |
|
) |
|
end |
Per @dpo we could use LDLFactorizations with a pivot tolerance of zero (or HSL/MUMPS, if we want external binary dependencies).
QuadtoSOC computes a cholesky factorization, which fails when the Q matrix is positive semidefinite but not positive definite:
MathOptInterface.jl/src/Bridges/Constraint/bridges/quad_to_soc.jl
Lines 71 to 85 in 8c8636f
Per @dpo we could use LDLFactorizations with a pivot tolerance of zero (or HSL/MUMPS, if we want external binary dependencies).