-
Notifications
You must be signed in to change notification settings - Fork 16
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
Integrating a preconditioner into Trunk's trust-region subsolver #278
Comments
Hi @mpf! The best solution is For the function |
Would it be possible to get away with only 2 products with
where |
I think it's optimal with 2 products with |
I'm considering adding functionality to allow users to pass a preconditioner into Trunk's trust-region subsolver and would appreciate some guidance before I begin making changes.
Options for Passing the Preconditioner
There seem to be at least two options here:
Modify
SolverCore.solve!
: Introduce a new keyword argumentM=I
inSolverCore.solve!
and pass it directly toKrylov.solve!
. This approach is straightforward and would allow updating the preconditioner with the latest iterate just before the call toKrylov.solve!
.Use a Custom
CgSolver
: Pass in totrunk
a customCgSolver
that includes the preconditioner. I'm not sure of the details here, particularly how the preconditioner would be updated at each iteration.The first approach seems simpler and more direct.
Modifying Step-to-the-Boundary Calculation
As highlighted by @amontoison in this Krylov.jl issue, the step-to-the-boundary computation in
to_boundary
needs updating to solve the equationwhere
‖v‖_M^2 = v'Mv
. This modification requires changes to both theto_boundary
function and the corresponding call incg.jl
:Any advice or suggestions on these approaches would be greatly appreciated.
Thanks!
The text was updated successfully, but these errors were encountered: