diff --git a/dev/advanced/index.html b/dev/advanced/index.html index 922909bbf..5f2ef1964 100644 --- a/dev/advanced/index.html +++ b/dev/advanced/index.html @@ -76,4 +76,4 @@ Base.:-(x1::IT, x2::IT) LinearAlgebra.dot(x1::IT, x2::IT) LinearAlgebra.norm(::IT)
For methods using an FrankWolfe.ActiveSet
, the atoms or individual extreme points of the feasible region are not necessarily of the same type as the iterate. They are assumed to be immutable, must implement LinearAlgebra.dot
with a gradient object. See for example FrankWolfe.RankOneMatrix
or FrankWolfe.ScaledHotVector
.
The iterate type IT
must be a broadcastable mutable object or implement FrankWolfe.compute_active_set_iterate!
:
FrankWolfe.compute_active_set_iterate!(active_set::FrankWolfe.ActiveSet{AT, R, IT}) where {AT, R}
which recomputes the iterate from the current convex decomposition and the following methods FrankWolfe.active_set_update_scale!
and FrankWolfe.active_set_update_iterate_pairwise!
:
FrankWolfe.active_set_update_scale!(x::IT, lambda, atom)
-FrankWolfe.active_set_update_iterate_pairwise!(x::IT, lambda, fw_atom, away_atom)
Example: examples/reynolds.jl
Suppose that there is a group $G$ acting on the underlying vector space and such that for all $x\in\mathcal{C}$ and $g\in G$
\[f(g\cdot x)=f(x)\quad\text{and}\quad g\cdot x\in\mathcal{C}.\]
Then, the computations can be performed in the subspace invariant under $G$. This subspace is the image of the Reynolds operator defined by
\[\mathcal{R}(x)=\frac{1}{|G|}\sum_{g\in G}g\cdot x.\]
In practice, the type SymmetricLMO
allows the user to provide the Reynolds operator $\mathcal{R}$ as well as its adjoint $\mathcal{R}^\ast$. The gradient is symmetrised with $\mathcal{R}^\ast$, then passed to the non-symmetric LMO, and the resulting output is symmetrised with $\mathcal{R}$. In many cases, the gradient is already symmetric so that reynolds_adjoint(gradient, lmo) = gradient
is a fast and valid choice.
Settings
This document was generated with Documenter.jl version 0.27.25 on Thursday 27 June 2024. Using Julia version 1.6.7.