Skip to content

Allow specification of a maximum step distance #186

@kbarros

Description

@kbarros

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions