Динамическая задача управления запасами

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

Пример 2.8.3. Необходимо разработать такую календарную программу выпуска изделия на плановый период, состоящий из Т временных отрезков, при которой общая сумма затрат на производство и на содержание запасов минимизируется при условии полного и своевременного удовлетворения спроса. Обозначим:

dn – спрос на отрезке n от конца;

cn(x,s) – затраты на отрезке n, связанные с выпуском х единиц изделия и с содержанием запасов, объем которых на конец отрезка равен s единиц. В этой системе обозначений подстрочный индекс «1» соответствует конечному, а «Т» – начальному состоянию.

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

Пусть fn(s) – стоимость, отвечающая стратегии минимальных затрат на n оставшихся отрезках при уровне запасов s на начало n-го от конца отрезка;

xn(s) – объем выпуска, обеспечивающий достижение fn(s).

Пусть уровень запасов на конец планового периода равен нулю, тогда при уровне запасов s на начало последнего (1-го от конца) отрезка выпуск x1(s)=d1–s и

f1(s)= c1(x,0)= c1(d1 – s,0), s=0,1,…,d1.

Заметим, что если начальный уровень запасов отрезка n равен s, а объем выпуска – х, то величина (s+х–dn) – есть уровень запасов на конец данного отрезка, отсюда получаем общее рекуррентное соотношение в виде:

fn(s) = minx[cn(x, s+х–dn)+ fn-1(s+х–dn)], n=1,…,Т, s=0,1,…,d1+…+ dn.

Для упрощения вычислений предположим, что производственные мощности и складские площади ограничены, пусть х=0,1,…,5 и s=0,1,…,4. Допустим также, что спрос и затраты постоянны во времени, и пусть dn=3, а cn(x, s)= c(x)+hs, где первое слагаемое относится к производству, а второе определяется стоимостью содержания запасов (арендная плата за складские помещения, проценты за кредит для создания запасов, страховые взносы и собственно расходы по содержанию запасов). Пусть с(0)=0, с(1)=15, с(2)=17, с(3)=19,с(4)=21, с(5)=23; h=1.

Для n=1 f1(0)=с(3)=19 при x1(0)=3,

f1(1)=с(2)=17 при x1(1)=2,

f1(2)=с(1)=15 при x1(2)=1,

f1(3)=с(0)=0 при x1(3)=0.

Для n=2 f2(0)=min[с(3)+0+f1(0),c(4)+1+f1(1),c(5)+2+f1(2)]=

=min[19+19,21+1+17,23+2+15]=38 при x2(0)=3,

f2(1)=min[с(2)+0+f1(0),c(3)+1+f1(1),c(4)+2+f1(2),c(5)+3+f1(3)]=

=min[17+19,19+1+17,21+2+15,23+3+0]=26 при x2(1)=5,

f2(2)=min[с(1)+0+f1(0),c(2)+1+f1(1),c(3)+2+f1(2),c(4)+3+f1(3)]=

=min[15+19,17+1+17,19+2+15,21+3+0]=24 при x2(2)=4,

f2(3)=min[с(0)+0+f1(0),c(1)+1+f1(1),c(2)+2+f1(2),c(3)+3+f1(3)]=

=min[0+19,15+1+17,17+2+15,19+3+0]=19 при x2(3)=0,

f2(4)=min[с(0)+1+f1(1),c(1)+2+f1(2),c(2)+3+f1(3)]=

=min[0+1+17,15+2+15,17+3+0]=18 при x2(4)=0.

Для n=3 f3(0)=min[с(3)+0+f2(0),c(4)+1+f2(1),c(5)+2+f2(2)]=

=min[19+38,21+1+26,23+2+24]=48 при x3(0)=4,

f3(1)=min[с(2)+0+f2(0),c(3)+1+f2(1),c(4)+2+f2(2),c(5)+3+f2(3)]=

=min[17+38,19+1+26,21+2+24,23+3+19]=45 при x3(1)=5,

f3(2)=min[с(1)+f2(0),c(2)+1+f2(1),c(3)+2+f2(2),c(4)+3+f2(3),c(5)+4+f2(4)]=

=min[15+38,18+26,21+24,24+19,23+4+18]=43 при x3(2)=4,

f3(3)=min[с(0)+0+f2(0),c(1)+1+f2(1),c(2)+2+f2(2),c(3)+3+f2(3),c(4)+4+f2(4)]=

=min[0+38,16+26,19+24,22+19,25+18]=38 при x3(3)=0,

