Frank-Wolfe Variants
Here is the list with the currently supported Frank-Wolfe variants.
Boscia.AwayFrankWolfe
— TypeAway-Frank-Wolfe
In 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.BPCG
— TypeBlended Pairwise Conditional Gradient
Boscia.Blended
— TypeBlended Conditional Gradient
Boscia.DICG
— TypeDICG-Frank-Wolfe
The Decomposition-invariant Frank-Wolfe.
Boscia.FrankWolfeVariant
— TypeFrank-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.VanillaFrankWolfe
— TypeVanilla-Frank-Wolfe
Boscia.solve_frank_wolfe
— Functionsolve_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.