Frank-Wolfe Variants

Here is the list with the currently supported Frank-Wolfe variants.

Boscia.AwayFrankWolfe — Type
Away-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.

source
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.

source
Boscia.StandardFrankWolfe — Type
Vanilla-Frank-Wolfe

The standard variant of Frank-Wolfe. In each iteration, the vertex v minimizing ∇f * (x-v) is computed.

Lazification cannot be used in this setting.

source
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.

source