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
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).

Algoritme

bewerken

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.

Opmerkingen

bewerken

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

bewerken