Hm, I just tried it myself and am getting mostly infeasible statuses. I suppose it depends on the random choices. With
using JuMP, StableRNGs, ProxSDP, SCS, LinearAlgebra
while true
N = rand(1:1000)
for solver in (SCS, ProxSDP)
n = 4
d = 2
rng = StableRNG(N)
A = rand(rng, d,n)
B = rand(rng, n,n)
model = Model(solver.Optimizer)
set_silent(model)
@variable(model, Σ[1:n, 1:n], PSD)
@objective(model, Min, tr(Σ*B)) # fixed paren
@constraint(model, Σ[1:d,1:d] .>= A*Σ*A')
JuMP.optimize!(model)
Σ_sol = JuMP.value.(Σ)
if termination_status(model) == JuMP.MOI.OPTIMAL
@show N
@show (solver, eigvals(Σ_sol), termination_status(model), primal_status(model))
end
end
end
I could find some feasible points, but the solutions were often zero, e.g.
N = 202
(solver, eigvals(Σ_sol), termination_status(model), primal_status(model)) = (SCS, [-7.122216469209867e-14, -3.308630615603461e-14, 2.6572571167405607e-14, 3.266987164674012e-14], MathOptInterface.OPTIMAL, MathOptInterface.FEASIBLE_POINT)
N = 202
(solver, eigvals(Σ_sol), termination_status(model), primal_status(model)) = (ProxSDP, [0.0, 0.0, 0.0, 0.0], MathOptInterface.OPTIMAL, MathOptInterface.FEASIBLE_POINT)