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

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

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

Простейшая задача управления запасами

Для обеспечения непрерывности производственного процесса необходимо поддерживать достаточный запас материальных ресурсов. При этом достаточность понимается, как компромисс между двумя крайними стратегиями, когда слишком низкий уровень запасов приводит к остановке производства, а слишком высокий - к непомерным расходам на хранение.

В классических моделях принято характеризовать запас неизбежными издержками на выполнение выбранной стратегии его пополнения. Мы рассмотрим задачу управления запасами в следующих предположениях: спрос на запасаемый продукт постоянен во времени; заказ выполняется мгновенно; дефицит не допускается.

Мы рассмотрим случай, когда общие затраты на управление запасами состоят из затрат на оформление заказов и затрат на их хранение. Введем следующие обозначения:

  • d - спрос на запас (в единицу времени);
  • k - затраты на оформление заказа (не зависят от его объема);
  • h - затраты на хранение единицы складируемой продукции (в единицу времени).

В сделанных предположениях стратегия управления запасами будет определяться двумя величинами: объемом заказа q и временем между двумя последовательными заказами t. Так как предполагается равномерный расход запаса, то

t=\frac{q}{d} . ( 45)

Так как средний уровень запаса равен \frac{q}{2}, то затраты на хранение вычисляются по формуле:

h\frac{q}{2} t.

Используя введенные обозначения и формулу (45), напишем формулу для величины общих затрат S(q) в единицу времени:

S(q)=\frac{k+h\frac{qt}{2}}{t}= \frac{kd}{q}+\frac{h}{2} q. ( 46)

Естественно определить величину заказа q, при которой значение функции S(q) минимально. Так как из формулы (46) следует, что функция S(q) является позиномом, то мы используем для вычисления ее минимального значения теорему двойственности.

Определим сначала двойственную функцию для позинома S(q). Позином состоит из двух мономов, следовательно, двойственная функция имеет две переменные. Вектор коэффициентов позинома c
= (kd, \frac{h}{2}). Следовательно, двойственная функция для позинома S(q) имеет вид:

v(w) =
  \left(\frac{kd}{w_1}\right)^{w_1}\left(\frac{h/2}{w_2}\right)^{w_2}.

Запишем теперь условия ортогональности для позинома. Поскольку в позином S(q) входит одна переменная q, то условия ортогональности состоят из одного равенства. В равенстве два слагаемых, поскольку в позиноме два монома. Матрица экспонент позинома S(q)

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

По формуле (34) условие ортогональности для позинома S(q) имеет вид:

-w_1 + w_2 = 0.

Запишем условие нормальности (формула (35)):

w_1 + w_2 = 1.

Таким образом, двойственная задача имеет вид:

v(w) =
  \left(\frac{kd}{w_1}\right)^{w_1}\left(\frac{0.5 h}{w_2}\right)^{w_2}

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

\begin{array}{c}
  -w_1 + w_2 = 0, \\
 \hphantom{-}w_1 + w_2 = 1,
 \end{array} ( 47)
w_i>0,\ i=1, 2.

Так как система линейных уравнений (47) имеет единственное решение: w_{1}^{*} = 0.5, w_{2}^{*} = 0.5 и оно удовлетворяет условию w_i>0 (i=1, 2), то это оптимальное решение двойственной задачи. Теперь мы можем вычислить оптимальное значение двойственной функции:

v(w^*)
  =\left(\frac{kd}{0.5}\right)^{0.5}\left(\frac{0.5 h}{0.5}\right)^{0.5}=\sqrt{2kdh}.

Согласно теореме двойственности

S(q^*) = v(w^*) = \sqrt{2kdh}.
Осталось определить оптимальное решение прямой задачи. Используем для этого формулы (39) из теоремы двойственности. Требуется решить нелинейную систему:

\begin{array}{rcr}
     k d {q}^{*^{-1}}&=&0.5 \sqrt{2kdh}, \\
    0.5 h q^{*}&=&0.5 \sqrt{2kdh}. 
\end{array}

Из любого уравнения находим, что q^* =
{\sqrt{\frac{2 k d}{h}}} \ (одно из уравнений является избыточным).

Степень трудности задачи ГП

Степень трудности задачи геометрического программирования (Degree of Difficulty или, сокращенно, DOD) определяется по формуле:

DOD = n -(m_{ind} + 1), ( 48)

где n - число мономов в позиноме, m_{ind} - число независимых переменных (определяемое рангом матрицы \|
a_{ij}\| ).

Пример 13 (продолжение) Вычислим степень трудности для задачи ГП:

g(L, W, H) = \frac{c V}{LWH}+2d LH+2b HW+ b LW \rightarrow
\min.

Матрица экспонент позинома g(L, W, H)

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

Здесь n = 4, m_{ind} = 3, поэтому DOD = 4-(3+1)=
    0.

Пример 14 (продолжение). Вычислим степень трудности для задачи ГП:

g(r) =r^2 + 2rt + \frac{2b}{r} + \frac{bt}{r^2}\rightarrow
\min.

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

A = \left\|
\begin{array}{r}
  2  \\
  1 \\
  -1 \\
  -2 \\
\end{array}
\right\|.

Здесь n = 4, m_{ind} = 1, поэтому DOD = 4-(1+1)= 2.

