factograf
ET
Sign in

Lineaarprogrammeerimine

Lineaarprogrammeerimine (ka lineaarne planeerimine) on matemaatikas optimeerimise meetod, millega leitakse sihifunktsiooni muutujate väärtused, mille puhul funktsiooni väärtus on minimaalne või maksimaalne. Sealjuures võivad muutujatele kehtida võrratussüsteemina esitatavad kitsendused. Nii sihifunktsioon kui ka kitsenduste võrratused peavad olema lineaarsed.

Probleemi esitamine standardkujul

Lineaarprogrammeerimisega lahendatavaid probleeme saab esitada standardkujul, mis koosneb kolmest osast:

  • Sihifunktsioon, mida maksimeerida, nt
{\displaystyle f(x_{1},x_{2})=c_{1}x_{1}+c_{2}x_{2}}
  • Kitsendused muutujatele, esitatuna võrratussüsteemina, nt
{\displaystyle {\begin{matrix}a_{11}x_{1}+a_{12}x_{2}&\leq b_{1}\\a_{21}x_{1}+a_{22}x_{2}&\leq b_{2}\\a_{31}x_{1}+a_{32}x_{2}&\leq b_{3}\end{matrix}}}
  • Muutujate mitte-negatiivsuse tingimus, nt
{\displaystyle {\begin{matrix}x_{1}\geq 0\\x_{2}\geq 0\end{matrix}}}

{\displaystyle x_{*}} on sihifunktsiooni argumendid ehk muutujad, mille väärtusi otsitakse. {\displaystyle a_{*}}, {\displaystyle b_{*}} ja {\displaystyle c_{*}} on väärtused, mis tulenevad probleemipüstitusest.

Sõltuvalt lahendamise meetodist võib olla otstarbekas kasutada teistsugust standardkuju. Näiteks simpleksmeetodi puhul tuleb kitsendused viia võrdusmärgiga kujule, nt

{\displaystyle {\begin{matrix}a_{11}x_{1}+a_{12}x_{2}+a_{13}x_{3}=b_{1}\\a_{21}x_{1}+a_{22}x_{2}+a_{23}x_{3}=b_{2}\end{matrix}}}

Näide

Kondiitril on varutud 12 kg kohupiima ja 3 kg suhkrut, millest tuleb valmistada {\displaystyle x_{1}} kg kooki ja {\displaystyle x_{2}} kg torti nii, et saadav kasum oleks maksimaalne. Ülejäänud koostisaineid on piiramatus koguses.

  • Üks kg kooki müüakse 11 € eest ja selle valmistamiseks kulub 500 g kohupiima ning 100 g suhkrut.
  • Üks kg torti müüakse 16 € eest ja selle valmistamiseks kulub 400 g kohupiima ja 200 g suhkrut.

Antud ülesande saab esitada standardkujul:

Maksimeerida: {\displaystyle 11\cdot x_{1}+16\cdot x_{2}} (müügist saadav kasum)
Sealjuures: {\displaystyle 0{,}5\cdot x_{1}+0{,}4\cdot x_{2}\leq 12} (kohupiim)
{\displaystyle 0{,}1\cdot x_{1}+0{,}2\cdot x_{2}\leq 3} (suhkur)
{\displaystyle x_{1}\geq 0,x_{2}\geq 0} (negatiivset kogust ei saa valmistada).

Teisendamine standardkujule

  • Minimeerimisprobleemi saab teisendada maksimeerimisprobleemiks, muutes sihifunktsiooni märki, nt
 {\displaystyle f(x_{1},x_{2})=c_{1}x_{1}+c_{2}x_{2}} → {\displaystyle f(x_{1},x_{2})=-c_{1}x_{1}-c_{2}x_{2}}
  • {\displaystyle \leq }-märgiga kitsenduse saab teisendada võrduseks, lisades mitte-negatiivse tundmatu muutuja, nt
 {\displaystyle {\begin{matrix}a_{11}x_{1}+a_{12}x_{2}&\leq b_{1}\\a_{21}x_{1}+a_{22}x_{2}&\leq b_{2}\\\end{matrix}}}
 →
 {\displaystyle {\begin{matrix}a_{11}x_{1}+a_{12}x_{2}+x_{3}=b_{1}\\a_{21}x_{1}+a_{22}x_{2}+x_{4}=b_{2}\\\end{matrix}}}
 {\displaystyle {\begin{matrix}x_{3}\geq 0\\x_{4}\geq 0\end{matrix}}}

Lisatud muutuja väljendab võrratuse vasaku poole ja selle suurima lubatud väärtuse vahet. See võib tähendada näiteks ressurssi, mida optimaalse lahenduse puhul ei kasutata.

Lahendamine

Lineaarprogrammeerimise probleeme saab lahendada näiteks simpleksmeetodi või sisepunkti meetodi abil.

Read next

In 51 languages

Text from Wikipedia, CC BY-SA 4.0 · Source article