Skip to content

generalization of iprox for L0 and L1 norm if D is not positive#131

Open
MohamedLaghdafHABIBOULLAH wants to merge 2 commits intoJuliaSmoothOptimizers:masterfrom
MohamedLaghdafHABIBOULLAH:iprox-l0-l1-generalized
Open

generalization of iprox for L0 and L1 norm if D is not positive#131
MohamedLaghdafHABIBOULLAH wants to merge 2 commits intoJuliaSmoothOptimizers:masterfrom
MohamedLaghdafHABIBOULLAH:iprox-l0-l1-generalized

Conversation

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator

No description provided.

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator Author

@dpo Dans cette PR, je laisse la possibilité à D d'être négatif pour le calcul de iprox de l0 et l1, qu'en penses tu ?

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator Author

We can see that some tests pass (as they do locally on my PC); however, others, such as those on Julia nightly, are failing.
Any ideas, @dpo, on how we might avoid these failures?

Copy link
Member

@dpo dpo left a comment

Choose a reason for hiding this comment

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

Where and why do you need this generalization? How would $$d_i \leq 0$$ occur in practice? I presume it only concerns R2DH?

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator Author

Yes only for R2DH.

@dpo
Copy link
Member

dpo commented Feb 26, 2025

See my questions above.

Also, many tests fail.

@dpo
Copy link
Member

dpo commented Mar 8, 2025

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator Author

@dpo It might happen, especially with PSB and Andrei updates, which are not guaranteed to be positive.

For example in the case of PSB update:

julia> R2DH(DiagonalPSBModel(f), h, opt; x0 = x0, Mmonotone = 1)
[ Info:   iter     f(x)     h(x)  /ν)        ρ       σ     ‖x‖     ‖s‖  
[ Info: ("norm of s ", 3.7705663200486095)
[ Info: ("norm of nabla f", 6.302436985231341)
[ Info: ("mks: ", -2.5481765450276903)
[ Info:      1  2.0e+01  0.0e+00 1.6e+00  2.6e+00 6.1e-06 0.0e+00 3.8e+00 ↘
[ Info: ("norm of s ", 11.100407554306303)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.2413095031339463)
[ Info:      2  8.8e+00  4.6e+00 2.6e+00 -1.9e+00 2.0e-06 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 11.099398834542306)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.2410608099582037)
[ Info:      3  8.8e+00  4.6e+00 2.6e+00 -1.9e+00 6.1e-06 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 11.096374140275897)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.2403150015298623)
[ Info:      4  8.8e+00  4.6e+00 2.6e+00 -1.9e+00 1.8e-05 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 11.087313222194489)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.238080012618819)
[ Info:      5  8.8e+00  4.6e+00 2.6e+00 -1.9e+00 5.4e-05 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 11.06024839920756)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.231396878752057)
[ Info:      6  8.8e+00  4.6e+00 2.6e+00 -1.8e+00 1.6e-04 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 10.980100639234266)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.2115414561597335)
[ Info:      7  8.8e+00  4.6e+00 2.6e+00 -1.8e+00 4.9e-04 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 10.74869789925592)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -2.153655742439346)
[ Info:      8  8.8e+00  4.6e+00 2.6e+00 -1.7e+00 1.5e-03 3.8e+00 1.1e+01 ↗
[ Info: ("norm of s ", 10.126767542519968)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -1.9935554978604637)
[ Info:      9  8.8e+00  4.6e+00 2.6e+00 -1.3e+00 4.4e-03 3.8e+00 1.0e+01 ↗
[ Info: ("norm of s ", 8.727820610764983)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -1.6047462352009978)
[ Info:     10  8.8e+00  4.6e+00 2.5e+00 -6.8e-01 1.3e-02 3.8e+00 8.7e+00 ↗
[ Info: ("norm of s ", 6.572155195026285)
[ Info: ("norm of nabla f", 4.186821296105305)
[ Info: ("mks: ", -0.8568680860428097)
[ Info:     11  8.8e+00  4.6e+00 2.4e+00  2.6e-01 4.0e-02 3.8e+00 6.6e+00 =
[ Info: ("norm of s ", 3.9891122425220558)
[ Info: ("norm of nabla f", 3.796567352321169)
[ Info: ("mks: ", 1.1511857240755825)
[ Info:     12  7.2e+00  4.7e+00 1.9e+00  1.1e+00 4.0e-02 9.9e+00 4.0e+00 ↘
[ Info: ("norm of s ", 1.4205957290778362)
[ Info: ("norm of nabla f", 2.396822923688443)
[ Info: ("mks: ", 4.5811351144166945)
[ Info:     13  2.9e+00  5.0e+00 6.7e-01  1.7e+00 1.3e-02 8.3e+00 1.4e+00 ↘
[ Info: ("norm of s ", Inf)
[ Info: ("norm of nabla f", 1.9625297373911559)
[ Info: ("mks: ", NaN)

@MohamedLaghdafHABIBOULLAH
Copy link
Collaborator Author

I still though don’t really understand why the other tests are failing — all tests pass on my machine.

@codecov
Copy link

codecov bot commented Dec 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.60%. Comparing base (753a97f) to head (cc03c6f).
⚠️ Report is 15 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #131      +/-   ##
==========================================
+ Coverage   73.71%   77.60%   +3.88%     
==========================================
  Files          22       24       +2     
  Lines         898      978      +80     
==========================================
+ Hits          662      759      +97     
+ Misses        236      219      -17     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants