Уровень обслуживания. Какие они бывают? Как рассчитать страховой запас для заданного уровня сервиса?

Уровень обслуживания. Какие они бывают? Как рассчитать страховой запас для заданного уровня сервиса? stanley 2 September, 2008 - 14:19

Уровень обслуживания. Уровень сервиса. Service Level.

 

 

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

Теперь нужно определиться с методикой его расчета и в первую очередь разобраться с понятием уровня обслуживания.

Мы уже затрагивали понятие «уровень обслуживания» (см. например) и упоминали о существующей неоднозначности в его понимании. Дело в том, что не существует единого общепринятого определения этого понятия. Напротив, наблюдается несколько вариантов толкований уровня сервиса. Попытаемся хотя бы изложить наиболее канонические варианты. Как и всегда, всячески приветствуются указания на ошибки, комментарии, добавления, уточнения.

 

 

Предварительные замечания.

 

В дальнейшем я буду использовать сокращения:

SL — Service Level, уровень обслуживания
SS — Safety Stock, страховой запас
LT — Lead Time, общее время на исполнение заказа
T — периодичность пополнения
Q — ожидаемая величина спроса за время T
f(z) — плотность вероятности распределения
F(z) — функция вероятности распределения

 

 

Постановка задачи.

 

 

Виды рисков, от которых мы хотим страховаться

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

Необходимо ввести метрики — способы объективного измерения потерь от таких рисков при разной толщине «подушки безопасности». В качестве таких метрик выступают разные виды уровней обслуживания.

Уровень сервиса.

Type 1. (я поимел наглость именно этот вариант обозвать уровнем обслуживания 1го рода)

Cycle Service Level.

Данный вариант определяет SL как вероятность того, что к моменту поставки остаток будет неотрицательным. Физический смысл данного показателя прозрачен: если мы при неизменных параметрах пополнения выполним достаточно много циклов, то именно такая доля циклов закончится с положительными остатками. Данный тип SL почти соответствует принятому в розничной торговле показателю OSA (On Shelf Availability).

 

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

 

Попробуем прикинуть, что у нас с математикой. В общем виде мне лично известно лишь решение для нормального и логнормального распределения спроса. Здесь мы рассмотрим только первй вариант. Вероятность попадания в зону риска в этом случае определяется функцией Лапласа Φ(z):

Обратная задача, которую мы решаем — нахождение уровня страхового запаса при заданном уровне обслуживания. «Переворачиваем» предыдущую формулу и получаем


где z определяется из уравнения

Уравнение решается, используя таблицы значений функции Лапласа. К примеру, для уровня в 95% ищем значение 2*0.95-1=0.9. Находим в таблице ближайшее значение. В нашем случае одинаково близко находятся два варианта:

0.8990 ⇒ z=1.64
0.9011 ⇒ z=1.65

Впринципе, можно взять посередине z=1.645.

В случае, если спрос распределен по логнормальному закону, последовательность действий следующая:

Аналогично предыдущему случаю находим z, используя таблицы.

Затем пересчитываем его в новое значение, используя формулу

где

Уровень сервиса.

Type 2. (я поимел наглость именно этот вариант обозвать уровнем обслуживания 2го рода)

Unit Fill.

В отличие от первого варианта, данный способ измерения оценивает не просто вероятность возникновения события OOS (Out Of Stock), но оценивает ожидаемое количество спроса, неудовлетворенного в момент обращения из-за отсутствия на стоке. То есть клиент пришел, но продать нечего. И неважно, будет ли этот спрос потерян навсегда или лишь отложен до появления товара.

Оценка «размера» зоны риска делается как соотношение матожидания спроса, не удовлетворяемого из наличного запаса к матожиданию всего спроса клиентов. Соответственно уровень обслуживания определяется как доля спроса, удовлетворенного из наличных запасов:

 

Попробуем прикинуть, что у нас с математикой. Во-первых, матожидание всего спроса нам по условиям задачи уже известно — это как раз величина Q, мы исходили из этого значения, когда планировали график пополнения. Осталось лишь определиться с матожиданием упущенного/отложенного спроса.

 

