-
Notifications
You must be signed in to change notification settings - Fork 56
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
Implement Line Search with Negative Curvature Detection for MINRES Based on Liu et al. (2022) #969
base: main
Are you sure you want to change the base?
Implement Line Search with Negative Curvature Detection for MINRES Based on Liu et al. (2022) #969
Conversation
@dpo if β₁ == 0
stats.niter = 0
stats.solved, stats.inconsistent = true, false
stats.timer = start_time |> ktimer
stats.status = "b is a zero-curvature directions"
history && push!(rNorms, β₁)
history && push!(ArNorms, zero(T))
history && push!(Aconds, zero(T))
warm_start && kaxpy!(n, one(FC), Δx, x)
solver.warm_start = false
linesearch && kcopy!(n, x, b) # x ← b
return solver
end But all the systems I test or create does not have \beta_1 == 0, any suggestions on a system that would force this case? |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #969 +/- ##
==========================================
- Coverage 94.68% 93.58% -1.10%
==========================================
Files 45 47 +2
Lines 8027 9234 +1207
==========================================
+ Hits 7600 8642 +1042
- Misses 427 592 +165 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
then this line is not that important |
If |
Co-authored-by: Dominique <[email protected]>
I've updated the code and status to include a flag for non-positive curvature and line search.
Additionally, in MINRES, we currently use Let me know your thoughts! To-Do List:
|
@farhadrclass Please do it. It’s not difficult. |
Co-authored-by: Dominique <[email protected]>
Co-authored-by: Dominique <[email protected]>
Co-authored-by: Dominique <[email protected]>
Co-authored-by: Dominique <[email protected]>
Co-authored-by: Dominique <[email protected]>
Co-authored-by: Dominique <[email protected]>
@dpo Here are the updates. I also noticed that we have this file: [block_minres.jl](https://github.com/JuliaSmoothOptimizers/Krylov.jl/blob/main/src/block_minres.jl), which doesn't seem fully finished. For example, it mentions that "Block-MINRES doesn't support preconditioning yet," and on line 118, there's a comment: I believe we should open a separate PR to address these issues and add linesearch. What do you think? |
See #939 for the buffers in block-MINRES. For the preconditioner, it's quite complex to implement it because you need to perform the reduced QR of the block-Krylov basid matrix in an elliptic norm and we can't rely on Householder QR for that (and thus LAPACK). |
Description:
This pull request introduces a new line search routine to the MINRES algorithm, incorporating negative curvature detection as outlined in Algorithm 1 of:
Key Changes:
Negative Curvature Detection:
b
.r1
.Linesearch Flag:
Testing & Documentation: