Icke-linjär optimering

Från Wikipedia
Hoppa till: navigering, sök

Icke-linjär optimering är, inom matematik, optimering av en målfunktion f under förutsättning att vissa bivillkor gäller, och där minst ett av bivillkoren eller målfunktionen är icke-linjär. Detta kan jämföras med linjärprogrammering där alla bivillkor, samt målfunktionen är linjär.

Det generella problemet kan skrivas som:

\min_{x \in X}f(x), till exempel att man vill minimera en kostnad genom att välja x ur X \ på rätt sätt

där

f: R^n \to R
X \subseteq R^n.

Ofta kan mängden med tillåtna punkter X \ beskrivas med ett antal bivillkor g_i \leq 0.

Lösningsmetoder[redigera | redigera wikitext]

Exempel på ett par iterationer med brantaste lutningmetoden på en funktion med en grop, med nivåkurvor utritade. Man kan även tänka sig en maximering där nivåkurvorna istället beskriver en kulle.

Det finns flera olika lösningsmetoder som beroende på problemets form lämpar sig olika väl. För att ta reda på problemets karaktär är det viktigt att kunna bestämma om problemet är konvext. För detta gäller att målfunktionen ska vara konvex på den tillåtna mängden X \ som också måste vara konvexa.

Om problemet inte är konvext så är det vanligt att någon typ av relaxation görs för att få ett konvext problem, för vilka bra lösningsmetoder finns. Det är även vanligt att man relaxerar genom att häva ett av villkoren och istället bildar en straffunktion med det hävda villkoret.

Allmän iterativ sökning av lokalt minimum[redigera | redigera wikitext]

Praktiskt använder man en iterativ sökmetod för att hitta ett lokalt optimum (i detta fall minimum)

  1. välj startpunkt x^0 \mbox{, sätt } k = 0 \
  2. välj sökriktning d^k \neq 0
  3. bestäm steglängd t_k \ genom att lösa det endimensionella problemet \min_{t \geq 0} \varphi(t) = f(x^k + td^k)
  4. ny iterationspunkt x^{k+1} = x^k + t_kd^k \
  5. sätt k=k+1 \ och upprepa tills avbrottskriterium uppfylls

Val av sökriktning[redigera | redigera wikitext]

Om problemet är att minimera f, så väljs riktningen d^k \ så att f minskar i denna riktning, d^k \ kallas då avtaganderiktning eller descentriktning. Detta villkor på d^k \ kan skrivas:

\nabla f(x)^Td^k < 0 ty då är vinkeln mellan f:s gradient och riktningen d^k \ större än 90 grader.

Om d^k \ väljs parallell med den negativa gradienten till f så erhålls brantaste lutningmetoden (BL), eftersom gradienten pekar i den riktning var i funktionen ökar snabbat. Denna metod kan dock ge väldigt många iterationer med korta steg för att sedan börja ta längre steg igen, typiskt sker detta nere i ett "dike" eller uppe på en "ås". En annan metod som är bättre men kräver mer beräkning (dyrare) än BL, är Newtons metod där riktningen väljs som

d^k = -\nabla ^2 f(x^k)^{-1} \nabla f(x^k)

Den riktning kan fås med följande beräkning

  • approximera f i iterationspunkten x^k med en andra ordningens Taylorutveckling:
    q(x) = f(x^k) + \nabla f(x^k)^T(x-x^k) + {1 \over 2} (x-x^k) \nabla ^2f(x^k)(x-x^k)
  • sök stationärpunkt, \bar x^k, till q(x)
    \nabla q(x) = \nabla f(x^k) + \nabla ^2 f(x^k)(x-x^k) = 0 \Rightarrow - \nabla ^2 f(x^k)^{-1} \nabla f(x^k) = \bar x^k - x^k, som är riktningen från x^k \ till \bar x^k

Val av steglängd[redigera | redigera wikitext]

Generellt kan det vara nästan omöjligt att finna ett globalt optimalt steg (globalt minimum till \varphi (t)) och därför nöjer man sig ofta med att hitta ett lokalt optimalt steg. Ett lokalt optimalt steg kan resultera i en punkt som är sämre än den nuvarande punkten.

Vid begränsat problem[redigera | redigera wikitext]

Då man har ett problem som är begränsat så är det inte säkert att alla avtagande riktningar är tillåtna, de kan peka ut i det otillåtna området så att man skulle kunna hamna utanför X \ om man tar ett (för långt) steg i den riktningen. Om det finns ett tillräckligt litet steg t>0 sådant att man fortfarande befinner i sig i den tillåtna mängden \bar x + td^k \in X så är riktningen d^k \neq 0 en tillåten riktning från \bar x.

Om det inte finns någon tillåten avtaganderiktning från den punkt där man står, så befinner man sig redan i ett lokalt minimum. Annars skulle man kunna ta ett steg i den tillåtna avtaganderiktningen och erhålla ett lägre bättre värde på funktionen f.

Källor[redigera | redigera wikitext]

  • Jan Lundgren, Mikael Rönnqvist och Peter Värbrand (2003). Optimeringslära. Studentlitteratur