четвер, 2 листопада 2017 р.

Двоїстість у лінійному програмуванні

Згадаємо формулювання прямої і двоїстої програм у стандартній формі.
\begin{align} \text{максимізувати}\ &\vec{c}^T\vec{x}\\ \text{за умов}\ &A\vec{x}\le \vec{b}\\ &\vec{x}\ge 0 \end{align} \begin{align} \text{мінімізувати}\ &\vec{b}^T\vec{y}\\ \text{за умов}\ &A^T\vec{y} \ge \vec{c} \label{eq:dual_constr}\\ &\vec{y}\ge 0 \end{align}

Фізичне тлумачення

  • Застосувати поле $\vec{c}$ до кульки в середині обмеженого багатогранника $A\vec{x} \le \vec{b}$.
  • Зрештою, кулька зупиниться біля краю багатогранника (в точці $\vec{x}'$).
  • Грань $\vec{a}_i\vec{x}'\le b_i$ накладає певну силу $-y_i\vec{a}_i$ на кульку.
  • Кулька стабільна, тому $\vec{c}^T = \sum_i y'_i\vec{a}_i = \vec{y}'^TA$.
  • Двоїстість можна уявити як намагання мінімізувати "роботу" $\sum_i y_ib_i$, щоб перенести м'ячик у початок координат рухаючи багатогранник.
  • В оптимальній позиції тиснуть лише стіни суміжні з кулькою. (На рисунку лише $y_1, y_2$ не нульові.)
Звернемо увагу на те, що на кульку тиснуть лише грані до яких вона притуляється. Тобто для кожного $i$, або вона перебуває на лінії $\vec{a}_i^T \vec{x} = b_i$ або тиск дорівнює нулю: \begin{align} \vec{a}_i\vec{x} = b_i, y_i > 0&\ \text{торкається грані, тиск є} \label{eq:compslack1}\\ \vec{a}_i\vec{x} < b_i, y_i = 0&\ \text{не торкається грані, тиску немає}\label{eq:compslack2} \end{align} Тепер покажемо, що наш $\vec{x}'$ і є оптимальним розв'язком. Згідно з принципом слабкої двоїстості $\vec{c}^T\vec{x} \le \vec{b}^T\vec{y}$. Отже, якщо ми покажемо, що $\vec{c}^T\vec{x}' = \vec{b}^T\vec{y}'$, то це і є оптимальний розв'язок. Cтабільність кульки разом із третім законом Ньютона даюсть нам, що $A^T \vec{y}' = \vec{c}$. Завдяки рівнянням (\ref{eq:compslack1}, \ref{eq:compslack2}) ми можемо записати, що $\vec{a}_i\vec{x}'y'_i = b_iy'_i$, а отже $$\vec{c}^T\vec{x}' = \vec{x}'^T\vec{c} = \vec{x}'^TA^T\vec{y}' = (A\vec{x}')^T\vec{y}' = \sum_i\vec{a}_i\vec{x}'y'_i = \sum_i b_iy'_i = \vec{b}^T\vec{y}'$$ Отже, $\vec{x}'$ - оптимальний розв'язок, а $\vec{y}'$ - двоїстий до нього.

Економічне тлумачення

Розглянемо задачу оптимального виробництва:
  • $n$ продуктів, $m$ сирих матеріалів.
  • Продукт $j$ потребує $a_{ij}$ одиниць сирого матеріалу $i$.
  • Всього доступно $b_i$ одиниць матеріалу $i$.
  • Продукт $j$ дає $c_j$ прибутку на одиницю.
  • Майстерня хоче максимізувати прибуток за наявних матеріалів
\begin{matrix} \text{максимізувати}&\vec{c}^T\vec{x}&\\ \text{за умов}&\vec{a}_i^T\vec{x}\le b_i,&\ i = 1, \dots, m.\\ &x_j\ge 0,& j = 1,\dots,n. \end{matrix} Якщо задача розв'язна і розв'язок скінченний, то допустима область - це опуклий багатогранник. Завжди існує щонайменше одна вершина в якій цільова функція набуває оптимального значення. Для задачі оптимального виробництва це означає, що для $n$ продуктів і $m$ сирих матеріалів, існує оптимальний план з щонайбільше $m$ продуктами.

Тлумачення двоїстих змінних

Для кожної одиниці продукту $j, j \in \{1,n\}$, нам потріно $a_{ij}, i \in \{1, m\}$. Для того, щоб було вигідно випускати продукт, його ціна має бути не меншою ніж сумарна ціна всіх складових. Позначимо ціну продукту через $c_p(j)$ і ціну матеріалу через $c_m(i)$, тоді $$c_p(j) \ge \sum_i a_{ij} c_m(i)$$ Але ж з точністю до знаку це те саме, що і обмеження двоїстої програми (\ref{eq:dual_constr}). Поглянемо на це з іншого боку. За умови що $\vec{x}$ і $\vec{y}$ оптимальні розв'язки відповідно прямої і двоїстої задач згідно з принципом сильної двоїстості маємо: $$\vec{c}^T\vec{x}=\vec{b}^T\vec{y}$$
  • Ліворуч маємо максимальний виторг.
  • Праворуч - $\sum_i (\text{наявність матеріалу}\ i) \times (\text{виторг на одиницю матеріалу}\ i)$
Інакше кажучі: Значення $y_i$ в оптимумі - це двоїста ціна ресурсу $i$.

Якщо ж значення не оптимальні, тобто

$$\vec{c}^T\vec{x}<\vec{b}^T\vec{y}$$ Розв'язок не оптимальний, бо ресурси не використані повністю.

Немає коментарів:

Дописати коментар