Vad är kvadratisk programmering?

Kvadratisk programmering är en metod som används för att optimera en flervariabel kvadratisk funktion som kan eller inte kan vara linjärt begränsad. Många verkliga problem, som att optimera ett företags portfölj eller att minska en tillverkares kostnader, kan beskrivas med hjälp av ett kvadratiskt program. Om objektivfunktionen är konvex kan en genomförbar lösning existera och kan lösas med kända algoritmer såsom den expanderade simplexalgoritmen. Det finns metoder för att lösa vissa icke-konvexa kvadratiska funktioner men de är komplicerade och inte lättillgängliga.

Matematisk optimeringsteknik används i kvadratisk programmering för att minimera en objektiv funktion. Den objektiva funktionen består av ett antal beslutsvariabler som kan eller inte kan vara avgränsade. Beslutsvariablerna har makten 0, 1 eller 2. Objektivfunktionen kan vara föremål för ett antal linjära likhets- och olikhetsbegränsningar avseende beslutsvariablerna. Ett exempel på kvadratisk programmering är: minimera f(x,y) = x2 + 3y2 – 12y + 12 där x + y = 6 och x > 0 och y ≥ 0.

Det är ofta intressant att använda flervariata kvadratiska funktioner för att beskriva verkliga problem. Till exempel, med hjälp av modern portföljteori, kommer en finansanalytiker att försöka optimera ett företags portfölj genom att välja andelen tillgångar som minimerar risken förknippad med en given förväntad avkastning. En andragradsekvation som består av tillgångsvikter och korrelationen mellan tillgångar beskriver portföljvariansen som kan minimeras med kvadratisk programmering. Ett annat exempel kan vara en tillverkare som använder en kvadratisk ekvation för att beskriva sambandet mellan olika kvalitetskomponenter och en produkts kostnad. Tillverkaren kan minimera kostnaderna samtidigt som vissa standarder bibehålls genom att lägga till linjära begränsningar till det kvadratiska programmet.

En av de viktigaste förutsättningarna för att lösa ett kvadratiskt program är den objektiva ekvationens konvexitet. Konvexiteten för en kvadratisk funktion bestäms av hessian eller matrisen för dess andraderivator. Funktionen kallas konvex om den hessiska matrisen är antingen positiv definit eller positiv semi-definit, det vill säga om alla egenvärdena är positiva respektive icke-negativa. Om hessian är positiv och en genomförbar lösning finns, då är det lokala minimumet unikt och är ett globalt minimum. Om hessian är semi-positiv kanske en genomförbar lösning inte är unik. Icke-konvexa kvadratiska funktioner kan ha lokala eller globala minimivärden, men de är svårare att bestämma.

Det finns många sätt att lösa en konvex kvadratisk funktion med hjälp av kvadratisk programmering. Det vanligaste tillvägagångssättet är en utökning av simplexalgoritmen. Några andra metoder inkluderar den inre punkt- eller barriärmetoden, metoden med aktiv uppsättning och metoden med konjugatgradient. Dessa metoder är integrerade i vissa program som Mathematica® och Matlab® och de finns tillgängliga i bibliotek för många programmeringsspråk.