Опубликован: 01.09.2009 | Уровень: для всех | Доступ: платный
Лекция 4:

Организационно-экономическая система управления материальными запасами промышленных корпоративных систем

4.3. Управление материальными запасами для нестационарных детерминированных условий

Метод динамического программирования.Чтобы использовать метод динамического программирования в решении приведенной выше оптимизационной задачи, приведем общую постановку задачи динамического программирования [5].

Рассматривается управляемый процесс, в данном случае процесс нахождения оптимальной стратегии управления запасами. В результате управления система (объект управления) S переводится из начального состояния s_{0} в состояние s ^{ \wedge }. Предположим, что управление можно разбить на w шагов, т. е. решение принимается последовательно на каждом шаге, а управление, переводящее систему S из начального состояния в конечное, представляет собой совокупность w пошаговых управлений. Обозначим через x_{k} управление на k -м шаге ( k = 1, 2, \dots , w ). Если управления x_{k} удовлетворяют некоторым ограничениям решаемой задачи, то такие управления являются допустимыми ( x_{k} может быть числом, точкой в n -мерном пространстве, функцией, значением качественного признака, иным объектом нечисловой природы).

Пусть X(x _{1}, x_{2}, \dots , x_{w}) - управление, переводящее систему S из состояния s_{0} в состояние s ^{ \wedge }. Обозначим через s_{k} состояние системы после k -го шага управления ( s_{k} \in S_{k}, где S_{k} - множество всех возможных состояний на шаге k ). Получаем последовательность состояний s_{0}, s_{1}, \dots  , s_{k-1}, s_{k}, \dots , s_{w} = s ^{ \wedge }. Пошаговый процесс перехода системы S из состояния s_{0} в состояние s ^{ \wedge} под действием управления X(x _{1}, x_{2}, \dots , x_{w}) представлен на рис. 4.12.

Процесс перехода системы S из состояния s_{0} в состояние s ^{\wedge}

Рис. 4.12. Процесс перехода системы S из состояния s_{0} в состояние s ^{\wedge}

Для данного процесса действуют следующие положения:

  1. Состояние s_{k} системы в конце k -го шага зависит от предшествующего состояния s_{k-1} и управления на k -м шаге x_{k} (и не зависит от предшествующих состояний и управлений). Это требование называется "отсутствием последствия". Сформулированное положение записывается в виде уравнений:
    s_{k} = \varphi_k(s_{k-1}, x_{k}), k = 1, 2, \dots , w, ( 4.19)

    которые называются уравнениями состояний.

  2. Эффективность каждого k -го шага также зависит от предшествующего состояния s_{k-1} и управления на k -м шаге x_{k}. Обозначим эффективность k -го шага через
    E_{k} = f_k(s_{k-1}, x_{k}), k = 1, 2, \dots , w,

    тогда эффективность всего управления X(x _{1}, x_{2}, \dots , x_{w}) определяется как

    E=\sum\limits_{k=1}^{w}{f_{k}(s_{k-1},x_{k})}. ( 4.20)

Задача пошаговой оптимизации (задача динамического программирования) формулируется следующим образом: определить такое допустимое управление X, переводящее систему S из состояния s_{0} в состояние s^{\wedge} , при котором целевая функция (4.20) принимает наибольшее (наименьшее) значение.

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

Рассмотрим последовательно определение оптимального управления на шаге w, w-1 и т. д., используя принцип оптимальности Р. Беллмана.

Рассмотрим w -й шаг:

s_{w-1} - состояние системы к началу w -го шага (s_{w-1} \in S_{w-1});

s_{w} = s^{\wedge} - конечное состояние системы;

x_{w} - управление на w -м шаге;

f_w(s_{w}-1, x_{w}) - целевая функция (выигрыш) w- го шага.

Согласно принципу оптимальности, x_{w} нужно выбирать так, чтобы для любых состояний s_{w-1} получить максимум целевой функции на этом шаге. Обозначим через E^*_{w}(s_{w-1}) максимум целевой функции - показателя эффективности w -го шага при условии, что к началу последнего шага система S была в произвольном состоянии s_{w-1}, а на последнем шаге управление было оптимальным.

E*w(s_{w-1}) называется условным максимумом целевой функции на w-м шаге:

E^*_{w}(s_{w-1}) = \max\limits_{\{ x_{w}\}}{f_{w}(s_{w-1},x_{w})} ( 4.21)

Максимизация ведется по всем допустимым управлениям x_{w}.

Решение x_{w}, при котором достигается E^*_{w}(s_{w-1}), также зависит от s_{w-1} и называется условным оптимальным управлением на w-м шаге и обозначается x^*_{w}(s_{w-1}).

