GalacticOptim has very convenient features like automatically constructing gradients, etc. but I am worried about its maturity given the thin documentation. Am I better off just using the
NLopt.jl API directly?
It’s under a lot of active development, including it’s documentation. You can feel free to file issues for anything you run into. The impetus for its development was really that I used NLopt.jl early on and found that I needed to switch to other optimizers quite often (Optim.jl and BlackBoxOptim.jl specifically), hence a system for making it easy to switch these pieces around. Additionally, I found that the overhead of defining all of the required derivatives with every AD package can be quite high. So it’s an interface to do just that: handle all packages together as uniformly as possible, along with AD integration to make it easy to switch between modes.
But of course you can always use the optimizers directly. It’s personal choice.