next up previous contents
Next: Korzyści Up: Dualizm Previous: Dualizm   Contents

Problem dualny programowania liniowego

Definicja 4.1   Niech będzie dany PPL
\begin{displaymath}
\begin{array}{rcl}
\sum_{j=1}^n a_{ij}x_j & \leq & b_i \ ...
...& = & \sum_{j=1}^n c_jx_j \rightarrow \mbox{max}
\end{array}
\end{displaymath} (4.1)

PPL
\begin{displaymath}
\begin{array}{rcl}
\sum_{i=1}^m a_{ij}y_j & \geq & c_j \ ...
...& = & \sum_{i=1}^m b_iy_i \rightarrow \mbox{min}
\end{array}
\end{displaymath} (4.2)

nazywamy problemem dualnym problemu ([*]). Problem ([*]) nazywamy problemem prymalnym. Równocześnie problem ([*]) nazywamy problemem dualnym problemu (prymalnego) ([*]).

Z powyższej definicji wynika natychmiast następujący wniosek.

Wniosek 4.1   Problemem dualnym do problemu dualnego do PPL jest wyjściowy PPL.

Przykład 4.1   Problemem dualnym do
\begin{displaymath}
\begin{array}{rrrrl}
2x_1 & + x_2 & + 5x_3 & \leq & 2 \\ ...
...2x_1 & - x_2 & + 3x_3 & \rightarrow & \mbox{max}
\end{array}
\end{displaymath} (4.3)

jest
\begin{displaymath}
\begin{array}{rrrrl}
2y_1 & + y_2 & + y_3 & \geq & 2 \\ 
...
...2y_1 & + y_2 & + 3y_3 & \rightarrow & \mbox{min}
\end{array}
\end{displaymath} (4.4)

Twierdzenie 4.1   Niech ([*]) będzie problemem prymalnym a ([*]) problemem do niego dualnym. Jeżeli $x_1,...,x_n$ oraz $y_1,...,y_m$ są rozwiązaniami dopuszczalnymi, odpowiednio, problemów ([*]) i ([*]) to

\begin{displaymath}
\sum_{j=1}^n c_jx_j \leq \sum_{i=1}^m b_iy_i
\end{displaymath}

Dowód twierdzenia [*] jest wyjątkowo prosty i mieści się w jednej linijce:

\begin{displaymath}
\sum_{j=1}^n c_jx_j \leq \sum_{j=1}^n \left( \sum_{i=1}^m a...
... \right) y_i \leq
\sum_{i=1}^m b_iy_i \hfill \rule{.1in}{.1in}\end{displaymath}

Przykład 4.1 (c.d.)   $y_1=2, y_2=1, y_3=0$ jest rozwiązaniem dopuszczalnym ([*]) o wartości funkcji celu $w=5$. Stąd i z twierdzenia [*] wynikają dwa wnioski:
  1. problem ([*]) jest ograniczony,
  2. wartość maksymalna funkcji celu jest co najwyżej równa $5$.

Zasada którą widzieliśmy w przykładzie działa także w ogólności.

Wniosek 4.2   Jeżeli problem prymalny jest nieograniczony, to problem do niego dualny jest sprzeczny.

Przykład 4.2   Może się zdarzyć, że oba problemy: prymalny i dualny są sprzeczne. Tak jest na przykład dla problemu prymalnego:

\begin{displaymath}
\begin{array}{rrrr}
2x_1 & -x_2 & \leq & 2\\
-2x_1 & + x...
... \hline
3x_1 & - x_2 & \rightarrow & \mbox{max}
\end{array}
\end{displaymath}

Z twierdzenia [*] wynika, że gdyby udało nam się znaleźć takie rozwiązanie dopuszczalne $x_1,...,x_n,z$ problemu prymalnego ([*]) i $y_1,...,y_m,w$ problemu do niego dualnego ([*]), że $z=w$, to każde z tych rozwiązań byłoby rozwiązaniem optymalnym swojego problemu. Powstaje pytanie: kiedy takie rozwiązania istnieją? Zaraz zobaczymy, że zawsze wtedy gdy problemy ([*]) i ([*]) są niesprzeczne. Mówi o tym twierdzenie sformułowane w ostatecznej formie przez D. Gale'a, H.W. Kuhna i A.W. Tuckera w 1951 roku.

