Санкт-Петербургский государственный университет
Опубликован: 08.06.2009 | Доступ: свободный | Студентов: 663 / 131 | Оценка: 4.65 / 4.35 | Длительность: 07:44:00
Специальности: Программист
Лекция 4:

Задача ГП без ограничений: двойственность

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

Решение задачи ГП при DOD>0

Покажем теперь, как двойственная задача с положительной степенью трудности ( DOD>0 ) может быть переформулирована в терминах базисных переменных.

Обозначим через d степень трудности задачи ГП. Тогда можно найти базисные векторы b^{(j)},\ j=\overline{0,d}, так, что решение системы ограничений двойственной задачи будет иметь вид

w = b^{(0)} + \sum\limits_{j=1}^{d}r_{j}b^{(j)},

где r_j\in \mathbb{R} - базисные переменные, удовлетворяющие условиям положительности

b_{i}^{(0)}+ \sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}> 0,\
  i=\overline{1,n}. ( 51)

Вектор b^{(0)} удовлетворяет условиям ортогональности:

\sum\limits_{i=1}^{n}a_{ij}b_{i}^{(0)} = 0,\ j = \overline{1,m}, ( 52)

а также удовлетворяет условию нормальности

\sum\limits_{i=1}^{n}b_{i}^{(0)} = 1. ( 53)

Выразим двойственную функцию через базисные переменные:

v(r) =\prod\limits_{i=1}^{n}\left\{\frac{
  c_{i}}{b_{i}^{(0)}+\sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}}\right\}^{\left[b_{i}^{(0)}+\sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}\right]}.

Таким образом, получили двойственную задачу в терминах базисных переменных:

v(r) =\prod\limits_{i=1}^{n}\left\{\frac{
  c_{i}}{b_{i}^{(0)}+\sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}}\right\}^{\left[b_{i}^{(0)}+\sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}\right]}\rightarrow
\max, ( 54)

при ограничениях

b_{i}^{(0)}+ \sum\limits_{j=1}^{d}r_{j}b_{i}^{(j)}> 0,\
  i=\overline{1,n}, ( 55)
\sum\limits_{i=1}^{n}a_{ij}b_{i}^{(0)} = 0,\ j = \overline{1,m}, ( 56)
\sum\limits_{i=1}^{n}b_{i}^{(0)} = 1. ( 57)

Приведем теорему, доказательство которой можно найти, например, в [5].

Теорема 8 Множество оптимальных решений задачи (54)--(57) совпадает с множеством оптимальных решений задачи с целевой функцией, равной \ln v(r), при тех же ограничениях (55)--(57).

В качестве примера рассмотрим решение задачи ГП с DOD =1, поскольку для больших степеней трудности нахождение векторов b^{j} (j=\overline{0,d}) требует использования специальных численных методов.

Пример 30 Решим задачу ГП

g(x) = 4x_{1} + 12.5x_{2} + 5x_{1}^{-1} + 6x_{2}^{-1}\rightarrow
  \min.

Матрица экспонент позинома

A = \left\|
\begin{array}{rr}
  1 & 0  \\
  0 & 1  \\
  -1 & 0 \\
  0 & -1
\end{array}
\right\|.

Степень трудности задачи равна DOD = 4 - (2+1) = 1, следовательно, задача разрешима, но имеет не единственное решение. Двойственная задача может быть переформулирована в терминах базисных переменных. Поскольку DOD =1, то имеется одна базисная переменная.

Двойственная задача имеет вид:

v(w) = \left(\frac{4}{w_1}\right)^{w_1}\left(\frac{12.5}{w_2}\right)^{w_2}\left(\frac{5}{w_3}%
  \right)^{w_3}\left(\frac{6}{w_4}\right)^{w_4}\rightarrow\max

при ограничениях

\begin{array}{rcrcrcrcr}
   w_1&&&-&w_3&&&=&0, \\
   &&w_2&&&-&w_4&=&0, \\
   w_1&+&w_2&+&w_3&+&w_4&=&1, \\
   %&&&w_i>0,&i=1, 2, 3.
\end{array} ( 58)
w_i>0,\ i=1, 2, 3, 4.

Сначала получим формулу общего решения системы (58). Из первых двух уравнений системы следует, что w_1 = w_3, w_2 = w_4. В качестве базисной выберем переменную w_2, тогда из третьего уравнения получаем w_1 = 0.5 - w_2.

Положим w_2 = r_1, тогда можно записать

\begin{array}{rlc}
& w_1 = 0.5 - r_1,& \\
& w_2 = r_1,& \
& w_3 = 0.5 - r_1,& \\
&w_4 = r_1.
\end{array} ( 59)

