Linjärprogrammering

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

LP-problem; Linjärprogrammeringsproblem är en typ av optimeringsproblem med den egenskapen att målfunktionen och samtliga bivillkor är linjära funktioner. LP-problemen betraktas inom optimeringsläran som förhållandevis lätta även om de i praktiska tillämpningar endast i sällsynta fall kan lösas utan datorstöd (då till exempel med hjälp av simplexmetoden)

Det generella LP-problemet kan skrivas som:

 \mbox{minimera} \qquad z = \sum_{j=i}^n c_jx_j

Under bivillkoren:


\begin{matrix}
a_{1,1}x_1 + a_{1,2}x_2 + \cdots + a_{1,n}x_n \leq b_1 \\
a_{2,1}x_1 + a_{2,2}x_2 + \cdots + a_{2,n}x_n \leq b_2 \\
\vdots \\
a_{m,1}x_1 + a_{m,2}x_2 + \cdots + a_{m,n}x_n \leq b_m
\end{matrix}

Där z är målfunktionen som ska optimeras, variablerna  x_j är de n-stycken beslut som ska fattas så att olikheterna är uppfyllda och  c_j är kostnaderna för varje beslut. Bivillkoren kan skrivas kompaktare som:

\sum_{j=1}^n a_{i,j}x_j \le b_i, \quad i = 1,...,m

eller på matrisform; låt A vara m × n-matrisen med elementet a_{k,l} på rad k, kolonn l, låt \mathbf x = (x_1, x_2, ... x_n) och \mathbf b = (b_1, b_2, ..., b_n), då alla bivillkoren ovan kan uttryckas som att

A \mathbf x \leq \mathbf b.

Standardform[redigera | redigera wikitext]

Standardformen för ett LP-problem är en omskrivning av problemet så att samtliga variabler är icke-negativa samt att samtliga bivillkor formulerats som likhetsvillkor. Det sistnämnda kan uppnås genom att icke-negativa slackvariabler introduceras i samtliga olikhetsvillkor där slackvariabeln utjämnar likheten.

Exempelvis kan olikheten:

 x_1 + x_2 \le 5

skrivas som:

 x_1 + x_2 + a_1 = 5

där  a_1 är en icke-negativ slackvariabel som kan betraktas som kvarvarande frihet.

Icke-negativitet för alla variabler uppnås genom variabelbyte då variabler  x_1 \le 0 ersätts med  y_1 = -x_1 och fria (icke-teckenbegränsade) variabler delas i två variabler. dvs  x_1 = y_1 - y_2 där  y_1 kommer att vara noll när  x_1 \le 0 och  y_2 kommer att vara noll när  x_1 \ge 0 . Båda de nya variablerna är dock icke-negativa emedan  x_1 var fri.

Omskrivning på standardform innebär inte sällan att antalet variabler ökar betydligt vilket givetvis kan försvåra beräkningarna men då LP-problem i praktisk sammanhang nästan uteslutande löses med datorstöd är detta ett litet pris att betala för att kunna använda generella algoritmer som till exempel simplexmetoden.

Baslösning[redigera | redigera wikitext]

Baslösningar är ett sätt att vid lösningen av LP-problem beskriva extremlösningar (hörnpunkter i definitionsmängden). Baslösningar används bl.a. av simplexmetoden för att systematiskt avsöka extrempunkterna.

För ett LP-problem skrivit på standardform kan alla lösningar tecknas som en vektor av problemets samtliga variabler (även slackvariabler).

Ur ett ekvationssystem (här på matrisform A är en n*m-matris) Ax = b erhålles en baslösning om n-m variabler sätts till 0 och det kvarvarande ekvationssystemet löses.

Här kallas de variabler som löses ut för basvariabler och då de entydigt bestämmer hörnpunkten, övriga variabler (som är noll) kalls icke-basvariabler eller ibland nollvariabler.

Speciellt är en baslösning där alla element i vektorn är icke-negativa en tillåten baslösning dvs den uppfyller bivillkoren för LP-problemet.

En baslösning är degenererad om någon av basvariablerna beräknats till noll dvs om andra variabler kunde väljas som icke-basvariabler och ändå generera samma hörnpunkt.

Egenskaper[redigera | redigera wikitext]

Det tillåtna området (de punkter: ( x_1,\; x_2,\; ...\; x_n ) som satsiferar samtliga bivillkor) till ett LP-problem kommer alltid vara en konvex mängd. Denna egenskap följer direkt av att bivillkoren är linjära.

Denna egenskap tillsammans med målfunktionens linjäritet medför att lokala optima även är globala och leder fram till Linjärprogrammeringens fundamentalsats.