I want to minimize f(x), with two constraints: (1) x is a unitary matrix, and (2) f_i(x) >= 0 for i=1, …, N. (In my case, f_i(x) are quadratic functions, e.g. abs(x[1, 1])^2) - 0.5.

Because of the unitarity constraint, I want to use the manifold optimization in Optim.jl. But as I understand, one cannot impose additional constraints like f(x) >= 0 directly in Optim.jl. Is this correct?

A solution I thought is to implement an augmented Lagrangian method by myself, using Optim.jl as the solver inside it. But I was wondering if there is a simpler or better way.