Решив одномерную задачу локальной оптимизации по уравнению (4.21) для всех возможных состояний s_{w-1}, находятся две функции: E^*_{w}(s_{w-1}) и x^*_{w}(s_{w-1}).

Рассмотрим теперь двухшаговую задачу: присоединим к w -му шагу ( w-1 )-й.

Для любых состояний s_{w-2}, произвольных управлений x_{w-1} и оптимальном управлении на w -м шаге значение целевой функции на двух последних шагах:

f _{w-1}(s_{w-2}, x_{w-1}) + E^*_{w}(s_{w-1}). ( 4.22)

Согласно принципу оптимальности для любых s_{w-2} решение нужно выбирать так, чтобы оно вместе с оптимальным управлением на последнем ( w -м) шаге приводило бы к максимуму целевой функции на двух последних шагах. Следовательно, необходимо найти максимум выражения (4.22) по всем допустимым управлениям x_{w-1}. Максимум этой суммы зависит от s_{w-2}, обозначается через E^*_{w-1}(s_{w}-_{2}) и называется условным максимумом целевой функции при оптимальном управлении на двух последних шагах. Соответствующее управление x_{w-1} на ( w-1 )-м шаге обозначается через x^*_{w-1}(s_{w}-_{2}) и называется условным оптимальным управлением на ( w-1 )-м шаге.

E_{w-1}^{*}(s_{w-2}) = 
\max\limits_{\{ x_w\}}{\{f_{w} _{-1} (s_{w-2},x_{w-1}) + E_{w}^{*} (s_{w-1})\}} ( 4.23)

С учетом уравнения состояния s_{w-1} = \varphi_{w-1}(s_{w-2}, x_{w-1}) значение целевой функции зависит только от s_{w-2} и x_{w-1}. В результате максимизации только по одной переменной x_{w-1} согласно уравнению (4.23) вновь получаем две функции: E^*_{w-1}(s_{w-2}) и x^*_{w-1}(s_{w-2}).

Далее рассматривается трехшаговая задача: к двум последним шагам присоединяется (w-2) -й и т. д.

Рассмотрим общий случай определения оптимального управления на шаге k ( k = 1, 2, \dots  w ). Обозначим через E^*_{k}(s_{k-1}) условный максимум целевой функции, полученный при оптимальном управлении на w-k+1 шагах, начиная с k -го до конца, при условии, что к началу k -го шага система находилась в состоянии s_{k-1}. Фактически эта функция равна:

E_{k} ^{*}(s_{k-1}) = 
\max\limits_{\{ (x_k,\dots , x_w) \}} {\sum\limits_{i=k}^{w}{f_i(s_{i-1},x_i)}}

В свою очередь

E_{k+1}^{*}(s_{k}) = 
\max\limits_{\{ (x_{k+1},\dots , x_w) \}} {\sum\limits_{i=k+1}^{w}{f_i(s_{i-1},x_i)}}

С другой стороны, целевая функция на w-k последних шагах (рис. 4.13) при произвольном управлении x_{k} на k -м шаге и оптимальном управлении на последующих шагах равна

f_{k}(s_{k-1}, x_{k}) + E^*_{k+}1(s_{k}). ( s_{k}))

Согласно принципу оптимальности, x_{k} выбирается из условия максимума этой суммы, т. е.

E_{k}^* (s_{k-1}) = \max\limits_{\{ x_{k}\}}{\{f_{k} (s_{k-1},x_{k}) + E^*_{k+1} (s_{k})\}}, ( 4.24)

где s_{k} = \varphi_{k}(s_{k}-_{1}, x_{k}), k = 1, 2, \dots , w-1.

 Процесс управления системой  S на последних w-k шагах

Рис. 4.13. Процесс управления системой S на последних w-k шагах

Таким образом, определив из (4.21) значения E^{*}_{w}(s_{w-1}) и x^{*}_{w}(s_{w-1}), а из (4.24) и уравнений состояний (4.19) значения E^{*}_{k}(s_{k-1}) и соответствующие x^{*}_{k}(s_{k-1}) получим последовательности:

E^{*}_{w}(s_{w-1}), E^{*}_{w-1}(s_{w-2}), \dots  , E^{*}_{2}(s_{1}), E^{*}_{1}(s_{0}) -

условные максимумы целевой функции на последнем, на двух последних, на \dots w последних шагах и

x^{*}_{w}(s_{w-1}), x^{*}_{w-1}(s_{w-2}), \dots  , x^{*}_{2}(s_{1}),x^{*}_{1}(s_{0}) -

