Manifold Optimization
Amateur Manifold Optimization
SCDM.ILAOptimizer
— TypeILAOptimizer(scheme)
An amateur manifold optimizer with gradient descent, accelerated gradient descent, and conjugate gradient. The project aims to integrate with manopt.jl
and deprecate the custom optimizer except for debugging.
Example:
julia> optimizer = ILAOptimizer(scheme);
julia> U_optimal = optimizer(U, TruncatedConvolution, FletcherReeves);
julia> M_optimal = gauge_transform(neighbor_basis_integral(scheme), U_optimal);
julia> sum(i->spread(M_optimal, scheme, i, TruncatedConvolution), 1:4)
24.206845069491276
Optimization with W90BranchCut
is not included because it's too much work for Documenter.jl
.
SCDM.FletcherReeves
— TypeThe (tampered) Fletcher Reeves conjugate gradient algorithm.
For an explanation of this conjugate gradient algorithm, see: http://www.mymathlib.com/optimization/nonlinear/unconstrained/fletcher_reeves.html
The algorithm is adapted slightly since our objective function is not convex. We added simple line searches when the quadratic fit turns out concave.
SCDM.AcceleratedGradientDescent
— TypeThe accelerated gradient descent algorithm. The acceleration starts when the gradient becomes small enough.