Skip to content

Commit 7c1856a

Browse files
include new changes
1 parent 3ac9d45 commit 7c1856a

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
paper/examples/Manifest.toml
2+
paper/jats/paper.jats
3+
paper/jats/jso-packages.pdf
4+
paper/paper.pdf
5+
paper/jso-packages.pdf

paper/paper.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,14 @@ header-includes: |
3939
where $f: \mathbb{R}^n \to \mathbb{R}$ is continuously differentiable on $\mathbb{R}^n$, and $h: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\}$ is lower semi-continuous.
4040
Both $f$ and $h$ may be nonconvex.
4141

42-
The library provides a modular and extensible framework for experimenting some nonsmooth nonconvex optimization algorithms, including:
42+
The library provides a modular and extensible framework for experimenting with nonsmooth and nonconvex optimization algorithms, including:
4343

4444
- **Trust-region methods (TR, TRDH)** [@aravkin-baraldi-orban-2022] and [@leconte-orban-2023],
4545
- **Quadratic regularization methods (R2, R2N)** [@diouane-habiboullah-orban-2024] and [@aravkin-baraldi-orban-2022],
4646
- **Levenberg-Marquardt methods (LM, LMTR)** [@aravkin-baraldi-orban-2024].
47+
- **Trust-region methods (TR, TRDH)** [@aravkin-baraldi-orban-2022;@leconte-orban-2023],
48+
- **Quadratic regularization methods (R2, R2N)** [@diouane-habiboullah-orban-2024;@aravkin-baraldi-orban-2022],
49+
- **Levenbergh-Marquardt methods (LM, LMTR)** [@aravkin-baraldi-orban-2024].
4750

4851
These methods rely solely on the gradient and Hessian(-vector) information of the smooth part $f$ and the proximal mapping of the nonsmooth part $h$ in order to compute steps.
4952
Then, the objective function $f + h$ is used only to accept or reject trial points.
@@ -53,7 +56,7 @@ Moreover, they can handle cases where Hessian approximations are unbounded [@dio
5356

5457
## Model-based framework for nonsmooth methods
5558

56-
There exists a way to solve \eqref{eq:nlp} in Julia using [ProximalAlgorithms.jl](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl), which implements in-place first-order line search–based methods for composite optimization.
59+
There exists a way to solve \eqref{eq:nlp} in Julia using [ProximalAlgorithms.jl](https://github.com/JuliaFirstOrder/ProximalAlgorithms.jl), which implements in-place first-order line search–based methods for \eqref{eq:nlp}.
5760
Most of these methods are generally splitting schemes that alternate between taking steps along the gradient of the smooth part $f$ (or quasi-Newton directions) and applying proximal steps on the nonsmooth part $h$.
5861
Currently, **ProximalAlgorithms.jl** provides only L-BFGS as a quasi-Newton option.
5962
By contrast, **RegularizedOptimization.jl** focuses on model-based approaches such as trust-region and regularization algorithms.
@@ -72,7 +75,7 @@ On the other hand, Hessian approximations of these functions, including quasi-Ne
7275

7376
Finally, nonsmooth terms $h$ can be modeled using [ProximalOperators.jl](https://github.com/JuliaSmoothOptimizers/ProximalOperators.jl), which provides a broad collection of nonsmooth functions, together with [ShiftedProximalOperators.jl](https://github.com/JuliaSmoothOptimizers/ShiftedProximalOperators.jl), which provides shifted proximal mappings for nonsmooth functions.
7477

75-
This modularity makes it easy to benchmark existing solvers available in the repository [@diouane-habiboullah-orban-2024], [@aravkin-baraldi-orban-2022], [@aravkin-baraldi-orban-2024], and [@leconte-orban-2023-2].
78+
This modularity makes it easy to benchmark existing solvers available in the repository [@diouane-habiboullah-orban-2024;@aravkin-baraldi-orban-2022;@aravkin-baraldi-orban-2024;@leconte-orban-2023-2].
7679

7780
## Support for Hessians
7881

@@ -83,7 +86,7 @@ A way to use Hessians is via automatic differentiation tools such as [ADNLPModel
8386

8487
The nonsmooth part $h$ must have a computable proximal mapping, defined as
8588
$$\text{prox}_{h}(v) = \underset{x \in \mathbb{R}^n}{\arg\min} \left( h(x) + \frac{1}{2} \|x - v\|^2 \right).$$
86-
This requirement is satisfied by a wide range of nonsmooth functions commonly used in practice, such as the $\ell_1$ norm, the $\ell_0$ "norm", indicator functions of convex sets, and group sparsity-inducing norms.
89+
This requirement is satisfied by a wide range of nonsmooth functions commonly used in practice, such as $\ell_1$ norm, $\ell_0$ "norm", indicator functions of convex sets, and group sparsity-inducing norms.
8790
The package [ProximalOperators.jl](https://www.github.com/FirstOrder/ProximalOperators.jl) provides a comprehensive collection of such functions, along with their proximal mappings.
8891
The main difference between the proximal operators implemented in
8992
[ProximalOperators.jl](https://github.com/JuliaFirstOrder/ProximalOperators.jl)
@@ -96,6 +99,9 @@ where q is given, x and s are fixed shifts, h is the nonsmooth term with respect
9699
to which we are computing the proximal operator, and χ(.; ΔB) is the indicator of
97100
a ball of radius Δ defined by a certain norm.
98101

102+
![Composition of JSO packages](jso-packages.pdf){ width=70% }
103+
104+
99105
## Testing and documentation
100106

101107
The package includes a comprehensive suite of unit tests that cover all functionalities, ensuring reliability and correctness.
@@ -134,7 +140,7 @@ All solvers in **RegularizedOptimization.jl** are implemented in an in-place fas
134140

135141
# Examples
136142

137-
We consider two examples where the smooth part $f$ is nonconvex and the nonsmooth part $h$ is either the $\ell_0$ or $\ell_1$ norm.
143+
We consider two examples where the smooth part $f$ is nonconvex and the nonsmooth part $h$ is either $\ell_0$ or $\ell_1$ norm.
138144

139145
A first example is the FitzHugh-Nagumo inverse problem with an $\ell_1$ penalty, as described in [@aravkin-baraldi-orban-2022] and [@aravkin-baraldi-orban-2024].
140146

@@ -162,7 +168,7 @@ solver_tr = TRSolver(reg_nlp)
162168
stats = RegularizedExecutionStats(reg_nlp)
163169

164170
# Solve the problem
165-
solve!(solver_tr, reg_nlp, stats, x = f.meta.x0, atol = 1e-3, rtol = 1e-4, verbose = 10, ν = 1.0e+2)
171+
solve!(solver_tr, reg_nlp, stats, x = f.meta.x0, atol = 1e-3, rtol = 1e-4, verbose = 10)
166172
```
167173

168174
````

0 commit comments

Comments
 (0)