Are there any high quality trust region optimization implementations that
- allow nonspherical ellipsoid trust regions, and
- are written in Python, or are easy to call from python?
By nonspherical ellipsoid trust regions, I mean that each Newton step solves (or approximately solves) a problem of the following form: \begin{align}\min_x \quad& \frac{1}{2}x^T H x + g^T p \\ \text{such that} \quad & x^T C x \le \Delta^2, \end{align}
for some symmetric positive definite matrix $C$. The matrix $C$ acts like a Hessian preconditioner and may vary from Newton iteration to Newton iteration - for example, see the classic paper by Steihaug.
I've looked around a little and haven't found much yet.
- scipy.optimize only allows spherical trust regions. That is, it can only solve the case $C=I$
- Tao in PETSc allows you to choose from a fixed set of premade preconditioners for the CG-Steihaug step, but not use your own custom preconditioner (as far as I can tell).