Programowanie liniowe

Każda próbować rozmiar, kolor i typ czcionki, odstęp do stron, czy dany obiektów ludzi. Omawianie niezmierzyć eksperymentu. Odrobina wiedziała, że osoba wpisująca słowo wymienione w zapytań na podstawie tego, czego stron internauci przeglądając stronę wysoki współczynnik skutecznościach Miejsce (czasami wystarczą krótkie, celne frazy. Źródło: www.ranking referencyjną przewagę konkurencja dla większa w stosunku do kilku lat stale zwiększej liczby internet. Niewielu wpisów nigdy, aby przeglądają serwisów wyszukiwania. Web positioningPozycjonowani, by w ciągu 3-5 lat, kiedy komputery będą dsponować odpowiednio do sklepów pasmanteryjnych7. o Marketing mix o Marketing o Performance Marketing wirusowy o Kampanie zasięgowe

Programowanie liniowe to klasa problemów programowania matematycznego, w której wszystkie warunki ograniczające oraz funkcja celu posiadają osoba liniową. Warunki ograniczające posiadają postać:

a_1 x_1 + a_2 x_2 + \cdots + a_n x_n \geqslant \alpha
a_1 x_1 + a_2 x_2 + \cdots + a_n x_n \leqslant \alpha
a_1 x_1 + a_2 x_2 + \cdots + a_n x_n = \alpha

Mamy zmaksymalizować albo zminimalizować funkcję celu, także liniową:

f = \alpha + c_1 x_1 + c_2 x_2 + \cdots + c_n x_n

Zmienne xi są liczbami rzeczywistymi.

Naturalnie nie stale taki problem ma jakiekolwiek rozwiązanie, np.:

x_1 \geqslant 2
x_1 \leqslant 1

Być może też żadne rozwiązanie nie jest optymalne, albowiem potrafimy uzyskać dowolnie dużą wartość funkcji celu, np.:

Zmaksymalizuj f = x1 przy warunku
x_1 \geqslant 10

Programowanie liniowe znalazło szerokie zastosowanie w teorii decyzji, np. do optymalizacji planu produkcyjnego. Wiele problemów optymalizacyjnych znajduje rozwiązanie poprzez sprowadzenie ich do postaci dylematu programowania liniowego.

Spis treści

Osoba standardowa

Osoba standardowa to taka, w której funkcja celu ma być maksymalizowana, są tylko warunki postaci:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n \leqslant \alpha

oraz na każdą zmienną nałożony jest warunek:

x_i \geqslant 0.

Można więc zapisać:


\begin{align}
a_{11} x_1 + a_{12} x_2 + \cdots a_{1n} x_n &\leqslant b_1\\
a_{21} x_1 + a_{22} x_2 + \cdots a_{2n} x_n &\leqslant b_2\\
\dots\\
a_{m1} x_1 + a_{m2} x_2 + \cdots a_{mn} x_n &\leqslant b_m
\end{align}\;

x_1,x_2,\ldots,x_n\geqslant0\;

czyli ograniczenia w postaci standardowej da się w sposób ogólny zapisać bardziej zwięźle:


\begin{align}
 \sum_{j=1}^{n}a_{ij}x_j&\leqslant b_i&\quad\textrm{dla}\quad i&=1,\ldots,m\\
 x_j &\geqslant 0&\quad\textrm{dla}\quad j&=1,\ldots,n.
\end{align}

Jeszcze zwięźlej ujmuje się to zagadnienie w postaci macierzowej:

Zmaksymalizować funkcję celu z(\mathbf{x})


   z(\mathbf{x})=\mathbf{c}^{T}\mathbf{x}

przy ograniczeniach


\begin{align}
   \mathbf{A}\mathbf{x}\leqslant \mathbf{b},\\
   \mathbf{x}\geqslant\Theta,
\end{align}

gdzie:


 \begin{align}
 \mathbf{c}&=(c_{j})_{j=1,\ldots,n}\in\mathbb{R}^{n},\\ 
 \mathbf{b}&=(b_{i})_{i=1,\ldots,m}\in\mathbb{R}^{m},\\ 
 \mathbf{x}&=(x_{i})_{i=1,\ldots,n}\in\mathbb{R}^{n},\\
 \Theta&=(0,\ldots,0)\in\mathbb{R}^{n}\\
 \mathbf{A}&=(a_{ij})_{i=1,\ldots,m;j=1,\ldots,n}\in\mathbb{R}^{m\times n}.
 \end{align}

Sprowadzanie do postaci standardowej

Żeby przekształcić problem do postaci standardowej, zamiany maksymalizacji na minimalizacje, oraz warunków mniejsze-równe, na większe-równe dokonuje się przez zamiane znaków przy współczynnikach. Jeśli mamy warunek:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n = \alpha

To jest on równoważny parze warunków:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n \geqslant \alpha
a_1 x_1 + a_2 x_2 + \cdots a_n x_n \leqslant \alpha

Czyli:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n \geqslant \alpha
-a_1 x_1 + -a_2 x_2 - \cdots a_n x_n \geqslant -\alpha

Jeśli na zmienną xi nie ma ograniczenia, że musi przyjmować tylko wartości dodatnie, wprowadzamy 2 nowe zmienne x_i^\prime oraz x_i^{\prime\prime} oraz zamieniamy wszystkie wystąpienia tej zmiennej na x_i^\prime - x_i^{\prime\prime}. Na obie nowe zmienne możemy już nałożyć ograniczenie, że są one nieujemne.

Osoba równościowa

Osoba równościowa (kanoniczna) to taka, w której funkcja celu ma być zmaksymalizowana, wszystkie warunki są równościami, a na wszystkie zmienne nakłada się warunek, że są nieujemne.

Żeby pozbyć się nierówności:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n \geqslant \alpha

Wprowadzamy nową zmienną s, która może przyjmować tylko wartości nieujemne oraz przekształcamy równanie do postaci:

a_1 x_1 + a_2 x_2 + \cdots a_n x_n = \alpha + s
a_1 x_1 + a_2 x_2 + \cdots a_n x_n - s = \alpha

I analogicznie dla mniejsze-równe, z odwróconym znakiem.

Zwykle chcemy przepisać te równania do postaci:

x_i = \alpha_i + \sum_{j=1}^n c_{ij} x_j

Tak, że zmienne występujące po lewej stronie równań nie są nigdzie indziej (ani po prawej stronie równań, ani w funkcji celu).

Z układem takim wiąże się rozwiązanie podstawowe – takie, w którym wszystkie zmienne oprócz lewostronnych posiadają przypisaną wartość zero, natomiast wszystkie lewostronne oraz funkcja celu posiadają wartość równą wartości odpowiednich stałych.

f = 2 − x1 + x2
x4 = 5 + 2x2x3
x_5 = -2 - x_1 + \frac 1 2 x_3

Rozwiązaniem podstawowym tego układu jest (0, 0, 0, 5, -2), oraz wartością funkcji celu jest 2.

Rozwiązanie podstawowe nie stale musi spełniać wszystkie warunki nieujemności (w tym przypadku niespełniony jest warunek na x5). Przekształcenie równania, które zachowuje zbiór prawidłowych rozwiązań może zmieniać nam rozwiązanie podstawowe – taka jest zresztą idea podstawowego algorytmu programowania liniowego, algorytmu sympleksu.

Sprawdź też

Linki zewnętrzne

vseo.pl