Frank-Wolfe-algoritme

Uit testwiki
Naar navigatie springen Naar zoeken springen

Het Frank-Wolfe-algoritme, ook bekend als convexe-combinatiealgoritme, is een klassiek algoritme in het operationeel onderzoek (OR). Het werd in 1956 gepresenteerd door Marguerite Frank and Phil Wolfe als een procedure voor het oplossen van kwadratische programmeerproblemen met lineaire randvoorwaarden. Bij elke stap (iteratie) wordt de doelfunctie gelineariseerd en wordt een richting gekozen waarbij de doelfunctie wordt gereduceerd. Het algoritme kan worden gezien als een generalisatie van de simplexmethode voor lineair programmeren.

Probleemformulering

Minimaliseer f(𝐱)=12𝐱TE𝐱+𝐡T𝐱
met 𝐱ϵ𝐏.

Waarin de n×n matrix E positief-semidefiniet is, h een n×1 vector is, en 𝐏 een mogelijk gebied definieert door een mix van lineaire ongelijkheden en gelijkheden (bijvoorbeeld Ax ≤ b, Cx = d).

Algoritme

Stap 1. Initialisatie. Laat k0 en laat x0 een punt zijn in 𝐏.

Stap 2. Convergentietest. Indien f(xk)=0 stop, het minimum is gevonden.

Stap 3. Richting vinden door benadering van het probleem door vervangen van de functie f door een eerste-order Taylorreeks rond xk. Los op voor x¯k:

Minimaliseer f(xk)+Tf(xk)x¯k
Onder voorwaarde x¯kϵ𝐏
(LP) xk is vast in stap 3, terwijl de minimalisatie plaatsvindt door de x¯k te variëren, en is equivalent aan de minimalisatie van Tf(xk)x¯k).

Stap 4. Bepaal de stapgrootte. Vind λ waarbij f(xk+λ(x¯kxk)) wordt geminimaliseerd onder voorwaarde van 0λ1. Als λ=0 stop, het minimum is gevonden.

Stap 5. Pas de waarden aan. Laat xk+1xk+λ(x¯kxk), laat kk+1 en ga naar stap 2.

Opmerkingen

Het algoritme gaat vlot bij de eerste iteraties maar het rendement neemt af naarmate het minimum wordt bereikt. De toepassing van het algoritme vindt onder andere plaats bij verkeersmodellen waarbij iteratief een evenwichtstoedeling van verkeersstromen wordt berekend.

Referenties