Пример 29 Вычислим степень трудности для задачи ГП и запишем матрицу системы уравнений двойственной задачи из примера 28.

Вычислим степень трудности для задачи ГП:

g(x) = x_{1}^{-5}x_{2}^{2} + 2x_{1}^{2}x_{2}^{-1} + 3x_{1}\rightarrow
  \min,
x_j>0,\ j=1, 2.

Матрица экспонент позинома g(x)

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

Здесь n = 3, m_{ind} = 2, поэтому DOD = 3-(2+1)= 0. Система ограничений двойственной задачи имеет вид:

\begin{array}{rcrcrcr}
-5w_1&+&2w_2&+&w_3&=& 0, \\
2w_1&-&w_2&&&=& 0, \\
w_1&+&w_2&+&w_3&=& 1.
\end{array} ( 49)

Матрица системы ограничений двойственной задачи (формула (37)) имеет вид:

\overline{A} = \left\|
\begin{array}{rrr}
 -5 & 2 & 1  \\
  2 & -1 & 1 \\
  1 & 0 & 1
\end{array}
\right\|.

Заметим, что все столбцы этой матрицы линейно независимы. Таким образом, система (49) однозначно разрешима.

Для того, чтобы система уравнений {(34)}--{(35)} была однозначно разрешима, необходимо и достаточно, чтобы степень трудности задачи ГП была равна нулю. Если степень трудности больше нуля, то система {(34)}--{(35)} разрешима, но имеет не единственное решение. Двойственная задача в этом случае может быть переформулирована в терминах базисных переменных, число которых совпадает со степенью трудности задачи ГП.

Использование теоремы двойственности

Покажем на примерах, как в ряде случаев можно использовать теорему двойственности для решения задач ГП.

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

Вернемся к задаче о перевозке груза из лекции 2.

Пример 13 (продолжение) Решим задачу ГП:

g(L, W, H) = \frac{c V}{LWH} + 2d LH + 2b HW + b LW \rightarrow
  \min.

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

v(w) =\left(\frac{c V}{w_1}\right)^{w_1}\left(\frac{2d}{w_2}\right)^{w_2}\left(\frac{2b}{w_3}\right)^{w_3}\left(\frac{b}{w_4}\right)^{w_4}\rightarrow\max

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

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

Степень трудности задачи ГП равна нулю (столбцы и строки матрицы системы уравнений линейно независимы), следовательно, система (50) разрешима и имеет единственное решение:

w_{1}^{*}= 2/5,\ w_{2}^{*} = 1/5,\ w_{3}^{*} = 1/5,\ w_{4}^{*} = 1/5.

Поскольку выполняется условие w_i>0\ (i=1, 2, 3, 4), то это оптимальное решение двойственной задачи. Теперь мы можем вычислить оптимальное значение двойственной функции:

v(w^*) =\left(\frac{c
V}{2/5}\right)^{2/5}\left(\frac{2d}{1/5}\right)^{1/5}\left(\frac{2b}{1/5}\right)^{1/5}\left(\frac{b}{1/5}\right)^{1/5}.

Рассмотрим численный пример. Пусть V = 400 \mbox{
м}^{3}, c = 10 руб., b = 1 000 руб., d = 2 000 руб. Вычислим значение двойственной функции при этих значениях параметров:

v(w^*) =\left(\frac{10\times
400}{2/5}\right)^{2/5}\left(\frac{2\times 2 000
}{1/5}\right)^{1/5}\left(\frac{2\times 1 000
}{1/5}\right)^{1/5}\left(\frac{1 000}{1/5}\right)^{1/5} =
10 000.

По теореме двойственности 7выполняется следующее равенство:

g(L^*,W^*,H^*)=v(w^*)=10 000\mbox{ (руб.)}

Вычислим теперь оптимальные значения переменных L, H, W, используя формулы (39):

\begin{array}{rcr}
  4 000L{^{-1}}W{^{-1}}H{^{-1}}&=&10 000\ (2/5), \\
  4 000 LH&=&10 000\ (1/5), \\
  2 000 HW&=&10 000\ (1/5), \\
  1 000 LW&=&10 000\ (1/5).
 \end{array}

Упростив, получим систему уравнений:

\begin{array}{rcl}
  LWH&=&1, \\
  LH&=&0.5, \\
  HW&=&1, \\
  LW&=&2.
\end{array}

Решим систему, используя общий подход к решению такого рода нелинейных систем. Прологарифмируем каждое уравнение и выполним замену переменных \ln L = x_1, \ln W = x_2, \ln H = x_3.

Получим следующую систему линейных уравнений:

\begin{array}{rcrcrcl}
  x_1&+&x_2&+&x_3&=&\phantom{-}0, \\
  x_1&+&&&x_3&=& -0.69, \
   &&x_2&+&x_3&=&\phantom{-}0, \\
   x_1&+&x_2&&&=&\phantom{-}0.69.
\end{array}

Решая ее, находим x_1 = 0, x_2 = 0.69, x_3 = -0.69. Выполнив обратную замену L = \exp(x_1), W = \exp(x_2), H =
\exp(x_3), получаем оптимальные размеры контейнера: L^{*} = 1, W^{*} = 2, H^{*} = 0.5.

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

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