условные оптимальные управления на w -м, (w-1) -м, \dots , 1 -м шагах.

Используя эти последовательности, можно найти решение задачи при данных w и s_{0}. При фиксированном s_{0} получаем x^{*}_{1} = x^{*}_{1}(s_{0}). Далее из (4.19) определяется s^{*}_{1} =\varphi_{1}(s_{0},x^{*}_{1}) и т. д.:

x^{*}_{1} = x^{*}_{1}(s_{0}) \to  s^{*}_{1} = \varphi _{1}(s_{0}, x^{*}_{1}) \to  x^{*}_{2} = x^{*}_{2}(s^{*}_{1}) \to  s^{*}_{2} = \varphi _{2}(s^{*}_{1}, x^{*}_{2}) \to  x^{*}_{3} = x^{*}_{3}(s^{*}_{2}) \to  \dots  \\
\to  s^{*}_{w-1} = \varphi_{w-1}(s*_{w-2}, x^{*}_{w-1}) \to  x^{*}_{w} = x^{*}_{w}(s^{*}_{w-1}).

Таким образом, получаем оптимальное решение задачи:

X^{*} = (x^{*}_{1}, x^{*}_{2}, \dots , x^{*}_{w}).

Постановка задачи определения оптимальной стратегии нестационарной детерминированной системы управления запасами для решения методом динамического программирования.Чтобы разработать алгоритм решения поставленной в разделе 4.2 оптимизационной задачи, опишем ее в терминах динамического программирования. Объектом управления в данном случае является рассмотренная выше система управления запасами. Управление системой разбивается на w пошаговых управлений ( w = h + 1 = vround (T / I) - максимальное количество возможных поставок в течение периода планирования T, увеличенное на единицу).

Управление x^{k}, переводящее систему S из состояния s_{k-1} в состояние s_{k}, представляет собой величину и момент времени k -й поставки.

В общем случае величина поставки продукции на склад может принимать множество значений P:

P = {p_{1}, p_{2}, \dots , p_{q}, \dots , p_v},

где p_{q} - объем q -го варианта поставки продукции.

Возможные варианты размеров поставок продукции могут быть определены исходя из ограничений (4.17):

