[[File:Frank-Wolfe-Algorithm.png|thumbnail|right|A step of the Frank-Wolfe algorithm]]
'''Step 1.''' Initialization. Let <math>k \leftarrow 0</math> and let <math>x_kx_0 \!</math> be any point in <math>\mathbfmathcal{PD}</math>.
'''Step 31.''' Direction-finding subproblem. The approximation of the problem that is obtained by replacing the function f with its first-order [[Taylor series|Taylor expansion]] around <math>x_k \!</math> is found. Solve for <math>\bar{x}_ks</math>:▼
'''Step 2.''' Convergence test. If <math> \nabla f(\mathbf{x})=\frac{1}{2}(E+E^T)\mathbf{x}+\mathbf{h}=\mathbf{0}</math> then Stop, we have found the minimum.
:Subject to <math>\bar{x}_ks \epsilonin \mathbfmathcal{PD}</math>▼
'''Step 2.''' Step size determination. Set <math>\gamma \leftarrow \frac{k}{k+2}</math>, or alternatively find <math>\gamma \!</math> that minimizes <math> f(x_k+\gamma(s-x_k))</math> subject to <math>0 \le \gamma \le 1</math> .
▲'''Step 3.''' Direction-finding subproblem. The approximation of the problem that is obtained by replacing the function f with its first-order [[Taylor series|Taylor expansion]] around <math>x_k \!</math> is found. Solve for <math>\bar{x}_k</math>:
▲:Subject to <math>\bar{x}_k \epsilon \mathbf{P}</math>
:(note that this is a Linear Program. <math>x_k \!</math> is fixed during Step 3, while the minimization takes place by varying <math>\bar{x}_k</math> and is equivalent to minimization of <math>\nabla^T f(x_k) \bar{x}_k</math>).
'''Step 43.''' StepUpdate. size determination.FindLet <math>x_{k+1}\lambdaleftarrow \!</math> that minimizes <math> f(x_k+\lambdagamma(\bar{x}_ks-x_k))</math>, subject tolet <math>0k \le \lambda \leleftarrow k+1</math> .and go Ifback <math>\nablato f(x_k)^T(\bar{x}_k-x_k)Step \ge 0 \!</math> then Stop, we have found the minimum in <math> x_k\!</math>2.
'''Step 5.''' Update. Let <math>x_{k+1}\leftarrow x_k+\lambda(\bar{x}_k-x_k)</math>, let <math>k \leftarrow k+1</math> and go back to Step 2.