Optiblog

Študentský blog o zaujímavostiach v optimalizácii, automatizácii, a ďalších veciach, ktoré sa zomelú vo svete techniky a stojí za to ich šíriť ďalej

Oddelenie IAM

Ústav informatizácie, automatizácie a matematiky na FCHPT, STU

Úvod do lineárneho programovania


Lineárnym programovaním nazývame postup riešenia takého optimalizačného problému, ktorého účelová funkcia je lineárna, teda v tvare:

rovnica_linprog_1.png, 4,5kB

a ohraničenia problému tvorí sústava lineárnych rovníc a nerovníc.



Úlohu lineárneho programovania je možné zapísať v maticovom tvare:

rovnica_linprog_2.png, 7,3kB

kde jednotlivé symboly predstavujú:

x - vektor optimalizačných premenných
rovnica_linprog_3.png, 3,2kB

c - vektor argumentov účelovej funkcie, ktorý má rovnaký rozmer ako vektor x.
c^T predstavuje transponovaný vektor, ktorým je možné násobiť x.
rovnica_linprog_4.png, 4,1kB

A - matica koeficientov ohraničení, ktoré vymedzujú množinu prípustných riešení. Počet ohraničení, t.j. počet riadkov matice označíme m.
rovnica_linprog_5.png, 10kB

b - vektor pravých strán ohraničení. Dva vektory - Ax a b je možné porovnať práve vtedy, keď sa rovnajú ich rozmery. Preto:
rovnica_linprog_6.png, 4,7kB

Grafická interpretácia problémov lin. programovania

Majme dvojrozmerný lineárny optimalizačný problém, ktorý je zadaný v tvare:


rovnica_linprog_7.png, 9,9kB

Vidíme, že všetky zadané ohraničenia sú v tvare nerovnosti. V karteziánskej súradnicovej sústave danej premennými x1 a x2 ( x2 = f(x1) ) predstavujú tieto ohraničenia polroviny (ohraničenia v tvare rovnosti by predstavovali priamky). Množina prípustných riešení je daná prienikom všetkých ohraničení. Všetky ohraničenia zakreslíme do sústavy a získame tak množinu M.

obr_linprog_1.png, 9,9kB
Obr. 1 - grafická interpretácia množiny prípustných riešení M


Účelová funkcia je daná rovnicou:

rovnica_linprog_11.png, 4,0kB

Rovnica priamky v súradnicovej sústave x2 = f(x1), daná účelovou funkciou, má tvar:

rovnica_linprog_12.png, 5,4kB


Vidíme, že smernica tejto priamky sa s hodnotou účelovej funkcie J nemení. Nazveme ju preto vrstevnica účelovej funkcie. Položme najprv J = 0 a zakreslime vrstevnicu do sústavy:

obr_linprog_2.png, 9,9kB
Obr. 2 - grafické znázornenie vrstevnice účelovej funkcie


Cieľom riešenia je maximalizovať hodnotu J, pričom zvyšovaním tejto hodnoty sa vrstevnica posúva smerom nahor (zvyšovaním J rastie x2 ). Hľadáme preto najvzdialenejší bod množiny prípustných riešení M v smere rastu J (smer vyznačený šípkou).

obr_linprog_3.png, 9,9kB
Obr. 3 - grafické znázornenie optimálneho riešenia


Posúvaním vrstevnice smerom nahor sme našli bod, ktorý je súčasťou množiny M a pre každý iný bod z má účelová funkcia menšiu hodnotu. Tento bod je hľadaným optimálnym riešením problému.
Optimálne riešenie je teda dané prienikom dvoch priamok ohraničení:

rovnica_linprog_8.png, 7,3kB


Vyriešením tejto sústavy rovníc dostaneme hodnoty premenných v optime:

rovnica_linprog_9.png, 5,8kB


Dosadením x1 a x2 do rovnice účelovej funkcie zistíme jej optimálnu hodnotu:

rovnica_linprog_10.png, 4,5kB