Расчёт страховых запасов для двух типов уровней сервиса

15/03/2010
Подписка RSS

страховые запасы, cycle service level, fill rate

Цель настоящей публикации – предоставить оптимизационный инструментарий специалистам в области управления цепочками поставок при расчётах страховых запасов по уровню сервиса первого и второго рода.

Описание задачи

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

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

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

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

В этой ситуации нужен критерий, с помощью которого можно было бы ограничить верхнюю планку для страхового запаса. Первое, что приходит в голову, это возможность возникновения дефицита. Например, если наш газетчик работает 300 дней в году и в течение этого периода он считает для себя приемлемым, чтобы за год выдалось 6 дней, когда хотя бы одному клиенту в течение дня он не сможет продать газеты по причине их отсутствия. В этом случае, мы говорим о вероятности возникновения дефицита и она равна p=6/300=2%. Обратной величиной будет вероятность работы без дефицита, иначе называемая уровнем сервиса (циклическим уровнем сервиса, cycle service level). В нашем примере: 100%-2%=98%.

Вторым критерием мог бы стать показатель упущенного спроса. Допустим, газетчик, в течение года, покупая каждый день 100 газет, считает возможным к концу каждого дня отпустить двух клиентов без своего товара (очевидно, отдав часть доли рынка своему собрату). В этом случае, упущенный спрос составит 2 газеты/сут, средний спрос - 102 газеты/сут, показатель насыщения спроса (102-2)/102 =98%. Показатель насыщения спроса называют также уровнем сервиса второго рода (fill rate).

Очевидно, что между первым и вторым показателями существует связь. На графике показано, как выглядит уровень сервиса первого и второго рода при различном количестве страховых запасов, выраженных в единицах стандартного отклонения спроса (в этом случае, уровень запасов будет равен среднему спросу + n единиц стандартного отклонения).

Из графика видно, что показатель насыщения спроса задаёт гораздо более мягкие требования к количеству страховых запасов для удовлетворения уровня сервиса.

Из этого же графика следует, что для удовлетворения спроса на 98% по первому уровню сервиса, необходимо (2*среднеквадратическое отклонение) газет, а на 99,9 – уже 3*среднеквадратическое отклонение.

Чтобы перейти к среднеквадратическому отклонению от среднего, можно умножить его на 1,25, т.е. для 98% уровень страховых запасов будет 2*1,25*(среднее отклонение). При среднем отклонении спроса от предложения в 2 газеты/сут, для обеспечения уровня страховых запасов в 98% нужно 2,5*2 = 5 дополнительных газет к среднему потреблению.

Из вышеприведённых рассуждений следует важное свойство, озвученное Виллемсом и Мэнари (S. Willems, M. Manary, 2008):

Если прогноз спроса не смещён в ту или иную сторону и распределение спроса нормальное, то для обеспечения высоких уровней сервиса (95% и более), уровень страховых запасов должен быть чуть больше, чем самые большие отклонения прогноза от продаж в недавней истории.

Математическое выражение формулы страховых запасов имеет лаконичный и понятный вид:

\[SS=z\cdot\sigma\]

Показатель z рассчитывается для каждого значения целевого уровня сервиса.

Для уровня сервиса первого рода формула для расчёта z в Excel имеет вид:

z = НОРМСТОБР(уровень сервиса)

С уровнем сервиса второго рода ситуация куда сложнее. Дело в том, что для расчёта показателя z требуется знать обратную стандартную функцию потерь, которая показывает, какую часть спроса (в натуральных единицах) при заданном уровне сервиса второго рода мы потеряем в виде упущенного спроса.

В MS Excel стандартную функцию потерь L(z) можно посчитать по формуле:

L(z) = НОРМРАСП (z, 0, 1, ЛОЖЬ) − (1−НОРМСТРАСП(z)) ∗ z

