Skip to content

Commit

Permalink
Documentation fixes (#68)
Browse files Browse the repository at this point in the history
  • Loading branch information
lostella committed Feb 20, 2022
1 parent d246e4a commit 9fe03c1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 15 deletions.
5 changes: 4 additions & 1 deletion docs/src/guide/custom_objectives.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# ```@meta
# CurrentModule = ProximalAlgorithms
# ```
# # [Custom objective terms](@id custom_terms)
#
# ProximalAlgorithms relies on the first-order primitives defined in [ProximalCore](https://github.com/JuliaFirstOrder/ProximalCore.jl).
Expand Down Expand Up @@ -50,7 +53,7 @@ function ProximalCore.prox!(y, ::IndUnitBall, x, gamma)
return zero(eltype(x))
end

# We can now minimize the function, for which we will use `PANOC`, which is a Newton-type method:
# We can now minimize the function, for which we will use [`PANOC`](@ref), which is a Newton-type method:

using ProximalAlgorithms

Expand Down
9 changes: 6 additions & 3 deletions docs/src/guide/getting_started.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# ```@meta
# CurrentModule = ProximalAlgorithms
# ```
# # Getting started
#
# The methods implemented in ProximalAlgorithms are commonly referred to as (you've guessed it) *proximal algorithms*,
Expand Down Expand Up @@ -40,7 +43,7 @@
# 2. Call the algorithm on the problem description: this amounts to the initial point, the objective terms, and possibly additional required information (e.g. Lipschitz constants).
#
# See [here](@ref problems_algorithms) for the list of available algorithm constructors, for different types of problems.
# In general however, algorithms are instances of the [`IterativeAlgorithm`](@ref ProximalAlgorithms.IterativeAlgorithm) type.
# In general however, algorithms are instances of the [`IterativeAlgorithm`](@ref) type.
#
# ## [Example: box constrained quadratic](@id box_qp)
#
Expand All @@ -57,7 +60,7 @@ box_indicator = ProximalOperators.IndBox(0, 1)
ffb = ProximalAlgorithms.FastForwardBackward(maxit=1000, tol=1e-5, verbose=true)

# Here, we defined the cost function `quadratic_cost`, and the constraint indicator `box_indicator`.
# Then we set up the optimization algorithm of choice, `FastForwardBackward`,
# Then we set up the optimization algorithm of choice, [`FastForwardBackward`](@ref),
# with options for the maximum number of iterations, termination tolerance, verbosity.
# Finally, we run the algorithm by providing an initial point and the objective terms defining the problem:

Expand Down Expand Up @@ -109,7 +112,7 @@ scatter!([solution[1]], [solution[2]], color=:red, markershape=:star5, label="co
# ## [Example: box constrained quadratic (cont)](@id box_qp_cont)
#
# Let's solve the problem from the [previous example](@ref box_qp) by directly interacting with the underlying iterator:
# the `FastForwardBackward` algorithm internally uses a [`FastForwardBackwardIteration`](@ref ProximalAlgorithms.FastForwardBackwardIteration) object.
# the `FastForwardBackward` algorithm internally uses a [`FastForwardBackwardIteration`](@ref) object.

ffbiter = ProximalAlgorithms.FastForwardBackwardIteration(x0=ones(2), f=quadratic_cost, g=box_indicator)

Expand Down
25 changes: 14 additions & 11 deletions docs/src/guide/implemented_algorithms.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
```@meta
CurrentModule = ProximalAlgorithms
```
# [Problem types and algorithms](@id problems_algorithms)

!!! warning
Expand All @@ -21,13 +24,13 @@ This is the most popular model, by far the most thoroughly studied, and an abund

Algorithm | Assumptions | Oracle | Implementation | References
----------|-------------|--------|----------------|-----------
Proximal gradient | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`ForwardBackward`](@ref ProximalAlgorithms.ForwardBackward) | [Lions1979](@cite)
Douglas-Rachford | | ``\operatorname{prox}_{\gamma f}``, ``\operatorname{prox}_{\gamma g}`` | [`DouglasRachford`](@ref ProximalAlgorithms.DouglasRachford) | [Eckstein1992](@cite)
Fast proximal gradient | ``f`` convex, smooth, ``g`` convex | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`FastForwardBackward`](@ref ProximalAlgorithms.FastForwardBackward) | [Tseng2008](@cite), [Beck2009](@cite)
PANOC | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`PANOC`](@ref ProximalAlgorithms.PANOC) | [Stella2017](@cite)
ZeroFPR | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`ZeroFPR`](@ref ProximalAlgorithms.ZeroFPR) | [Themelis2018](@cite)
Douglas-Rachford line-search | ``f`` smooth | ``\operatorname{prox}_{\gamma f}``, ``\operatorname{prox}_{\gamma g}`` | [`DRLS`](@ref ProximalAlgorithms.DRLS) | [Themelis2020](@cite)
PANOC+ | ``f`` locally smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`PANOCplus`](@ref ProximalAlgorithms.PANOCplus) | [DeMarchi2021](@cite)
Proximal gradient | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`ForwardBackward`](@ref) | [Lions1979](@cite)
Douglas-Rachford | | ``\operatorname{prox}_{\gamma f}``, ``\operatorname{prox}_{\gamma g}`` | [`DouglasRachford`](@ref) | [Eckstein1992](@cite)
Fast proximal gradient | ``f`` convex, smooth, ``g`` convex | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`FastForwardBackward`](@ref) | [Tseng2008](@cite), [Beck2009](@cite)
PANOC | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`PANOC`](@ref) | [Stella2017](@cite)
ZeroFPR | ``f`` smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`ZeroFPR`](@ref) | [Themelis2018](@cite)
Douglas-Rachford line-search | ``f`` smooth | ``\operatorname{prox}_{\gamma f}``, ``\operatorname{prox}_{\gamma g}`` | [`DRLS`](@ref) | [Themelis2020](@cite)
PANOC+ | ``f`` locally smooth | ``\nabla f``, ``\operatorname{prox}_{\gamma g}`` | [`PANOCplus`](@ref) | [DeMarchi2021](@cite)

