JuliaSmoothOptimizers / ADNLPModels.jl

Other
29 stars 12 forks source link

Add sparse jacobian #83

Closed tmigot closed 1 year ago

tmigot commented 1 year ago

I will split this into several PRs as it is a large change

codecov[bot] commented 1 year ago

Codecov Report

Base: 99.44% // Head: 99.45% // Increases project coverage by +0.01% :tada:

Coverage data is based on head (9e87cd7) compared to base (6e45688). Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #83 +/- ## ========================================== + Coverage 99.44% 99.45% +0.01% ========================================== Files 7 8 +1 Lines 715 740 +25 ========================================== + Hits 711 736 +25 Misses 4 4 ``` | [Impacted Files](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers) | Coverage Δ | | |---|---|---| | [src/ADNLPModels.jl](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers#diff-c3JjL0FETkxQTW9kZWxzLmps) | `100.00% <ø> (ø)` | | | [src/ad.jl](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers#diff-c3JjL2FkLmps) | `96.29% <ø> (+0.14%)` | :arrow_up: | | [src/nlp.jl](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers#diff-c3JjL25scC5qbA==) | `100.00% <ø> (ø)` | | | [src/nls.jl](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers#diff-c3JjL25scy5qbA==) | `100.00% <ø> (ø)` | | | [src/sparse\_derivatives.jl](https://codecov.io/gh/JuliaSmoothOptimizers/ADNLPModels.jl/pull/83/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers#diff-c3JjL3NwYXJzZV9kZXJpdmF0aXZlcy5qbA==) | `100.00% <100.00%> (ø)` | | Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=JuliaSmoothOptimizers)

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

tmigot commented 1 year ago

I also added a complementary tests with problems from OptimizationProblems.jl:

using ADNLPModels, LinearAlgebra, NLPModels, NLPModelsJuMP, OptimizationProblems

for prob in intersect(names(ADNLPProblems), names(PureJuMP))
  if prob == :hs61
    continue
  end
  if occursin("tetra", string(prob)) || occursin("triangle", string(prob))
    continue # too slow
  end
  nlp = eval(Meta.parse("ADNLPProblems.$(prob)()"))
  model = MathOptNLPModel(eval(Meta.parse("PureJuMP.$(prob)()")))
  if nlp.meta.ncon > 0
    x = nlp.meta.x0
    test = Matrix(jac(nlp, x)) ≈ Matrix(jac(model, x))
    if !test
      println("$prob : $(nlp.meta.nvar), $(nlp.meta.ncon)")
      @show norm(Matrix(jac(nlp, x)) - Matrix(jac(model, x)))
    end
  end
end

and all the tests passed (after this https://github.com/JuliaSmoothOptimizers/OptimizationProblems.jl/pull/223).

github-actions[bot] commented 1 year ago
Package name latest stable
CaNNOLeS.jl
DCISolver.jl
DerivativeFreeSolvers.jl
JSOSolvers.jl
NLPModelsIpopt.jl
OptimizationProblems.jl
Percival.jl
QuadraticModels.jl
SolverBenchmark.jl
SolverTools.jl
github-actions[bot] commented 1 year ago
Package name latest stable
CaNNOLeS.jl
DCISolver.jl
DerivativeFreeSolvers.jl
JSOSolvers.jl
NLPModelsIpopt.jl
OptimizationProblems.jl
Percival.jl
QuadraticModels.jl
SolverBenchmark.jl
SolverTools.jl
dpo commented 1 year ago

We really have to update the config of that dratted probot. I didn't even have a chance to look at this PR!

tmigot commented 1 year ago

Sorry for that, if you have some feedback on this I can open a new PR to fix it.

https://github.com/JuliaSmoothOptimizers/ADNLPModels.jl/pull/91 should help with the bot.