Frank-Wolfe-algoritme

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

[bewerken | brontekst bewerken]
Minimaliseer
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).

Stap 1. Initialisatie. Laat en laat een punt zijn in .

Stap 2. Convergentietest. Indien 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 . Los op voor :

Minimaliseer
Onder voorwaarde
(LP) is vast in stap 3, terwijl de minimalisatie plaatsvindt door de te variëren, en is equivalent aan de minimalisatie van ).

Stap 4. Bepaal de stapgrootte. Vind waarbij wordt geminimaliseerd onder voorwaarde van . Als stop, het minimum is gevonden.

Stap 5. Pas de waarden aan. Laat , laat en ga naar stap 2.

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.