```@docs
ProximalAlgorithms.ForwardBackward
Expand All @@ -54,7 +57,7 @@ Therefore, ad-hoc iteration schemes have been studied.

Algorithm | Assumptions | Oracle | Implementation | References
----------|-------------|--------|----------------|-----------
Davis-Yin | ``f`` convex and smooth, ``g, h`` convex | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}`` | [`DavisYin`](@ref ProximalAlgorithms.DavisYin) | [Davis2017](@cite)
Davis-Yin | ``f`` convex and smooth, ``g, h`` convex | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}`` | [`DavisYin`](@ref) | [Davis2017](@cite)

```@docs
ProximalAlgorithms.DavisYin
Expand All @@ -68,9 +71,9 @@ For this reason, specific algorithms by the name of "primal-dual" splitting sche

Algorithm | Assumptions | Oracle | Implementation | References
----------|-------------|--------|----------------|-----------
Chambolle-Pock | ``f\equiv 0``, ``g, h`` convex, ``L`` linear operator | ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`ChambollePock`](@ref ProximalAlgorithms.ChambollePock) | [Chambolle2011](@cite)
Vu-Condat | ``f`` convex and smooth, ``g, h`` convex, ``L`` linear operator | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`VuCodat`](@ref ProximalAlgorithms.VuCondat) | [Vu2013](@cite), [Condat2013](@cite)
AFBA | ``f`` convex and smooth, ``g, h`` convex, ``L`` linear operator | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`AFBA`](@ref ProximalAlgorithms.AFBA) | [Latafat2017](@cite)
Chambolle-Pock | ``f\equiv 0``, ``g, h`` convex, ``L`` linear operator | ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`ChambollePock`](@ref) | [Chambolle2011](@cite)
Vu-Condat | ``f`` convex and smooth, ``g, h`` convex, ``L`` linear operator | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`VuCodat`](@ref) | [Vu2013](@cite), [Condat2013](@cite)
AFBA | ``f`` convex and smooth, ``g, h`` convex, ``L`` linear operator | ``\nabla f``, ``\operatorname{prox}_{\gamma g}``, ``\operatorname{prox}_{\gamma h}``, ``L``, ``L^*`` | [`AFBA`](@ref) | [Latafat2017](@cite)

```@docs
ProximalAlgorithms.ChambollePock
Expand Down

0 comments on commit 9fe03c1

Please sign in to comment.