Frank-Wolfe Algorithm

Class Description

class paminco.optim.fw.FW(fun, fprime, subproblem_solver, x0, **kwargs)[source]

Frank-Wolfe algorithm for constrained convex optimization.

Parameters
funcallable

The objective function to be minimized. Signature: fun(x) -> float, where x is an 1-D array with shape (n,).

fprimecallable

Function that returns the gradient vector. Signature: fprime(x) -> array_like, where x and the return value are both 1-D arrays with shape (n,).

subproblem_solvercallable

Minimize the linear approximation of the problem:

\[\underset{\mathbf{s} \in \mathcal{D}}{\mathrm{argmin}} \quad \mathbf{s}^T\nabla f(\mathbf{x}_i)\]

Is called with the signature subproblem_solver(f'(x)) -> array_like.

x0ndarray, shape (n,)

Initial guess. Array of real elements of size (n,), where n is the number of independent variables.

kwargskeyword arguments

Further options, see FWConfig.

See also

FWConfig

Options accepted by the solver.

paminco.optim.fw_net.NetworkFW

Use FW to find a minimum cost flow.

References

1

https://en.wikipedia.org/wiki/Frank%E2%80%93Wolfe_algorithm

2

Florian, Michael, J Guálat, and H Spiess. “An efficient implementation of the “partan” variant of the linear approximation method for the network equilibrium problem.” Networks 17.3 (1987): 319-339.

Settings and Subclasses

FWConfig(**kwargs)

Options for Frank-Wolfe optimizer.

FWMode(value)

Enum defining the update mode of the FW solver.

FWBreakFlag(value)

Enum defining the status of the FW optimizer.

FWX()

Class that keep tracks of (intermediate) best x in Frank-Wolfe.

Attributes

FW.config

Settings of the FW optimizer.

FW.x

Get current best x.

Methods

FW.run([callback])

Run the Frank-Wolfe algorithm.