Запишем теперь систему (59) в векторном виде. Ведем следующие обозначения:

b^{(0)} =(0.5, 0, 0.5, 0)^{T},\ b^{(1)} = (-1, 1, -1, 1)^{T}.

Тогда общее решение двойственной задачи примет вид:

w = b^{(0)} + r_{1}b^{(1)}.

Проверим, что вектор b^{(0)} удовлетворяет условию нормальности (53):

0.5 + 0 + 0.5 + 0 = 1.

и условиям ортогональности (52):

\begin{array}{rlc}
&1\times 0.5 + 0\times 0 + (-1)\times 0.5 + 0\times 0 =0,& \\
&0\times 0.5 + 1\times 0 + 0\times 0.5 +(-1)\times 0 = 0.
\end{array}

Для w должно выполняться условие положительности (51). Из системы (59) следует, что оно выполняется при 0< r_1
< 0.5.

Подставив в формулу для функции v(w_1, w_2, w_3, w_4) формулы (59), получим задачу максимизации функции f от одной переменной r_1:

\begin{array}{rlc}
  f(r_1) &= v(0.5-r_1, r_1, 0.5-r_1, r_1)=& \\
  &=\left(\frac{4}{0.5-r_1}\right)^{0.5-r_1}\left(\frac{12.5}{r_1}\right)^{r_1} \\
  \left(\frac{5}{0.5-r_1}\right)^{0.5-r_1}\left(\frac{6}{r_1}\right)^{r_1}&\rightarrow\max 
\end{array}

при ограничении

0 < r_1 < 0.5.

Упростив получившуюся формулу для функции f(r_1), получим задачу

f(r_1) = 20^{0.5-r_{1}}\ 75^{r_1}\ {r_{1}}^{-2r_1}\ (0.5 - r_1)^{2r_1 - 1}\rightarrow\max

при ограничении

0 < r_1 < 0.5.

По теореме 8 вместо этой задачи можно решать задачу:

\ln f(r_1) =(0.5-r_1)\ln 20 + r_1\ln 75 - 2r_{1}\ln r_{1} + (2r_1 -
  1)\ln(0.5 - r_1) \rightarrow \max

при ограничении

0 < r_1 < 0.5.

Упростив целевую функцию \ln f(r_1), получим задачу:

\ln f(r_1) =0.5\ln 20 + (\ln 75-\ln 20)r_1 - 2r_{1}\ln r_1 + (2r_{1} - 1)\ln(0.5 - r_{1})\rightarrow \max

при ограничении

0 < r_1 < 0.5.
Поиск решения: ввод данных

Рис. 4.1. Поиск решения: ввод данных
Результат работы надстройки Поиск решения

Рис. 4.2. Результат работы надстройки Поиск решения

Решим получившуюся задачу при помощи надстройки Solver (Поиск решения) в программе Excel. На рис. 4.1 показано как ввести данные задачи. После нажатия на кнопку Solve (Решить) получим оптимальное решение и значение целевой функции (рис. 4.2):

r_{1}^{*} = 0.33,\ \ln f(r_{1}^{*}) = 3.27.

Из системы (59) находим оптимальное решение двойственной задачи:

w_{1}^{*} = 0.17,\ w_{2}^{*} =0.33,\ w_{3}^{*} = 0.17,\ w_{4}^{*}=0.33.

Максимальное значение двойственной функции вычисляем по следующей формуле:

v(w^*) = f(r_{1}^{*}) = \exp(\ln f(r_{1}^{*})) = \exp(3.27) = 26.31.

По теореме двойственности 7 справедливо равенство: g(x^*) = = v(w^*) = 26.31.

Вычислим теперь оптимальные значения переменных прямой задачи: x_{1}^{*}, x_{2}^{*}. Воспользуемся формулой (39) для первых двух мономов:

\begin{array}{rcr}
4 x_{1}^{*}&=&26.31\times 0.17, \\
12.5 x_{2}^{*}&=&26.31\times 0.33 .
\end{array}

Отсюда получаем оптимальные значения переменных задачи: x_{1}^{*} = 1.12, x_{2}^{*} = 0.69.

Краткие итоги

Сформулирована двойственная задача для задачи геометрического программирования без ограничений. Приведена формулировка теоремы двойственности. Введено понятие степени трудности задачи геометрического программирования. Все понятия и методы решения задачи ГП с помощью двойственной задачи продемонстрированы на примерах.

< Лекция 3 || Лекция 4: 123 || Лекция 5 >
Васильевич Иван
Васильевич Иван

Так это же динамическое программирование на основе математической индукции.