В учебнике по теорверу матожидание случайной величины z с плотностью распределения f(z) вычисляется как

 

В нашем случае неудовлетворенный спрос равен 0, пока спрос не превысил Q+SS, поэтому интегрировать нужно только по зоне риска

 

В общем виде мне лично известно лишь решение для нормального распределения спроса. Доля потерь в этом случае определяется


Функция L известна как «функция потерь», часто встречается «partial expectation of back orders», «partial expectation function», «partial loss function». Аналитического выражения для этой функции не существует, как правило пользуются таблицей ее значений.

 

Самостоятельно получить таблицу значений можно по формуле

Обратная задача, которую мы решаем — нахождение уровня страхового запаса при заданном уровне обслуживания. «Переворачиваем» предыдущую формулу и получаем

где z определяется из уравнения

Существует также приближенный метод нахождения z. Он основан на аппроксимации функции потерь следующего вида:

коэффициенты выбираются в зависимости от значения L:

L(z) α β γ δ
≤0.0561025 1.94519891 -0.06100591 -2.70426890 0.50840810
0.1428794 ≥ L > 0.0561025 1.83513389 -0.06567952 -2.6970236 0.54505649
> 0.1428794 1.82268153 -0.06609373 -2.65829265 0.56235517

Я лично никогда этим методом не пользовался и его корректность не проверял.

Интересный факт: всегда выполняется

 

Уровень сервиса.

Order Fill.

Другая разновидность уровня обслуживания состоит в том, что принимается во внимание тот факт, что требование на поставку приходит не на один товар независимо, а в рамках целого списка — клиентского заказа. Для некоторых видов бизнеса критичным считается удовлетворение всего такого заказа полностью. Считается, что если хотя бы одна строка заказа не может быть удовлетворена из наличного запаса, следует весь заказ считать неудовлетворенным. Очевидно, это гораздо более жесткий критерий, известный под названием «order fill».

Если считать, что товары в заказе статистически независимы, вероятность удовлетворения заказа равна произведению вероятностей удовлетворения всех его строк, поэтому можно привести данный тип уровня обслуживания к типу cycle service:

и далее по уже показанной методике.

Если спрос распределен по Пуассону, мне встречалась следующая методика:

фактор страхового запаса z определяется из таблицы

SL z
≤ 0.5 0
0.75 0.7
0.80 0.8
0.85 1.0
0.90 1.3
0.95 1.7
0.98 2.1
0.99 2.3
0.999 3.1

Промежуточные значения определяются при помощи линейной интерполяции. Размер страхового запаса далее вычисляется по формуле

где

Привет, Стас!
Спасибо за статью! Весьма ценная! У меня есть пара вопросов по ней, прошу их рассматривать как конструктивную критику :)

  1. ближе к концу ты даешь формулу рассчёта для случая, когда спрос распределен по Пуассону. Обрати внимание, что при увеличении "число строк в заказе" величина SS уменшается. Это противоречит моему пониманию и восприятию мироздания :)
  2. вконце ты рассматриваешь гамма уровень. Создалось впечатления что написано не по источникам а отсебя. дело в том, что все приведенные для этого метода формулы являются нижней оценкой SL. Это всё приближенные вычисления математической модели, а про это ни слова... А ведь SL 1 рода - точный рассчёт модели
  3. в интегралах не указываешь dx - переменную по которой интегрируешь

 
4)  было бы здорово увидеть список литературы, которая использована в/для этой статье(и)

In reply to by inkerman

  1. меня тоже это смущает. мне пока не удалось воспроизвести ход рассуждений, который приводит к такому результату. правда, и времени я на это не смог потратить много :)
  2. совершенно верно. вразумительной информации о математике этого метода мне найти не удалось. лишь общие указания на совершенно гуманитарном уровне. впрочем, я указал в статье, что это мой вариант расчета. а вот почему это нижняя оценка - мне непонятно. там совершенно точная методика, как мне кажется.
  3. а наплевать. там везде понятно, по какой переменной производится интегрирование, так что я не стал загромождать формулы.
  4. а вот тут не получится. материалы собирались в сети из кучи источников долгое время и потом долго пылились на винте (и не на одном). так что точных следов найти уже невозможно. могу лишь рекомендовать гугль :)