Но для расчёта z нам нужно знать обратную стандартную функцию потерь, явного выражения для которой не существует. Из этой ситуации есть три выхода:

  • Пользоваться таблицами для нахождения z по обратной стандартной функции потерь
  • Численно решать уравнение для подбора корней z (например, методом секущих)
  • Использовать аппроксимацию Сильвера-Пайка-Петерсона (E. Silver, D. Pyke, R. Peterson, 1998):

\[z=\frac{a_0+a_1k+a_2k^2+a_3k^3}{b_0+b_1k^2+b_3k^3+b_4k^4}\] \[k=\sqrt{\ln{\left(\frac{25}{L(z)^2}\right)}}\]

Коэффициенты ai, bi равны:

aibi
a0 = −5,3925569b0 = 1
a1 = 5,6211054b1 = −7,2496485·10−1
a2 = −3,8836830b2 = 5,07326622·10−1
a3 = 1,0897299b3 = 6,69136868·10−2
 b4 = −3,29129114·10−3

Усложняем условия

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

Итак, наша задача расширить приведённую выше модель на систему, в которой есть запаздывание между размещением заказа и его приходом на склад. Если этот промежуток времени определяется средним временем транспортировки L и горизонтом планирования R, то уровень страховых запасов можно оценить как:

\[SS=z\cdot\sigma\cdot\sqrt{L+R}\]

Заметьте, что это оценка не следует напрямую из свойств нормального распределения, а является аппроксимацией для случая, когда величина L распределена нормально ~ N (L;0).

Вернёмся к нашему продавцу газет. Представим, что теперь он осуществляет планирование раз в неделю по пятницам, формируя заказы на закупку на неделю вперёд, срок поставки от издателя составляет 3 дня. В этом случае, L+R=7+3. Важный момент: теперь при расчёте коэффициента z, мы должны учитывать вероятность возникновения дефицита не в один из дней, как ранее, а в течение периода L+R. В нашем случае период равен 10, если мы разобьем год на декады, то в условиях, когда в любых 5 декадах из 36 возникал дефицит, уровень сервиса первого рода будет 5/36 ~ 98%.

Давайте ещё раз внимательно посмотрим на нашу формулу:

  • Значительную роль в ней играет горизонт планирования R. Если бы наш продавец газет осуществлял планирование на ежедневной основе (скользящий график планирования), заглядывая вперёд на семь дней, то показатель L+R был бы равен 4 и объём страховых запасов при переключении с фиксированного горизонта планирования на скользящий уменьшился более чем на 60%. Понятно, что не во всяком производстве можно просто перейти с фиксированного горизонта на скользящий, особенно, если используется система планирования MRP-II
  • На время R будет влиять и другой фактор: минимальный размер партии, заданный поставщиком или экономически обоснованный размер заказа, рассчитанный нами. Давайте представим себе, что наш газетчик решил заняться продажей книг и у него есть альтернатива: покупать маленькими партиями «точно вовремя» у оптовика или большим партиями у самого издательства. Очевидно, что при крупных партиях закупки большую часть времени на складе будет находиться значительное количество продукции и вероятность дефицита возникнет только в самом конце периода. Это означает, что при повышении объёма закупок и увеличении R, уровень сервиса будет также увеличиваться… не бесплатно: за счёт стоимости оборотного капитала
  • Второй важный показатель L. В нём кроется значительная часть наших страховых запасов. Чем короче плечо поставки, тем меньше страховые запасы. Очевидно, что на страховые запасы будет оказывать влияние и стабильность поставщиков, на которую с точки зрения менеджмента гораздо сложнее повлиять, чем на выбор местоположения поставщиков
  • Показатель ст. отклонения спроса – это мера, отражающая степень нашей осведомлённости о спросе. Среднеквадратическое отклонение зависит как от качества работы отдела  прогнозирования, так и от неопределённости спроса. Следует отметить, что формула расчёта страховых запасов крайне чувствительна к смещённости прогнозов и предполагает, что до оптимизации страховых запасов проведена работа по повышению качества прогнозирования.
  • Наша формула для расчёта страховых запасов предполагает, что время L распределено нормально, но так ли это на самом деле? Давайте рассмотрим случай, когда мы размещаем заказы у поставщика, а тот использует систему «отложенных заказов», если не сможет удовлетворить спрос в текущем цикле планирования. В этом случае, срок поставки может увеличиться вдвое, втрое и даже вчетверо, если поставщик не имеет возможности удовлетворить спрос. В результате, параметр L не будет подчиняться нормальному распределению, и рассматриваемая формула потребует корректировки.

