Skip to content

Gauss Newton & LM Robustness Fixes #258

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 13 commits into from
Oct 25, 2023

Conversation

avik-pal
Copy link
Member

@avik-pal avik-pal commented Oct 23, 2023

Merge after #257

For GaussNewton defaults to QRFactorization(ColumnNorm()), to ensure we can directly solve for
J δ x = f ( x )

For LM we solve

[ J λ D T D ] v = [ f ( x ) 0 ]

@codecov
Copy link

codecov bot commented Oct 23, 2023

Codecov Report

Merging #258 (28ea63a) into master (b300050) will decrease coverage by 2.02%.
The diff coverage is 98.43%.

@@            Coverage Diff             @@
##           master     #258      +/-   ##
==========================================
- Coverage   94.48%   92.47%   -2.02%     
==========================================
  Files          18       18              
  Lines        1614     1687      +73     
==========================================
+ Hits         1525     1560      +35     
- Misses         89      127      +38     
Files Coverage Δ
src/broyden.jl 87.17% <100.00%> (-12.83%) ⬇️
src/default.jl 78.48% <ø> (+1.26%) ⬆️
src/gaussnewton.jl 79.45% <100.00%> (+3.26%) ⬆️
src/klement.jl 85.29% <100.00%> (-7.78%) ⬇️
src/lbroyden.jl 90.40% <100.00%> (-7.98%) ⬇️
src/levenberg.jl 98.81% <100.00%> (+0.35%) ⬆️
src/raphson.jl 100.00% <100.00%> (ø)
src/jacobian.jl 85.71% <90.00%> (-1.25%) ⬇️
src/utils.jl 84.50% <88.88%> (+0.17%) ⬆️

... and 2 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from b25c8bc to 80e6459 Compare October 23, 2023 17:27
@avik-pal avik-pal changed the title Gauss Newton Fixes [WIP] Gauss Newton Fixes Oct 23, 2023
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 6e5b422 to fabd33c Compare October 23, 2023 18:48
@avik-pal avik-pal changed the title [WIP] Gauss Newton Fixes Gauss Newton & LM Robustness Fixes Oct 23, 2023
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch 2 times, most recently from 9d81e46 to b4ea93f Compare October 23, 2023 20:41
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 93e2815 to 2fdc122 Compare October 23, 2023 20:58
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch 6 times, most recently from 997fb49 to 417701c Compare October 23, 2023 22:35
src/utils.jl Outdated
NormalBunchKaufmanFactorization)
@eval needs_square_A(::$(alg)) = false
end
for kralg in (LinearSolve.Krylov.lsmr!, LinearSolve.Krylov.craigmr!)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GMRES

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GMRES requires square matrix

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's interesting 😅 . Algorithmically that's not required. It is an algorithm that provably gives the L2 solution on non-square matrices, just like QR.

@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 22b7f25 to 0c1e739 Compare October 23, 2023 23:01
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 0c1e739 to 4f632dd Compare October 23, 2023 23:04
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch 2 times, most recently from be854ec to 6e0911c Compare October 23, 2023 23:18
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch 3 times, most recently from 4e78736 to 5e7610a Compare October 24, 2023 02:57
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 02cf007 to 0f261a4 Compare October 24, 2023 16:58
@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch 4 times, most recently from 72fd691 to 4f3c047 Compare October 25, 2023 13:46
@ChrisRackauckas
Copy link
Member

This needs a rebase?

@avik-pal avik-pal force-pushed the ap/fix_gauss_newton branch from 4f3c047 to 2700fce Compare October 25, 2023 14:44
@avik-pal
Copy link
Member Author

I am really unsure what to do with the Broyden/Klement failures. They fail on 1.9 but magically pass on 1.10

@avik-pal
Copy link
Member Author

@ChrisRackauckas I am disabling the Broyden and Klement 23 test problem tests. I will open and issue and we can deal with it later. No reason to hold off this PR which solves a completely tangential issue

@ChrisRackauckas ChrisRackauckas merged commit 786e8d3 into SciML:master Oct 25, 2023
@avik-pal avik-pal deleted the ap/fix_gauss_newton branch October 25, 2023 22:21
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants