-
Notifications
You must be signed in to change notification settings - Fork 38
Description
I'm requesting a feature to constrain the line search by some user-specifiable maximum distance, dx. If the line search passes this point in its lower bound, it could throw a LineSearchException. This exception would contain the step size alpha corresponding to the maximum distance dx.
The motivation is to support Optim.jl with the Manifold feature. This feature implements "retraction" using simple projection. Such projection can create plateaus in the line search direction, where the objective function looks flat out to infinite step size. We need some guard rails to detect this case, so that the user of Optim can recover. See #185 for a longer discussion about how this scenario arises.
What doesn't work: LineSearches.HagerZhang currently accepts an alphamax parameter. This is more "descriptive" than "prescriptive". It asserts to the optimizer "the objection function diverges at all points beyond this one", and is basically used as an assert statement. Here, I'm requesting something different: A way to prevent the line search from going to far, even though the objective function doesn't actually diverge. Maybe this existing alphamax parameter could be repurposed to have this new meaning?