In reply to by stanley

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

1.8.11 Расчет страхового запаса по эмпирическому распределению ошибки прогноза спроса,

1.10 Системы с периодическим контролем уровня запасов , 1.12 Поставка многих наименований из одного источника. При написании этого пособия имел доступ только к  Vollmann T. E., Berry W. L., Whybark D. C. Manufacturing Planning and Control Systems и Fogarty D. W., Blackstone J. H., Hoffmann T. R. Production and Inventory Management. Хотелось бы расширить этот список. У нас с этим тяжело. Надеюсь на ответ модератора (это видимо stanley), лучше в почту.

 

Проверил формулу для расчёта функции, обратной стандартной функции потерь L(z), двумя методам: итерационным решением уравнения методом секущих и по аппроксимации SPP (Silver-Pyke-Peterson). Функция работает, но ошибка для z уже во втором знаке. Рекомендую метод SPP - он проще в реализации. Подробности и шаблон расчёта (Google Docs)

 

Fill Rate L(z) z z - SPP z - Секущих
60% 1,8746 -1,8349 -1,8624 -1,8624
80% 0,9373 -0,8000 -0,8216 -0,8216
95% 0,2343 0,3848 0,3888 0,3887
99% 0,046867 1,2782 1,2861 1,2863

 

 

           

 

 

Вечер добрый, Станислав!

Когда окинула статью беглым взглядом, ужаснулась: какой кошмар! зачем столько формул для простого расчёта уровня сервиса!

А потом прочитала, что не для расчёта уровня сервиса, а для его прогноза, и выдохнула.

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

Но это мы считали на уровне Unit Fill Rate - прогнозировать Order Fill Rate дело крайне неблагодарное. Хотя формулу с интегралом надо сохранить. Может, и пригодится :)

 

In reply to by Maria Ermolina

[quote=Maria Ermolina]

Вечер добрый, Станислав!

[/quote]
ничего себе вечер, половина второго!
с добрым утром, рады видеть гуру scm в нашей деревне :)

[quote]

Когда окинула статью беглым взглядом, ужаснулась: какой кошмар! зачем столько формул для простого расчёта уровня сервиса!

А потом прочитала, что не для расчёта уровня сервиса, а для его прогноза, и выдохнула.

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

Но это мы считали на уровне Unit Fill Rate - прогнозировать Order Fill Rate дело крайне неблагодарное. Хотя формулу с интегралом надо сохранить. Может, и пригодится :)

[/quote]

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

сам показатель Order Fill Rate вполне себе используют, но вот чтобы его прогнозировали, я тоже не видела. Да и неблагодарное это занятие - даже если ты спрогнозируешь Unit Fill Rate - никто же не знает, как именно клиент будет компоновать свой заказ. Тут такие вероятности получаются и диапазоны, что для бизнеса подобная оценка имеет мало ценности.

А что касается того, как мы обходились без вероятностей, прогнозируя Unit Fill Rate...

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

In reply to by Maria Ermolina

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

Что по этому поводу говорят ведущие эксперты в стране (с) из brightcolours?

Стас, по поводу обслуживания 2-го типа его думаю было бы правильнее оценивать как
SL2 = 1 - M[ backorders / totaldemand ]
Таким образом оценивается матожидание сервиса.
С одной стороны есть минусы: 1) сложнее посчитать и 2) не привязывается к матожиданию потерь  M[ backorders]
С другой стороны есть плюсы: при таком подходе исключаются бредовые ситуации с SL:
Например, если  SL2 = 1 - M[ backorders ] / M[ totaldemand ]  , то при небольшом Q и малом страховом запасе получается SL2<0. Или же страховой запас может получиться отрицательным.