От теории к практике

Оценка среднеквадратического отклонения

Для расчётов нам потребуется оценить средний спрос и его среднеквадратическое отклонение от прогноза (далее в формулах спрос в момент времени i будет обозначаться Di, а прогноз - Fi). Со средним спросом ситуация понятна, а вот методов расчёта среднеквадратического отклонения в литературе предлагается несколько:

  • Если мы имеем данные о продажах, а информация о прогнозе нам не доступна, то нам придётся использовать среднеквадратическое отклонение спроса по выборке данных по отгрузкам (или продажам)
  • Если у нас есть информация о прогнозном спросе, то для верхней оценки стандартного отклонения можно использовать среднеквадратическое отклонение спроса от прогноза по выборке (SDFE), а для нижней - среднеквадратическое отклонение по генеральной совокупности (RMSE)

В MS Excel формулы для SDFE и RMSE выглядят следующим образом (в качестве аргумента выступает ряд данных с отклонением прогноза от спроса):

SDFE = СТАНДОТКЛОН(Fi-Di)
RMSE = СТАНДОТКЛОНП(Fi-Di)

При использовании данных прогнозирования, нужно отдавать себе отчёт, что качество процесса прогнозирования имеет критическую значимость для оценки уровня страховых запасов. Опасность таит в себе не низкая точность прогноза (она тоже), а смещённость (bias) данных прогноза. Виллемс и Мэнари рекомендуют использовать следующую оценку смещённости для ряда прогнозных данных (рассчитывается для каждого элемента i ряда данных): b = Fi/(Fi+Di)

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

Ещё одним практическим аспектом применения формул для расчёта страховых запасов является важность использования единого интервала времени для всех расчётов. Например, если мы выбрали для R неделю, то спрос и прогноз должны быть заданы в шт/нед, а L - в неделях. Что делать, если данные прогноза и спроса заданы помесячно, а мы собираемся использовать недельный горизонт планирования?

В этом случае, мы рассчитаем среднее значение и среднеквадратическое отклонение для имеющихся данных, агрегированных по месяцам, а затем выполним два преобразования по Крюгеру (G. Kruger, 1997):

  • Для среднего спроса в неделях разделим месячное значение на 4
  • Для стандартного отклонения в неделях умножим месячное стандартное отклонение на 0,5

Оценка текущего уровня сервиса

Для уровня сервиса первого рода достаточно проанализировать частоту падения до нуля уровня запасов SKU на складе готовой продукции за прошедшие периоды (в качестве окна для анализа следует выбирать R+L). Например, мы используем недельное скользящее планирование и осуществляем прямые поставки в течение нескольких часов ближайшим клиентам. Если по любому SKU за год наблюдаем 7 недель, когда возникал дефицит, то текущий уровень сервиса будет равен 1-(7/52) =87%. Следует отметить, что уровень сервиса – это величина, заданная для двух сторон взаимодействия. В данном случае, мы проводим усреднение для всех клиентов по SKU, используя средний срок поставки L. На этом пути можно продвинуться дальше и получить средний уровень сервиса 9или средневзвешенный) для всех клиентов для всех SKU.

Показатель насыщения спроса отражает ту часть спроса, которая была потеряна в результате нехватки запасов за период. Как оценить текущий уровень насыщения спроса по имеющимся данным? Следует иметь в виду, что если в информационной системе компании уже реализован сбор данных по оценке эффективности цепочки поставок (например, по модели SCOR), то у нас на руках могут оказаться следующие показатели уровня сервиса:

  • Volume fill rate (VFR) – процент количества (в натуральном выражении) вовремя отгруженных SKU к заказанному количеству за период
  • Line count fill rate (LFR) – количество вовремя отгруженных строк заказов к общему числу строк принятых заказов
  • Case fill rate  (CFR) –  количество вовремя отгруженных коробок продукции к общему заказанному числу коробок (без разбивки по SKU)