P_q = \left \{ \begin{array}{ll}
0, & \text{если } q=1 \\
P_{min} + P_{st} \cdot (q-2), & \text{если } q=2,\dots \nu
\end{array} ( 4.25)

Общее количество вариантов поставки \nu = (P_{max} - P_{min}) / P_{st} + 2.

Каждая поставка p_{q} может быть произведена в любой момент времени i (в общем случае i = 1..n ).

Таким образом, множество возможных управлений X^{k} на шаге k можно представить в виде следующей матрицы порядка n \times \nu:

X^k = 
\left \{ 
\begin{array}{cccccc}
x^k _{11}  & x^k _{21}  & \dots  & x^k _{i1}  & \dots  & x^k _{n1}   \\
x^k _{12}  & x^k _{22}  & \dots  & x^k _{i2}  & \dots  & x^k _{n2}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
x^k _{1q}  & x^k _{2q}  & \dots  & x^k _{iq}  & \dots  & x^k _{nq}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
x^k _{1\nu}& x^k _{2\nu}& \dots  & x^k _{i\nu}& \dots  & x^k _{n\nu}  
\end{array}                                                    
\right\} = \\
\left \{ 
\begin{array}{cccccc}
p_{11}  & p_{21}  & \dots  & p_{i1}  & \dots  & p_{n1}   \\
p_{12}  & p_{22}  & \dots  & p_{i2}  & \dots  & p_{n2}   \\
\dots   & \dots   & \dots  & \dots   & \dots  & \dots    \\
p_{1q}  & p_{2q}  & \dots  & p_{iq}  & \dots  & p_{nq}   \\
\dots   & \dots   & \dots  & \dots   & \dots  & \dots    \\
p_{1\nu}& p_{2\nu}& \dots  & p_{i\nu}& \dots  & p_{n\nu}  
\end{array}                                                    
\right\}

Управление x^{k}_{iq} представляет собой поставку объемом p_{q} в момент времени i на шаге k.

Каждое управление x^{k}_{iq} переводит систему в соответствующее состояние s^{k} \in S^{k}, поэтому размерность множества состояний S^{k} такая же, как и размерность множества возможных управлений X^{k}: n \cdot \nu. Множество возможных состояний S^{k} можно представить в виде следующей матрицы:

S^k = 
\left \{ 
\begin{array}{cccccc}
s^k _{11}  & s^k _{21}  & \dots  & s^k _{i1}  & \dots  & s^k _{n1}   \\
s^k _{12}  & s^k _{22}  & \dots  & s^k _{i2}  & \dots  & s^k _{n2}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
s^k _{1q}  & s^k _{2q}  & \dots  & s^k _{iq}  & \dots  & s^k _{nq}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
s^k _{1\nu}& s^k _{2\nu}& \dots  & s^k _{i\nu}& \dots  & s^k _{n\nu}  
\end{array}                                                    
\right\} = \\
\left \{ 
\begin{array}{cccccc}
z^k _{11}  & z^k _{21}  & \dots  & z^k _{i1}  & \dots  & z^k _{n1}   \\
z^k _{12}  & z^k _{22}  & \dots  & z^k _{i2}  & \dots  & z^k _{n2}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
z^k _{1q}  & z^k _{2q}  & \dots  & z^k _{iq}  & \dots  & z^k _{nq}   \\
\dots      & \dots      & \dots  & \dots      & \dots  & \dots       \\
z^k _{1\nu}& z^k _{2\nu}& \dots  & z^k _{i\nu}& \dots  & z^k _{n\nu}  
\end{array}                                                    
\right\}

Каждое состояние s^{k}_{iq} представляет собой величину запаса z^{k}_{iq} в момент времени i после поставки x_{iq}.

Получим уравнение состояний для данной задачи. Из балансового уравнения (2.5) z_{i}^{j} = z_{i-1}  - Q_{i-1} + p_i ^{j} следует:

z_{i-1} = z_{i} + Q_{i-1} - p_{i} . ( 4.26)

Из условия задачи в конце планового периода в момент времени n система должна находиться в состоянии s ^{\wedge} = z^{\wedge}. Тогда из (4.26) следует:

z_{n-1} = z ^{\wedge}+ Q_{n-1} - p_n; \\
z_{n-2} = z_{n-1}   +  Q_{n-2} - p_{n-1} = z ^{\wedge} + Q_{n-1} - p_n + Q_{n-2 }- p_{n-1}; \\
z_{n-3} = z_{n-2} + Q_{n-3} - p_{n-2} = z ^{\wedge} + Q_{n-1} - p_n + Q_{n-2} - p_{n-1} + Q_{n-3} - p_{n-2}

и т. д.

В общем случае получим:

z_i  = z^{\wedge} + \sum\limits_{r=i}^{r=n-1}{Q_r} - 
\sum\limits_{r=i+1}^{r=n}{p_r} ( 4.27)

Предположим, что под воздействием управления x^{k}_{cq} система переходит из состояния s^{k-1}_{b} в состояние s^{k}_{c} (b \le  c), где s^{k-1}_{b} = z^{k-1}_{b} - уровень запаса в системе в момент времени b после (k-1) -й поставки;

s^{k}_{c} = z^{k}_{c} - уровень запаса в системе в момент времени c после k -й поставки.

Из (4.27) следует:

s_b^{k-1} = z_b = z^{\wedge} + \sum\limits_{r=b}^{r=n-1}{Q_r} - \sum\limits_{r=b+1}^{r=n}{p_r} \\
s_c^{k} = z_c = z^{\wedge} + z^{\wedge} + \sum\limits_{r=c}^{r=n-1}{Q_r} - \sum\limits_{r=c+1}^{r=n}{p_r}

Преобразовав систему этих двух уравнений, получим:

s_c^{k} = s_b^{k-1}+ \sum\limits_{r=c}^{r=n-1}{Q_r} - 
\sum\limits_{r=b}^{r=n-1}{Q_r} - 
\sum\limits_{r=c+1}^{r=n}{p_r}  +
\sum\limits_{r=b+1}^{r=n}{p_r} = \\
= s_b^{k-1} - 
\sum\limits_{r=b}^{r=c-1}{Q_r} + 
\sum\limits_{r=b+1}^{r=c}{p_r} ( 4.28)

Последняя сумма в данном выражении - сумма поставок с момента ( b+1 ) до момента c и равна x^{k}_{cq}, следовательно:

s_c^k = s_b^{k-1}- \sum\limits_{r=b}^{r=n-1}{Q_r} + x^{k}_{cq}

Уравнение (4.28) - это уравнение состояний для решаемой задачи.

Выразим эффективность k -го шага, которая зависит от предшествующего состояния s^{k-1}_{b } и управления на k -м шаге x^{k}_{cq}, переводящего систему в состояние s^{k}_{c}. Эффективность k -го шага выражается из (4.16) и равна величине совокупных затрат, возникающих на шаге k:

E^k = 
\sum\limits_{i=b+1}^{i=c}{d_i(vround(\cfrac{p_i}{V_{tr}})C_{tr} + z_i C_{skl} + z_i C_{pr} U + z_i C_{pr} W) }  = \\
= 
C_{tr} \sum\limits_{i=b+1}^{i=c}{d_i vround(\cfrac{p_i}{V_{tr}})} + (C_{skl} + C_{pr} U +  C_{pr} W) \sum\limits_{i=b+1}^{i=c}{d_i z_i} ( 4.29)

Первое слагаемое в выражении (4.29) представляет собой стоимость транспортировки товара, поставленного на склад с момента времени ( b+1 ) до момента времени c, приведенную к началу отчетного периода с учетом дисконтфактора d. Поскольку на шаге k при управлении x^{k}_{cq} производится всего лишь одна поставка товара в момент времени c в размере p_{cq}, то:

C_{tr} \sum\limits_{i=b+1}^{i=c}{d_i vround \left (\cfrac{p_i}{V_{tr}}\right )} = 
C_{tr} d_c vround \left ( \cfrac{x_{cq}^k}{V_{tr}}\right ) ( 4.30)

Преобразуем второе слагаемое выражения (4.29):

\sum\limits_{i=b+1}^{i=c}{d_i z_i} = 
d_{b+1}z_{b+1} + \dots + d_{c-1}z_{c-1} + d_c z_c

Поскольку за период времени с (b+1) по (c-1) запас не пополняется, а только расходуется, то из (4.18) получим:

z_{b+1} = z_{b} - Q_{b}; \, z_{b+2} = z_{b+1} - Q_{b+1} = z_{b} - Q_{b}- Q_{b+1} и т. д.

Таким образом, при (b+1) < i < (c-1) величину запаса в момент i можно выразить как:

z_{i}= z_{b}- \sum\limits^{r=  i -1}_{r=b}{Q_{r}}; (b+1) < i < (c-1).

В момент времени c производится поставка продукции в размере x^{k}_{cq}=p_{cq}, поэтому из (4.18) имеем:

z = z_{c-1} - Q_{c-1} + p_{c} =
z_{b}-\sum\limits_{r=b}^{r=c-1}{ Q_{r}} +x_{cq}^{k}.

Таким образом, второе слагаемое в выражении (4.29) можно записать как:

(C_{skl} + C_{pr} U +  C_{pr} W) \sum\limits_{i=b+1}^{i=c}{d_i z_i} = \\
= (C_{skl} + C_{pr} U +  C_{pr} W)( \sum\limits_{i=b+1}^{i=c}{(d_i (z_{b}-\sum\limits_{r=b}^{r=c-1}{ Q_{r}}))} +d_c x_{cq}^{k}) ( 4.31)

Подставив (4.30) и (4.31) в (4.29), получим:

E^k = C_{tr} d_c vround \left ( \cfrac{x_{cq}^k}{V_{tr}}\right )
+ \\
(C_{skl} + C_{pr} U +  C_{pr} W)
\left ( \sum\limits_{i=b+1}^{i=c}{\left ( d_i \left (z_{b}-\sum\limits_{r=b}^{r=c-1}{ Q_{r}} \right )\right )} +d_c x_{cq}^{k}\right ) ( 4.32)

Величина E^{k} в (4.32) - эффективность k -го шага, а именно величину совокупных затрат на создание и пополнение запаса с момента (b + 1) (начало шага k) и до момента c (конец шага k), если в момент b система находилась в состоянии s^{k-1}_{b} = z_{b}, и затем было выбрано управление x^{k}_{cq}.

Просуммировав E^{k} для каждого шага k = 1..w, получим величину совокупных затрат на создание и пополнение запаса в течение планового периода T:

E = \sum\limits_{k=1}^{k=w}{E^k} ( 4.33)

Таким образом, необходимо решить следующую задачу: определить такое допустимое управление X , переводящее систему S из состояния s_{0} в состояние s^{\wedge} , при котором целевая функция (4.33) принимает наименьшее значение.

Михаил Агапитов
Михаил Агапитов

Не могу найти  требования по оформлению выпускной контрольной работы по курсу профессиональной переподготовки "Менеджмент предприятия"

Подобед Александр
Подобед Александр

Я нажал кнопку "начать курс" и почти его уже закончил, но для получения диплома на бумаге, нужно его же оплатить? Как оплатить? 

Константин Андреев
Константин Андреев
Россия, Петрозаводск, Петрозаводский государственный университет, 2001
Станислав Кравченко
Станислав Кравченко
Россия, Москва, МЭГУ, 2006