フランク・ウルフのアルゴリズム
ステップサイズの決定: α ← 2 k + 2 {\displaystyle \alpha \leftarrow {\frac {2}{k+2}}} とする。もしくは、 0 ≤ α ≤ 1 {\displaystyle 0\leq \alpha \leq 1} を満す範囲内で、 f ( x k + α ( s k − x k ) ) {\displaystyle f(\mathbf {x} _{k}+\alpha (\mathbf {s} _{k}-\mathbf {x} _{k}))} を最小化するような α を算出する。
ステップ 3. 更新: x k + 1 ← x k + α ( s k − x k ) {\displaystyle \mathbf {x} _{k+1}\leftarrow \mathbf {x} _{k}+\alpha (\mathbf {s} _{k}-\mathbf {x} _{k})} とし、 k ← k + 1 {\displaystyle k\leftarrow k+1} とした上でステップ 1. に戻る。
D {\displaystyle {\mathcal {D}}} をベクトル空間上のコンパクトな凸集合とし、 f : D → R {\displaystyle f\colon {\mathcal {D}}\to \mathbb {R} } を微分可能な凸実関数とする。フランク・ウルフのアルゴリズムは、以下の最適化問題を解く。
Minimize f ( x ) {\displaystyle f(\mathbf {x} )}
subject to x ∈ D {\displaystyle \mathbf {x} \in {\mathcal {D}}} .