-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linesearch + Merit functions #146
base: main
Are you sure you want to change the base?
Linesearch + Merit functions #146
Conversation
This is at a good point for discussion. I've introduced merit functions and tested new line search and trust region methods using it. Merit models definitionMerit models are focused on objective value and directional derivative. In a sense, they replace
It's important that merit functions simplify the code without adding much overhead. 4 values are stored: Both line search and trust region methods should work with merit functions. Since merit functions store useful information for the algorithm, instead of keeping the merit inside these methods, the merit model is just an argument to these methods. If the problem is unconstrained there is a UncMerit to wrap the problem and pass to the step control algorithms. Should the merit model be an NLPModel: https://github.com/JuliaSmoothOptimizers/SolverTools.jl/pull/146/files#diff-1a6f6d5cc4d70018c9ed5df46e1d4d70R4
Line search rewriteNot much was changed on the line search methods. Instead of using Here is the entry point: https://github.com/JuliaSmoothOptimizers/SolverTools.jl/pull/146/files#diff-8ebc45751f7e9da3deb4450a5907c89aR12
Trust region rewriteThe existing trust region strategy defines a struct and several methods. Instead, the new strategy is to use a single function call as in the line search method. The function assumes that the merit has information at the current x, or that is will compute that information and also that it will compute the objective at the trial point xt. All update strategies I found use Unlike line search, everything was rewritten. The update logic is still there for each method, but even the parameter names were changed. Here is the entry point: https://github.com/JuliaSmoothOptimizers/SolverTools.jl/pull/146/files#diff-d02c78ebe1ccf3e3acbf63be3dc9d191R22
JSOSolversThe immediate effect of these changes is JSOSolvers. I don't think any other method is using trust regions and line searches from SolverTools at the moment, please correct me if I'm wrong. To make sure that the above works and doesn't slow down (too much), I'm thinking that updating |
Tests were made: JuliaSmoothOptimizers/JSOSolvers.jl#43 |
Building upon #145, now changing line search to use the new merit model.
I'm gonna change trust region now and hopefully this will lead to a complete picture.