Frank-Wolfe Variants
Here is the list with the currently supported Frank-Wolfe variants.
Boscia.AwayFrankWolfe — Type
Away-Frank-WolfeIn every iteration, it computes the worst performing vertex, called away vertex, in the active set with regard to the gradient. If enough local progress can be made, weight is shifted from the away vertex to all other vertices.
In case lazification is activated, the FW vertex is only computed if not enough local progress can be guaranteed.
Boscia.BlendedConditionalGradient — Type
Blended Conditional GradientBoscia.BlendedPairwiseConditionalGradient — Type
Blended Pairwise Conditional GradientBoscia.DecompositionInvariantConditionalGradient — Type
DICG-Frank-Wolfe
The Decomposition-invariant Frank-Wolfe.
Boscia.FrankWolfeVariant — Type
Frank-Wolfe variant used to compute the problems at node level. A FrankWolfeVariant must implement
solve_frank_wolfe(fw::FrankWolfeVariant, f, grad!, lmo, active_set, line_search, epsilon, max_iteration,
added_dropped_vertices, use_extra_vertex_storage, callback, lazy, timeout, verbose, workspace))It may also implement build_frank_wolfe_workspace(x) which creates a workspace structure that is passed as last argument to solve_frank_wolfe.
Boscia.StandardFrankWolfe — Type
Vanilla-Frank-WolfeThe standard variant of Frank-Wolfe. In each iteration, the vertex v minimizing ∇f * (x-v) is computed.
Lazification cannot be used in this setting.
Boscia.solve_frank_wolfe — Function
solve_frank_wolfe(fw::FrankWolfeVariant, f, grad!, lmo, active_set, line_search, epsilon, max_iteration,
added_dropped_vertices, use_extra_vertex_storage, callback, lazy, timeout, verbose, workspace)Returns the optimal solution x to the node problem, its primal and dual gap and the active set.