Skip to content

Commit

Permalink
build based on 25096b9
Browse files Browse the repository at this point in the history
  • Loading branch information
Documenter.jl committed Nov 12, 2024
1 parent ec03f90 commit 59a0bea
Show file tree
Hide file tree
Showing 23 changed files with 1,549 additions and 1,549 deletions.
2 changes: 1 addition & 1 deletion dev/advanced/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,4 @@
Base.:-(x1::IT, x2::IT)
LinearAlgebra.dot(x1::IT, x2::IT)
LinearAlgebra.norm(::IT)</code></pre><p>For methods using an <a href="../reference/3_backend/#FrankWolfe.ActiveSet"><code>FrankWolfe.ActiveSet</code></a>, 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 <code>LinearAlgebra.dot</code> with a gradient object. See for example <a href="../reference/3_backend/#FrankWolfe.RankOneMatrix"><code>FrankWolfe.RankOneMatrix</code></a> or <a href="../reference/3_backend/#FrankWolfe.ScaledHotVector"><code>FrankWolfe.ScaledHotVector</code></a>.</p><p>The iterate type <code>IT</code> must be a broadcastable mutable object or implement <a href="../reference/3_backend/#FrankWolfe.compute_active_set_iterate!-Tuple{Any}"><code>FrankWolfe.compute_active_set_iterate!</code></a>:</p><pre><code class="language-julia hljs">FrankWolfe.compute_active_set_iterate!(active_set::FrankWolfe.ActiveSet{AT, R, IT}) where {AT, R}</code></pre><p>which recomputes the iterate from the current convex decomposition and the following methods <a href="../reference/3_backend/#FrankWolfe.active_set_update_scale!-Union{Tuple{IT}, Tuple{IT, Any, Any}} where IT"><code>FrankWolfe.active_set_update_scale!</code></a> and <a href="../reference/3_backend/#FrankWolfe.active_set_update_iterate_pairwise!-Union{Tuple{A}, Tuple{IT}, Tuple{IT, Real, A, A}} where {IT, A}"><code>FrankWolfe.active_set_update_iterate_pairwise!</code></a>:</p><pre><code class="language-julia hljs">FrankWolfe.active_set_update_scale!(x::IT, lambda, atom)
FrankWolfe.active_set_update_iterate_pairwise!(x::IT, lambda, fw_atom, away_atom)</code></pre><h2 id="Symmetry-reduction"><a class="docs-heading-anchor" href="#Symmetry-reduction">Symmetry reduction</a><a id="Symmetry-reduction-1"></a><a class="docs-heading-anchor-permalink" href="#Symmetry-reduction" title="Permalink"></a></h2><p>Example: <code>examples/reynolds.jl</code></p><p>Suppose that there is a group <span>$G$</span> acting on the underlying vector space and such that for all <span>$x\in\mathcal{C}$</span> and <span>$g\in G$</span></p><p class="math-container">\[f(g\cdot x)=f(x)\quad\text{and}\quad g\cdot x\in\mathcal{C}.\]</p><p>Then, the computations can be performed in the subspace invariant under <span>$G$</span>. This subspace is the image of the Reynolds operator defined by</p><p class="math-container">\[\mathcal{R}(x)=\frac{1}{|G|}\sum_{g\in G}g\cdot x.\]</p><p>In practice, the type <code>SubspaceLMO</code> allows the user to provide the Reynolds operator <span>$\mathcal{R}$</span> as well as its adjoint <span>$\mathcal{R}^\ast$</span>. The gradient is symmetrised with <span>$\mathcal{R}^\ast$</span>, then passed to the non-symmetric LMO, and the resulting output is symmetrised with <span>$\mathcal{R}$</span>. In many cases, the gradient is already symmetric so that <code>reynolds_adjoint(gradient, lmo) = gradient</code> is a fast and valid choice.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../basics/">« How does it work?</a><a class="docs-footer-nextpage" href="../examples/docs_00_fw_visualized/">Visualization of Frank-Wolfe running on a 2-dimensional polytope »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Thursday 7 November 2024 17:36">Thursday 7 November 2024</span>. Using Julia version 1.6.7.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
FrankWolfe.active_set_update_iterate_pairwise!(x::IT, lambda, fw_atom, away_atom)</code></pre><h2 id="Symmetry-reduction"><a class="docs-heading-anchor" href="#Symmetry-reduction">Symmetry reduction</a><a id="Symmetry-reduction-1"></a><a class="docs-heading-anchor-permalink" href="#Symmetry-reduction" title="Permalink"></a></h2><p>Example: <code>examples/reynolds.jl</code></p><p>Suppose that there is a group <span>$G$</span> acting on the underlying vector space and such that for all <span>$x\in\mathcal{C}$</span> and <span>$g\in G$</span></p><p class="math-container">\[f(g\cdot x)=f(x)\quad\text{and}\quad g\cdot x\in\mathcal{C}.\]</p><p>Then, the computations can be performed in the subspace invariant under <span>$G$</span>. This subspace is the image of the Reynolds operator defined by</p><p class="math-container">\[\mathcal{R}(x)=\frac{1}{|G|}\sum_{g\in G}g\cdot x.\]</p><p>In practice, the type <code>SubspaceLMO</code> allows the user to provide the Reynolds operator <span>$\mathcal{R}$</span> as well as its adjoint <span>$\mathcal{R}^\ast$</span>. The gradient is symmetrised with <span>$\mathcal{R}^\ast$</span>, then passed to the non-symmetric LMO, and the resulting output is symmetrised with <span>$\mathcal{R}$</span>. In many cases, the gradient is already symmetric so that <code>reynolds_adjoint(gradient, lmo) = gradient</code> is a fast and valid choice.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../basics/">« How does it work?</a><a class="docs-footer-nextpage" href="../examples/docs_00_fw_visualized/">Visualization of Frank-Wolfe running on a 2-dimensional polytope »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 12 November 2024 17:42">Tuesday 12 November 2024</span>. Using Julia version 1.6.7.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
2 changes: 1 addition & 1 deletion dev/basics/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dev/contributing/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
&quot;&quot;&quot;
function f(x)
# ...
end</code></pre><h3 id="Provide-a-new-example-or-test"><a class="docs-heading-anchor" href="#Provide-a-new-example-or-test">Provide a new example or test</a><a id="Provide-a-new-example-or-test-1"></a><a class="docs-heading-anchor-permalink" href="#Provide-a-new-example-or-test" title="Permalink"></a></h3><p>If you fix a bug, one would typically expect to add a test that validates that the bug is gone. A test would be added in a file in the <code>test/</code> folder, for which the entry point is <code>runtests.jl</code>.</p><p>The <code>examples/</code> folder features several examples covering different problem settings and algorithms. The examples are expected to run with the same environment and dependencies as the tests using <a href="https://github.com/JuliaTesting/TestEnv.jl">TestEnv</a>. If the example is lightweight enough, it can be added to the <code>docs/src/examples/</code> folder which generates pages for the documentation based on Literate.jl.</p><h3 id="Provide-a-new-feature"><a class="docs-heading-anchor" href="#Provide-a-new-feature">Provide a new feature</a><a id="Provide-a-new-feature-1"></a><a class="docs-heading-anchor-permalink" href="#Provide-a-new-feature" title="Permalink"></a></h3><p>Contributions bringing new features are also welcome. If the feature is likely to impact performance, some benchmarks should be run with <code>BenchmarkTools</code> on several of the examples to assert the effect at different problem sizes. If the feature should only be active in some cases, a keyword should be added to the main algorithms to support it.</p><p>Some typical features to implement are:</p><ol><li>A new Linear Minimization Oracle (LMO)</li><li>A new step size</li><li>A new algorithm (less frequent) following the same API.</li></ol><h3 id="Code-style"><a class="docs-heading-anchor" href="#Code-style">Code style</a><a id="Code-style-1"></a><a class="docs-heading-anchor-permalink" href="#Code-style" title="Permalink"></a></h3><p>We try to follow the <a href="https://docs.julialang.org/en/v1/manual/documentation/">Julia documentation guidelines</a>. We run <a href="https://github.com/domluna/JuliaFormatter.jl"><code>JuliaFormatter.jl</code></a> on the repo in the way set in the <code>.JuliaFormatter.toml</code> file, which enforces a number of conventions.</p><p>This contribution guide was inspired by <a href="https://github.com/SciML/ColPrac">ColPrac</a> and the one in <a href="https://github.com/JuliaManifolds/Manopt.jl">Manopt.jl</a>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference/4_linesearch/">« Line search and step size settings</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Thursday 7 November 2024 17:36">Thursday 7 November 2024</span>. Using Julia version 1.6.7.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
end</code></pre><h3 id="Provide-a-new-example-or-test"><a class="docs-heading-anchor" href="#Provide-a-new-example-or-test">Provide a new example or test</a><a id="Provide-a-new-example-or-test-1"></a><a class="docs-heading-anchor-permalink" href="#Provide-a-new-example-or-test" title="Permalink"></a></h3><p>If you fix a bug, one would typically expect to add a test that validates that the bug is gone. A test would be added in a file in the <code>test/</code> folder, for which the entry point is <code>runtests.jl</code>.</p><p>The <code>examples/</code> folder features several examples covering different problem settings and algorithms. The examples are expected to run with the same environment and dependencies as the tests using <a href="https://github.com/JuliaTesting/TestEnv.jl">TestEnv</a>. If the example is lightweight enough, it can be added to the <code>docs/src/examples/</code> folder which generates pages for the documentation based on Literate.jl.</p><h3 id="Provide-a-new-feature"><a class="docs-heading-anchor" href="#Provide-a-new-feature">Provide a new feature</a><a id="Provide-a-new-feature-1"></a><a class="docs-heading-anchor-permalink" href="#Provide-a-new-feature" title="Permalink"></a></h3><p>Contributions bringing new features are also welcome. If the feature is likely to impact performance, some benchmarks should be run with <code>BenchmarkTools</code> on several of the examples to assert the effect at different problem sizes. If the feature should only be active in some cases, a keyword should be added to the main algorithms to support it.</p><p>Some typical features to implement are:</p><ol><li>A new Linear Minimization Oracle (LMO)</li><li>A new step size</li><li>A new algorithm (less frequent) following the same API.</li></ol><h3 id="Code-style"><a class="docs-heading-anchor" href="#Code-style">Code style</a><a id="Code-style-1"></a><a class="docs-heading-anchor-permalink" href="#Code-style" title="Permalink"></a></h3><p>We try to follow the <a href="https://docs.julialang.org/en/v1/manual/documentation/">Julia documentation guidelines</a>. We run <a href="https://github.com/domluna/JuliaFormatter.jl"><code>JuliaFormatter.jl</code></a> on the repo in the way set in the <code>.JuliaFormatter.toml</code> file, which enforces a number of conventions.</p><p>This contribution guide was inspired by <a href="https://github.com/SciML/ColPrac">ColPrac</a> and the one in <a href="https://github.com/JuliaManifolds/Manopt.jl">Manopt.jl</a>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference/4_linesearch/">« Line search and step size settings</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.25 on <span class="colophon-date" title="Tuesday 12 November 2024 17:42">Tuesday 12 November 2024</span>. Using Julia version 1.6.7.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Loading

0 comments on commit 59a0bea

Please sign in to comment.