f3(4)=min[с(0)+1+f2(1),c(1)+2+f2(2),c(2)+3+f2(3),c(3)+4+ f2(4)]=

=min[1+26,17+24,20+19,23+18]=27 при x3(4)=0.

И, наконец, для n=4

f4(0)=min[с(3)+0+f3(0),c(4)+1+f3(1),c(5)+2+f3(2)]=

=min[19+48,21+1+45,23+2+43]=67 при x4(0)=3 или 4,

f4(1)=min[с(2)+0+f3(0),c(3)+1+f3(1),c(4)+2+f3(2),c(5)+3+f3(3)]=

=min[17+48,19+1+46,21+2+43,23+3+38]=64 при x4(1)=5,

f4(2)=min[с(1)+f3(0),c(2)+1+f3(1),c(3)+2+f3(2),c(4)+3+f3(3),c(5)+4+f3(4)]=

=min[15+48,18+45,21+43,24+38,23+4+27]=54 при x4(2)=5,

f4(3)=min[с(0)+0+f3(0),c(1)+1+f3(1),c(2)+2+f3(2),c(3)+3+f3(3),c(4)+4+f3(4)]=

=min[0+48,16+45,19+43,22+38,25+27]=48 при x4(3)=0,

f4(4)=min[с(0)+1+f3(1),c(1)+2+f3(2),c(2)+3+f3(3),c(3)+4+ f3(4)]=

=min[1+45,17+43,20+38,23+27]=46 при x4(4)=0.

Сведем результаты вычислений в таблицу 2.8.2.

Таблица 2.8.2.

  s n=1 n=2 n=3 n=4 n=5 n=6 n=7 n=8
х1 f1 x2 f2 x3 f3 x4 f4 x5 f5 x6 f6 x7 f7 x8 f8
3,4 3,4
 

Читателю предоставляем возможность проверить результаты вычислений для n = 5 ¸ 8. Теперь, задаваясь различным уровнем запасов на начало планового периода, можно определить оптимальные стратегии для любого Т от 1 до 8. Так, например, если исходный уровень запасов на начало планового периода равен нулю, то оптимальный календарный план при Т=4 будет:

x4(0)=3, x3(0)=4, x2(1)=5, x1(3)=0 или

x4(0)=4, x3(1)=5, x2(3)=0, x1(0)=3

и минимальная общая сумма затрат составит 67.

Пусть Т=8, тогда минимальная общая сумма затрат составит 127 и x8(0)=5, останется на следующий отрезок 5-3=2, имеем x7(2)=5, значит на следующий отрезок останется 2+5-3=4 и x6(4)=0, останется 4-3=1 и x5(1)=5, останется 1+5-3=3, x4(3)=0, останется 3-3=0, x3(0)=4, останется 4-3=1, x2(1)=5, останется 1+5-3=3 и x1(3)=0.

В таблицу 2.8.3 сведем оптимальные стратегии (планы выпуска) для плановых периодов длительностью Т и начальным уровнем запасов равным нулю.

Обратим внимание на Т=4. Здесь два оптимальных решения, дающих минимальные затраты 67. При Т=7 имеем три решения с одинаковым значением целевой функции 115.

Таблица. 2.8.3

Плановый период Т n=8 янв n=7 фев n=6 мар n=5 апр n=4 май n=3 июн n=2 июл n=1 авг Общая сумма затрат Средне- месячные затраты
 
 
 
  16.75
  15.8
 
      16.43
15.9

Анализ оптимальных вариантов производственной программы, приведенных в табл. 2.8.3, свидетельствует о том, что январский выпуск поначалу возрастает с ростом Т, а затем колеблется около 5, аналогично, среднемесячные затраты испытывают колебания (при минимальном их значении 15.8). Проводя подобный анализ для следующих месяцев (при достаточно большом Т), получим оптимальное решение для бесконечного периода планирования. В условиях настоящего примера таким решением будет повторение производственного цикла (5,5,0,5,0,…) при среднемесячных затратах 15.8. (вычисления опускаем).

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

1) Управляемые переменные и соответствующие ограничения группируются по шагам, и многошаговый процесс принятия решений исследуется в определенной последовательности.

2) Для выбора оптимальных значений переменных на рассматриваемом шаге используется значение состояния только на данном шаге.

3) Решение, принимаемое при заданном текущем состоянии системы, оказывает прогнозируемое влияние на состояние системы на последующем шаге.

4) Оптимальность текущего решения оценивается в терминах прогнозируемого экономического эффекта для рассматриваемого шага и всех последующих шагов.

Наши рекомендации