Frank-Wolfe Variants

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

Boscia.AwayFrankWolfeType
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.FrankWolfeVariantType

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