-
Couldn't load subscription status.
- Fork 19
Open
Description
Short draft on the design of merit functions
Examples of merit functions for equality-constrained problems:
l1andl2:phi(x, eta) = f(x) + eta * |c(x)|_p, wherep = 1orp = 2.l2squared (what is the name of this one again?):phi(x, eta) = f(x) + eta * |c(x)|_2^2 / 2.- Fletcher:
phi(x, eta) = f(x) - y(x)' * c(x) + eta * |c(x)|^2 / 2, wherey(x) = argmin |g(x) + A(x)' * y|^2 - aug. Lagrangian:
phi(x, y, eta) = f(x) - y' * c(x) + eta * |c(x)|^2 / 2.
Important features:
- value at given points
- directional derivative
- Memory efficient
- Save evaluations
- Option to update internal values or not (defaults to yes)
Suggested implementation:
AbstractMeritL1Merit <: AbstractMerit,AugLagMerit <: AbstractMerit- Assume
fx,cx,gxandAdare stored internally, wherefxis the objective,cxis the constraints, andgxis the gradient atxandAdis the Jacobian times the directiond. - The user may decide to keep pointers or new copies. Test will be made to determine that's possible.
obj(::AbstractMerit, x::Vector; update=true)directional(::AbstractMerit, x::Vector, d::Vector; update=true)
Discussion:
- Line search expects a
LineModel, which has a lot more liberty and deals with annlpdirectly.- For instance, a
LineModelcan computegrad!on annlp.
- For instance, a
- Trust region expects an
nlpan also computes `grad!. - Could we unify these?
- Should
AbstractMeritbe anNLPModel? (I think no) - Should we disallow
grad!onnlpfrom line search and trust region?
Metadata
Metadata
Assignees
Labels
No labels