Twierdzenie 4.2 (Zasada dualności.)   Jeżeli zagadnienie prymalne ([*]) ma rozwiązanie optymalne $(\bar{x}_1,...,\bar{x}_n)$ to problem dualny ([*]) ma także rozwiązanie optymalne $(\bar{y}_1,...,\bar{y}_m)$ i zachodzi równość
\begin{displaymath}
\sum_{j=1}^n c_j\bar{x}_j = \sum_{i=1}^mb_i\bar{y}_i
\end{displaymath} (4.5)

Dowód. Przypuśćmy, że $(\bar{x}_1,...,\bar{x}_n)$ jest rozwiązaniem problemu prymalnego ([*]). Zgodnie z twierdzeniem [*] wystarczy wskazać takie rozwiązanie $(\bar{y}_1,...,\bar{y}_m)$ problemu dualnego ([*]), żeby zachodziła równość ([*]).
Przypuśćmy, że ostatnim słownikiem otrzymanym dla problemu ([*]) jest słownik w którym funkcja celu wyraża się wzorem
\begin{displaymath}
z = \bar{z} + \sum_{k=1}^{m+n}\bar{c}_kx_k
\end{displaymath} (4.6)

Pamiętamy, że we wzorze ([*])
-
$\bar{c}_k=0$ gdy $x_k$ jest zmienną niebazową ostatniego słownika
-
$\bar{c}_k \leq 0$ dla każdego $k=1,...,m+n$, bowiem zakładamy, że ([*]) ma rozwiązanie optymalne.
$\bar{z}$ jest oczywiście wartością maksymalną funkcji celu problemu ([*]) i, skoro $(\bar{x}_1,...,\bar{x}_n)$ jest rozwiązaniem optymalnym, zachodzi

\begin{displaymath}\bar{z} = \sum_{j=1}^n c_j \bar{x}_j \end{displaymath}

Wykażemy, że szukanym rozwiązaniem optymalnym problemu dualnego jest

\begin{displaymath}\bar{y}_1 = -\bar{c}_{n+1}, \bar{y}_2 = -\bar{c}_{n+2}, ...,
\bar{y}_m = -\bar{c}_{n+m} \end{displaymath}

W tym celu przepiszemy wzór ([*]) po dokonaniu na nim następujących manipulacji:
-
zastępujemy $z$ przez $\sum_{j=1}^n c_jx_j$,
-
korzystając z faktu, że $\sum_{k=1}^{n+m}\bar{c}_kx_k =
\sum_{j=1}^n \bar{c}_jx_j + \sum_{i=1}^m \bar{c}_{n+i}x_{n+i}$ ($x_{n+i}$ są zmiennymi sztucznymi), zastępujemy
$\bar{c}_{n+i}$ przez $-\bar{y}_i$ (inaczej mówiąc, definiujemy $\bar{y}_i:=-\bar{c}_{n+i}$)
$x_{n+i}$ przez $b_i - \sum_{j=1}^n a_{ij}x_j$.
Otrzymamy wtedy wzór

\begin{displaymath}
\sum_{j=1}^n c_jx_j = \bar{z} + \sum_{j=1}^n\bar{c}_jx_j - \sum_{i=1}^m \bar{y}_i(b_i-\sum_{j=1}^n a_{ij}x_j) \end{displaymath}

a stąd połatwych przekształceniach
\begin{displaymath}
\sum_{j=1}^n c_jx_j = (\bar{z} - \sum_{i=1}^m \bar{y}_ib_i)
+ \sum_{j=1}^n (\bar{c}_j + \sum_{i=1}^m \bar{y}_ia_{ij})x_j
\end{displaymath} (4.7)

Równość ([*]) jest równością wielomianów zmiennych $x_1,...,x_n$, stąd
\begin{displaymath}
c_j = \bar{c}_j + \sum_{i=1}^m a_{ij}\bar{y}_i \ \ \mbox{dla } \ j=1,...,n
\end{displaymath} (4.8)

oraz
\begin{displaymath}
\bar{z} = \sum_{i=1}^m \bar{y}_ib_i
\end{displaymath} (4.9)

Równość ([*]) oznacza, że zachodzi równość ([*]). Ponieważ $\bar{c}_j \leq 0$ dla wszystkich $j$, równość ([*]) pociąga

\begin{displaymath}\sum_{j=1}^n a_{ij}\bar{y}_i \geq c_j \ \ \ \mbox{dla }\ \ j=1,...,n\end{displaymath}

a więc $\bar{y}_1,...,\bar{y}_m$ jest rozwiązaniem dopuszczalnym problemu ([*]) i twierdzenie zostało wykazane.
next up previous contents
Next: Korzyści Up: Dualizm Previous: Dualizm   Contents