I'm new to semidefinite programming and I'm having trouble computing what I think is a fairly simple semidefinite linear program. I need to maximize $$\mathrm{Tr}[H X]$$ subject to some linear constraints on $X$, where $H$ is a complex-valued Hermitian matrix and $X$ is a complex-valued positive semi-definite matrix. I set about trying to compute it using Mathematica's built in LinearProgramming method, but this function seems to require the objective function to be of the form $$c^T x,$$ where $c$ is a vector with real entries and $x$ is a vector with all real non-negative entries.
As far as I can tell, many other linear programming solvers also work in this way. I think I've figured out how to transform my complex-valued semidefinite program into a real-valued one, but I'm stumped when it comes to mapping the constraint that the matrix $X$ be positive semi-definite onto the constraint that a vector $x$ have all non-negative entries. It feels like the naive thing to do would be to require that all the entries in $X$ be positive, but I know there are semi-definite matrices with negative entries, so I'd be missing out on some feasible solutions. If $X$ were a fixed matrix, I could work in its eigenbasis as I know positive semi-definite matrices have non-negative eigenvalues, but there are many $X$s in my feasible set that do not share an eigenbasis. It seems like its fairly common to use linear program solvers to compute semidefinite programs, but I haven't been able to find a straightforward solution to my problem.
I've noticed that Mathematica 12 introduced some new methods that might be relevant, namely SemidefiniteOptimization, but I'm stuck on Mathematica 11 for now. I'm open to switching languages if need be, but it would be more satisfying to learn the math of how you turn a canonical semidefinite program into a linear program in standard form.