Помните, что математические процедуры для расчёта приведённых метрик отличаются в зависимости от реализации. CFR и LFR – удобные метрики уровня сервиса благодаря тому, что они усреднены по всем SKU. Очевидно, что второй тип сервиса соответствует показателю VFR. При определённых условиях VFR может приближаться к показателю LFR или CFR, но в общем случае, это разные меры уровня сервиса.

Определение целевого уровня сервиса

Итак, у нас есть значение базового уровня сервиса, и мы хотели бы определить целевой уровень. В редких случаях, существует возможность оценить оптимальный уровень сервиса аналитически. Например, в задаче продавца газет критическое соотношение определяет оптимальный уровень сервиса. Отношение выводится как минимум функции совокупных затрат на хранение продукции и потерянного спроса: SL=(p-c)/(p+h), где p — удельные потери от неудовлетворённого спроса, c — закупочная стоимость, h — удельные затраты на хранение в течение рассматриваемого периода.

В общем случае, не существует универсального рецепта определения целевого уровня сервиса, хотя подход остаётся прежним: найти приемлемый баланс между уровнем сервиса и расходами на его поддержание. При этом следует учитывать, что уровень сервиса – это величина, заданная для каждой пары SKU-клиент. В связи с этим, компании используют несколько целевых уровней сервиса для разных групп SKU (например: ABC-XYZ) и групп клиентов (например: сети, розница, оптовики).

Чаще всего, уровень сервиса выбирают, исходя из рыночных ожиданий (проведя опрос клиентов) или ограничений по затратам на хранение страховых запасов. В результате, выбранный уровень сервиса базируется на некой «популярной» цифре в диапазоне 90-99% и редко имеет экономическое обоснование.

Реализация проекта перехода к целевому уровню сервиса

Не смотря на то, что целевым уровнем сервиса может быть некоторая условно выбранная цифра, она может применяться в проекте оптимизации запасов. Для этого:

  • Определяется период, в течение которого будет осуществляться снижение страховых запасов с текущего уровня до целевого
  • Определяется профиль, по которому будет осуществляться снижение. Это может быть прямая или сигмоидная функция (темпы снижения в начале проекта и в конце наименьшие)
  • Определяется регламент обновления данных по страховым запасам в информационных системах
  • Осуществляется отслеживание и анализ данных о затратах в цепочке поставок и фактическом уровне сервиса
  • При достижении некоторого порогового значения фактически наблюдаемого уровня сервиса и затрат (или снижении уровня запасов до целевого) оптимизацию завершают

Заключение

Представленные в данной статье модели существуют уже более полувека. На данный момент разработаны гораздо более совершенные математические методы расчёта страховых запасов в многоэшелонных системах.

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

  • В организации существует и эффективно работает функция прогнозирования спроса, осуществляется контроль и улучшение показателей прогнозирования. Прогнозирование осуществляется по информации о фактическом спросе, а не данным о продажах
  • В организации есть чётко определённая и работающая система планирования с жёстко заданными горизонтами и алгоритмами работы
  • В компании используется информационная система, хранящая надёжную информацию об истории запасов с достаточной степенью дискретности и реализующая алгоритмы планирования запасов. События возникновения дефицита регистрируются и используются как входные данные на совещаниях по планированию (S&OP)
  • В информационной системе организации можно получить доступ к трём объектам данных: первичным заявкам клиентов, принятым к исполнению заказам, фактическим отгрузкам. Благодаря этому, можно анализировать:
    • Историю преобразования заявок в заказы с учётом отмены и изменения заявок клиентом, формирования отложенных заказов (back-orders), замены заказанных продуктов их субститутами
    • Разницу между плановой и фактической датами и количеством, фактически отгруженным клиенту
    • Фактическое время и количество доставленной до конечного потребителя продукции для оценки показателя On-Time-In-Full (OTIF)