Hoppa till innehållet

Linjärprogrammering

Från Wikipedia
(Omdirigerad från Linjär programmering)

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:

Under bivillkoren:

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

eller på matrisform; låt A vara m × n-matrisen med elementet på rad k, kolonn l, låt och , då alla bivillkoren ovan kan uttryckas som att

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:

skrivas som:

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

Icke-negativitet för alla variabler uppnås genom variabelbyte då variabler ersätts med och fria (icke-teckenbegränsade) variabler delas i två variabler dvs. där kommer att vara noll när och kommer att vara noll när . Båda de nya variablerna är dock icke-negativa emedan 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 praktiska 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ö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) kallas 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.

Det tillåtna området (de punkter: () 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.