Skip to content

Commit 503516b

Browse files
committed
Fix JOSS paper review comments (#346)
* Update metadata and summary in paper.md * Update paper.bib * Update metadata and summary in paper.md * Update paper/paper.md * Update paper/paper.md * Update paper metadata and summary content
1 parent a570776 commit 503516b

2 files changed

Lines changed: 46 additions & 50 deletions

File tree

paper/paper.bib

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,24 @@ @article{aravkin2022proximal
3636
}
3737
3838
@software{Percival_jl,
39-
author = {Antunes dos Santos, Egmara and Migot, Tangi and Orban, Dominique and Soares Siqueira, Abel and contributors},
40-
license = {MPL-2.0},
41-
month = jul,
42-
title = {{{Percival.jl: an augmented Lagrangian method}}},
43-
url = {https://github.com/JuliaSmoothOptimizers/Percival.jl},
44-
version = {0.7.0},
45-
year = {2023},
46-
doi = {10.5281/zenodo.3969045}
39+
doi = {10.5281/ZENODO.3969045},
40+
url = {https://github.com/JuliaSmoothOptimizers/Percival.jl},
41+
author = {Antunes dos Santos, Egmara and Migot, Tangi and Orban, Dominique and Soares Siqueira, Abel and contributors, },
42+
title = {Percival.jl: an augmented {L}agrangian method},
43+
version = {0.7.6},
44+
year = {2026},
45+
license = {MPL-2.0}
4746
}
4847
4948
@software{FletcherPenaltySolver_jl,
50-
author = {Migot, Tangi and contributors},
51-
license = {MPL-2.0},
52-
month = jul,
53-
title = {{{FletcherPenaltySolver.jl: Fletcher's penalty method for nonlinear optimization models}}},
54-
url = {https://github.com/JuliaSmoothOptimizers/FletcherPenaltySolver.jl},
55-
version = {0.2.4},
56-
year = {2023},
57-
doi = {10.5281/zenodo.7153564}
49+
license = {MPL-2.0},
50+
url = {https://github.com/JuliaSmoothOptimizers/FletcherPenaltySolver.jl},
51+
version = {0.3.0},
52+
doi = {10.5281/ZENODO.7153563},
53+
author = {Migot, Tangi and Orban, Dominique and Soares Siqueira, Abel and contributors, },
54+
keywords = {Nonlinear Optimization, Julia, Nonlinear Programming},
55+
title = {{FletcherPenaltySolver.jl}: {F}letcher's penalty method for nonlinear optimization models},
56+
year = {2025},
5857
}
5958
6059
@software{OptimizationProblems_jl,
@@ -68,25 +67,15 @@ @software{OptimizationProblems_jl
6867
doi = {10.5281/zenodo.3672094}
6968
}
7069
71-
@software{The_JuliaSmoothOptimizers_Ecosystem,
72-
author = {Migot, Tangi and Orban, Dominique and Soares Siqueira, Abel and contributors},
73-
license = {MPL-2.0},
74-
month = feb,
75-
title = {{The JuliaSmoothOptimizers Ecosystem for Numerical Linear Algebra and Optimization in Julia}},
76-
doi = {10.5281/zenodo.2655082},
77-
url = {https://jso.dev},
78-
year = {2024}
79-
}
80-
8170
@software{NLPModels_jl,
82-
author = {Orban, Dominique and Soares Siqueira, Abel and contributors},
83-
license = {MPL-2.0},
84-
month = mar,
85-
title = {{{NLPModels.jl: Data Structures for Optimization Models}}},
86-
url = {https://github.com/JuliaSmoothOptimizers/NLPModels.jl},
87-
version = {0.20.0},
88-
year = {2023},
89-
doi = {10.5281/zenodo.7764782}
71+
license = {MPL-2.0},
72+
url = {https://github.com/JuliaSmoothOptimizers/NLPModels.jl},
73+
version = {0.21.7},
74+
doi = {10.5281/ZENODO.2558626},
75+
author = {Orban, Dominique and Soares Siqueira, Abel and contributors, },
76+
keywords = {Nonlinear Optimization, Julia, Nonlinear Programming},
77+
title = {{NLPModels.jl}: Data Structures for Optimization Models},
78+
year = {2026},
9079
}
9180
9281
@article{jump,
@@ -220,14 +209,14 @@ @software{AdaptiveRegularization_jl
220209
}
221210
222211
@software{SolverBenchmark_jl,
223-
author = {Orban, Dominique and Soares Siqueira, Abel and contributors},
224-
license = {MPL-2.0},
225-
month = nov,
226-
title = {{{SolverBenchmark.jl: Benchmark Tools for Solvers}}},
227-
url = {https://github.com/JuliaSmoothOptimizers/SolverBenchmark.jl},
228-
version = {0.6.0},
229-
year = {2023},
230-
doi = {10.5281/zenodo.4154524}
212+
author = {Orban, Dominique and Soares Siqueira, Abel and contributors},
213+
license = {MPL-2.0},
214+
url = {https://github.com/JuliaSmoothOptimizers/SolverBenchmark.jl},
215+
version = {0.6.4},
216+
doi = {10.5281/ZENODO.2581661},
217+
author = {Orban, Dominique and Soares Siqueira, Abel and contributors, },
218+
title = {{SolverBenchmark.jl}: Benchmark Tools for Solvers},
219+
year = {2026},
231220
}
232221
233222
@article{dolan2002benchmarking,

paper/paper.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ authors:
1111
orcid: 0000-0001-7729-2513
1212
affiliation: 1
1313
- name: Dominique Monnet
14-
orcid:
14+
orcid: 0000-0002-5482-6831
1515
affiliation: 3
1616
- name: Dominique Orban
1717
orcid: 0000-0002-8017-7687
@@ -40,20 +40,20 @@ bibliography: paper.bib
4040
where $f:\mathbb{R}^n \rightarrow \mathbb{R}$ is a continuously differentiable function, with $\ell \in \left(\mathbb{R} \cup \{-\infty\} \right)^n$, and $u \in \left(\mathbb{R} \cup \{+\infty\} \right)^n$.
4141
The algorithms implemented here are iterative methods that aim to compute a stationary point of \eqref{eq:nlp} using first and, if possible, second-order derivatives.
4242

43-
Our initial motivation for considering \eqref{eq:nlp} and developing `JSOSolvers.jl` is to solve large-scale unconstrained and bound-constrained problems such as parameter estimation in inverse problems, design optimization in engineering, and regularized machine learning models, and use these solvers to solve subproblems of penalty algorithms, such as `Percival.jl`[@Percival_jl] or `FletcherPenaltySolver.jl` [@FletcherPenaltySolver_jl], for constrained nonlinear continuous optimization problems.
43+
Our initial motivation for considering \eqref{eq:nlp} and developing `JSOSolvers.jl` is to solve large-scale unconstrained and bound-constrained problems such as parameter estimation in inverse problems, design optimization in engineering, and regularized machine learning models, and use these solvers to solve subproblems of penalty algorithms, such as `Percival.jl` [@Percival_jl] or `FletcherPenaltySolver.jl` [@FletcherPenaltySolver_jl], for constrained nonlinear continuous optimization problems.
4444
In many of these problems, explicitly storing Hessian matrices is either computationally prohibitive or impractical.
4545
The solvers in `JSOSolvers.jl` adopt a matrix-free approach, where standard optimization methods are implemented without forming derivative matrices explicitly.
4646
This strategy enables the solution of large-scale problems even when function and gradient evaluations are expensive.
4747

4848
The library includes TRON, a trust-region Newton method for bound-constrained problems following the classical formulation of @tron, TRUNK, a factorization-free trust-region Newton method based on the truncated conjugate gradient method, as described by @conn2000trust, an implementation of L-BFGS, a limited-memory quasi-Newton method using a line search globalization strategy, and FOMO, a first-order method based on quadratic regularization designed for unconstrained optimization.
49-
The latter is an extension of a quadratic regularization method described by @aravkin2022proximal, and called R2 in `JSOSolvers.jl`.
49+
FOMO is an extension of a quadratic regularization method described by @aravkin2022proximal, and called R2 in `JSOSolvers.jl`.
5050
Unlike textbook implementations, our solvers introduce several design differences.
5151
TRON operates in a factorization-free mode, while the original Fortran TRON requires an explicitly formed Hessian.
5252
TRUNK departs from the Conn–Gould–Toint formulation by supporting a non-monotone mode and multiple subproblem solvers (CG, CR, MINRES, etc.).
5353
Our L-BFGS implementation uses a simplified line-search strategy that avoids the standard Wolfe conditions while maintaining robust convergence in practice.
5454

5555
A nonlinear least-squares problem is a special case of \eqref{eq:nlp}, where $f(x)=\frac{1}{2}\|F(x)\|^2_2$ and the residual $F:\mathbb{R}^n \rightarrow \mathbb{R}^m$ is continuously differentiable, which appears in many applications, including inverse problems in imaging, geophysics, and machine learning. While it is possible to solve the problem using only the objective, knowing $F$ independently allows the development of more efficient methods.
56-
TRON and TRUNK have specialized implementations leveraging the structure of residual models to improve performance and scalability.
56+
Specialized variants of TRON and TRUNK, called TRON-NLS and TRUNK-NLS, leverage the structure of residual models to improve performance and scalability.
5757

5858
A key strength of `JSOSolvers.jl` lies in its efficiency and flexibility.
5959
The solvers support fully in-place execution, allowing repeated solves without additional memory allocation, which is particularly beneficial in high-performance and GPU computing environments where memory management is critical.
@@ -62,13 +62,15 @@ Moreover, TRUNK, TRUNK-NLS, and FOMO support GPU arrays, broadening the range of
6262
The package documentation and \url{https://jso.dev/tutorials} provide examples illustrating the use of different floating-point systems.
6363
Furthermore, the solvers expose in-place function variants, allowing multiple optimization problems with identical dimensions and data types to be solved efficiently without reallocations.
6464

65-
`JSOSolvers.jl` is built upon the JuliaSmoothOptimizers (JSO) tools [@The_JuliaSmoothOptimizers_Ecosystem].
65+
`JSOSolvers.jl` is built upon the JuliaSmoothOptimizers (JSO) tools [^jso].
6666
JSO is an academic organization containing a collection of Julia packages for nonlinear optimization software development, testing, and benchmarking.
6767
It provides tools for building models, accessing problem repositories, and solving subproblems.
6868
Solvers in `JSOSolvers.jl` take as input an `AbstractNLPModel`, JSO's general model API defined in `NLPModels.jl` [@NLPModels_jl], a flexible data type to evaluate objective and constraints, their derivatives, and to provide any information that a solver might request from a model.
6969
The user can hand-code derivatives, use automatic differentiation, or use JSO-interfaces to classical mathematical optimization modeling languages such as AMPL [@fourer2003ampl], CUTEst [@cutest], or JuMP [@jump].
7070
The solvers rely heavily on iterative linear algebra methods from `Krylov.jl` [@Krylov_jl].
7171

72+
[^jso]: JuliaSmoothOptimizers https://jso.dev/
73+
7274
# Statement of need
7375

7476
Julia's JIT compiler is attractive for the design of efficient scientific computing software, and, in particular, mathematical optimization [@lubin2015computing], and has become a natural choice for developing new solvers.
@@ -84,19 +86,23 @@ Several alternatives to `JSOSolvers.jl` are available within and outside the Jul
8486
`Optim.jl` [@mogensen2018optim] is a general-purpose optimization library in pure Julia, suitable for small to medium-scale problems, but it lacks in-place execution and GPU support.
8587
`NLopt.jl` [@NLopt] provides access to a broad collection of optimization algorithms via a C library but does not support matrix-free methods or extended precision.
8688
`AdaptiveRegularization.jl` [@AdaptiveRegularization_jl] offers a matrix-free, multi-precision solver for unconstrained problems and is closely aligned with the design philosophy of `JSOSolvers.jl`.
87-
Ipopt [@wachter2006implementation], via `Ipopt.jl`, is widely used and efficient but requires explicit derivatives and is limited to CPU execution.
89+
Ipopt [@wachter2006implementation], via `Ipopt.jl`, is a widely used and efficient solver, but requires explicit derivatives and is limited to CPU execution.
8890
GALAHAD [@galahad], a Fortran-based suite for large-scale problems, is accessible through experimental Julia wrappers, yet lacks native composability.
8991
Commercial solvers such as Artelys Knitro [@byrd2006k] provide robust algorithms but remain constrained by licensing and limited Julia interoperability.
9092
`Optimization.jl` is a wrapper to existing optimization packages.
9193

9294
## Benchmarking
9395

9496
`JSOSolvers.jl` can solve large-scale problems and can be benchmarked easily against other JSO-compliant solvers using `SolverBenchmark.jl` [@SolverBenchmark_jl].
95-
We include below performance profiles [@dolan2002benchmarking] with respect to elapsed time of `JSOSolvers.jl` solvers against Ipopt on all the 291 unconstrained problems from the CUTEst collection [@cutest], whose dimensions range from 2 up to 192,627 variables.
96-
LBFGS uses only first-order information, while TRON and TRUNK use Hessian-vector products and IPOPT uses the Hessian as a matrix.
97+
We include below performance profiles [@dolan2002benchmarking] with respect to elapsed time of `JSOSolvers.jl` solvers against Ipopt on all the 291 unconstrained problems from the CUTEst collection [@cutest], whose dimensions range from 2 up to 192,627 variables.[^hardware]
98+
LBFGS uses only first-order information, while TRON and TRUNK use Hessian-vector products and Ipopt uses the Hessian as a matrix.
9799
Without explaining performance profiles in full detail, the plot shows that Ipopt is fastest on 42 problems (15%), TRON on 9 (3%), TRUNK on 64 (21%), and L-BFGS on 176 (60%).
98100
Nearly all problems were solved within the 20-minute limit: TRON solved 272 (93%), Ipopt 270, TRUNK 269, and L-BFGS 267.
99101

102+
[^hardware]: Benchmarks were run sequentially on a CPU-only machine.
103+
The hardware configuration was an Intel Core i7-class processor with approximately
104+
16 GB of RAM running Linux. Timings are intended for relative comparison only.
105+
100106
Overall, these results are encouraging.
101107
Although Ipopt is a mature and highly optimized solver, TRUNK and L-BFGS achieve comparable problem coverage while being significantly faster on many instances.
102108
This suggests that the algorithms implemented here are competitive for large-scale problems.
@@ -118,3 +124,4 @@ Dominique Orban is partially supported by an NSERC Discovery Grant.
118124

119125
# References
120126

127+

0 commit comments

Comments
 (0)