Оптимальный размер заказа в стиле fashion

Оптимальный размер заказа в стиле fashion

Залача, которую мы здесь будем решать — определение оптимального размера заказа. Но в данном случае это будет не классический EOQ (Economic Order Quantity), который решался Уилсоном. В классической постановке de facto решается задача оптимизации периода между поставками, или, что то же самое, оптимизация рабочего запаса.

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

Классический пример такой задачи - «задача газетчика». Я должен определить, сколько экземпляров газеты мне следует заказать для продажи. Понятно, что на следующий день эти газеты никому не нужны или в лучшем случае я их сдам в цветочный павильон по копейке за пучок. Так что создавать большой запас — серьезно пролететь. С другой стороны слишком малый заказ приведет к тому, что газет не хватит и прибыль будет недополучена. Моя задача — найти некий компромисс, создать стратегию, при которой в долгосрочной перспективе моя прибыль будет максимальной.

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

Итак, наша картинка динамики запаса внутри периода выглядит примерно так:

S — искомый размер закупки S0 — матожидание спроса за период z — два варианта траектории запасов f(z) — плотность вероятности рапределения спроса за период

Начнем оценивать наши потенциальные потери. Как известно, матожидание случайной величины Z(z) есть

Количество непроданного товара составляет (см. рисунок)

0, если z>S (S-z), если z<S

Количество товара, которого не хватило, составляет (см. рисунок)

0, если z<S (z-S), если z>S

Пусть h — потери от одной оставшейся в конце периода газеты, d — недополученная прибыль на нехватку одной газеты, r — стоимость кредитования на покупку одной газеты за весь период, тогда полная функция потерь

Для нахождения минимума этой функции нужно решить уравнение L'(S)=0

Для данного случая решение уравнения выглядит как

где F(S) — интегральная функция распределения спроса за весь период.

Попробуем прикинуть на примерчике. Поскольку я не знаю, сколько стоят газеты (лет 15 не покупал), будем торговать хлебом.

Цена закупки 20р Цена продажи 28р Остатки на следующий день я смогу пристроить на свиноферму по 16р Стоимостью денег на таком коротком промежутке я буду пренебрегать

Пусть дневной спрос распределен по нормальному закону с параметрами S0=300, σ=50. Тогда, пользуясь таблицей значений функции Лапласа, находим соответствующее значение аргумента

А теперь попробуем осмыслить результат. При данном распределении спроса нам наиболее выгодно (принесет максимальную прибыль) закупать ежедневно 322 штук. И это при том, что рассчитываем мы продать 300. Эти 22 — не что иное, как страховой запас, который мы создаем на случай увеличения спроса. И размер его мы определили, соотнеся риски потерь при колебаниях спроса в ту или иную сторону.

Из этой математики видно, что при высоких штрафах за непроданные остатки страховой запас может оказаться отрицательным, т.е. мы сознательно должны планировать дефицит как наиболее выигрышную стратегию. Это происходит при условии F(S)<0.5. В частности, если не учитывать стоимость денег, это произойдет при h>d. Если предположить, что у нас нет под боком свинофермы в нашем примере,

Ну и напоследок. Мы рассматривали очень короткий период, когда стоимостью денег можно пренебречь. Но как только мы начинаем заниматься fashion industry, где длина функционального цикла составляет 6-12 месяцев, без этого уже не обойтись.

to be continued.

Комментарии

#1 вопрос

Очень интересное решение. К сожалению, разобраться не так уж просто :(

F(S)=0.67 - я дошёл до этого пункта - дальше не совсем понятно, куда двигаться.

Посмотрел таблицу функции нормального распределения, а что дальше. не понятно.

Пусть дневной спрос распределен по нормальному закону с параметрами S0=300, σ=50.

S0=300, σ=50 откуда берутся?

И откуда появляется 0,44

Если Вам не сложно, можно объяснить поподробней?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#2 ответ :)

прошу прощения за задержку, был в отпуске.

мы получили оптимальное значение

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

где Ф - уже стандартная функция распределения, а ее значения табулированы. Поскольку 0.67=0.5+0.17 (то есть ищем площадь в 0.17 справа от центра) - смотрим в таблицу например http://www.mathauto.ru/calc/tfl.htm и обнаруживаем, что такая площадь обеспечивается при значении аргумента 0.44.

Рекомендую внимательно смотреть на таблицы функции Лапласа - в одних справочниках (как в данной ссылке) дается значение площади на промежутке [0,z], в других - на промежутке [-z,z], то есть ровно вдвое больше.

SY всякая задача имеет простое красивое неправильное решение

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#3 Благодарю Вас :)

Теперь намного понятнее :)

Пусть дневной спрос распределен по нормальному закону с параметрами S0=300, σ=50 - я Вас ещё немножко помучаю.

У меня есть экспертные данные. Как найти мат. ожидание по статистике. В формуле мат. ожидания непрерывной случайной величины присутствует х - результат случайной величины и f(x) - и 1-я производная от функции рапределения, она же плотность распределения. Мы принимает условие, что распределение нормальное, т.е. известны и F(x) и f(x). Простите за глупый вопрос, как зная всё это самым простым способом найти Мо и СКО ?

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

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

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

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

SY всякая задача имеет простое красивое неправильное решение

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#5 Благодарю Вас, за разъяснение

Благодарю Вас, за разъяснение :)

Обычно я беру период 13 недель расход и дефектуру (отсутствие остатка), далее подбираю 7 основных трендов + к ним: холт-винтерс, arma и arima - выбираю по минимальной ошибке. За 3 года не беру, поскольку при заказе на 5-10 дней нет смысла оценивать, последние данные итак влияют на тренд. Если нет непрерывной статистики за последние 4 недели, то оцениваю только последний месяц по дням с расчётом средних по весовым коэффициентам недель и расчётом СКО. Всё это считается по любому массиву данных в matlab.

Qmax я планировал считать, как Qmax = Vsr*(s+d+w) + Vsr*(d+w)*СКО. Где: Vsr - средняя скорость, расчитанная прогнозом; s - страховой запас в днях для отсутствия дефектуры при задержки поставки; d - кол-во дней доставки с момента заказа; w - интервал в днях между заявками. Система для заказа товара с малыми периодами доставки 3-4 дня. Само СКО я ограничивал в зависимости от группы АВС, например, "А" не более 0,5, "В" не более 0,2 и "С" равным 0.

Теперь хочу использовать подход данной статьи к расчёту Qmax. Как Вы считаете, можно использовать СКО, которое расчитывалось по МНК подбором трендов или другим методам прогнозирования и представить его, как СКО нормального распределения (по определению конечно же нет).

При прогнозировании само СКО показывает на вероятность отклонения прогнозных данных от фактических и в некоторой степени близко к СКО нормального распределения.

Ведь так соблазнительно использовать всё это не только для нормального распределения, которого так мало в нашей ненормальной работе.

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

пожалуй, я возьму таймаут на размышления :)

SY всякая задача имеет простое красивое неправильное решение

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

очень много в результате неясных моментов.

какие имеются в виду "7 основных трендов" и как они подбираются? при длине данных в 13 недель нам неоткуда получить сезонность, какие могут быть winters и arima? фраза "ограничить СКО" мне вообще непонятна, это объективный показатель, причем никак не связанный с ABC. в формуле d+w в данном случае есть не что иное, как время реакции системы, тогда если переписать в виде Qmax = Vsr*w + Vsr*(d+s) + Vsr*(d+w)*СКО, фактически первое слагаемое - рабочий запас. значит, все остальное - страховой. непонятно, из каких соображений именно так.

Обычно используется либо опора на СКО, тогда страховой примерно Vsr*(d+w)*СКО*z, где z - фактор, учитывающий вид распределения и уровень сервиса, либо вообще на СКО не смотрят, а добавляют экспертным путем сколько-то дней запаса в виде страхового, как раз то, что у нас под видом d+s. То есть здесь сумма двух методов, причем в обоих чисто экспертное мнение.

так что я бы тут для начала с методологией поразбирался :)

SY всякая задача имеет простое красивое неправильное решение

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#8 Re: хм.

добрый день! был в ссылке, не мог писать.

По трендам. Основные тренды: линейный, обратная функция, логарифм, степенная, экспонента, парабола, полиномы 2 и 3 и т.д. Некоторое подобие есть в екселе - при пострении графиков добавление трендов. Подбираются все тренды, далее оценивается сезонность (но в данной случае сезонность не оценивается, т.к. период небольшой), далее идёт расчёт ошибки. Про сезонность Вы полностью правы, я написал холт-винтерс автоматом, имеется ввиду только Хольт (т.к. именно Уинтерс или Винтерс добавил сезонность в формулу). arma и arima и расчитывается без сезонности, хотя и сезонность можно тоже учитывать (но в данном случае нет необходимости).

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

Страховой запас S - именно стаховой запас в днях, т.е. сколько дней торговая точка будет работать при сбое поставки, например, 7 дней.

А вот возможный рост продаж, данный страховой запас не учитывает. Именно поэтому я хотел добавить некий запас по СКО Vsr*(d+w)*СКО - то есть подержать немножко товара, расчитывая на возможный рост продаж на величину отклонения СКО. Отсюда и мысль привязать к АВС, чтобы не держать такой запас для неходовых позиций, например, держать только для А. АВС пересчитывается по каждой торговой точке 1 раз в неделю.

z - фактор - не совсем понятно, чем он лучше, особенно когда вид распределения не так просто определить через формулы, например, по 6500 позициям по 400 торговым точкам. Учитывая, что дефектура (отсутствие товара) в аптечном ритейле присутствует постоянно. Вы сами писали об определении вида распределения и о ценности математических методов :)

Вот я и хотел подойти к вопросу о "дополнительном запасе", использовав Вашу статью. То есть заменить Vsr*(d+w)*СКО на что-то более интересное. Что заменить надо, это понятно. Хочется оценить именно дополнительный запас с точки зрения колебания спроса и возможных потерь, а не страховой запас созданный для уменьшения дефектуры при сбое поставки, который в аптеке просто должен быть - и это опять практика.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#9 Re: Оптимальный размер заказа в стиле fashion

Про "потери от одной оставшейся в конце периода газеты"

Если такой потери в явном виде нет? Т.е. на конец периода на складе лежит товар, который в ближайшие полгода продан не будет по причине сезонного х-ра потребления. Логично ли из цены закупки вычесть стоимость хранения единицы и, условно говоря, потери от инфляции? С последним относительно ясно. По первому есть желание привязаться к среднему запасу и оборачиваемости, но оборачиваемость-то у нас на ближашие полгода стремится к 0, а учитывать оборачиваемость сезона - противоричит здравому смыслу ))) Может, принять практически не меняющийся ТЗ за const. и затраты по хранению исчилить соответственно?

No beast so fierce but knows some touch of pity. But I know none, and therefore am no beast.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
#10 Дмитрий_Л wrote: добрый

добрый день! был в ссылке, не мог писать.

По трендам. Основные тренды: линейный, обратная функция, логарифм, степенная, экспонента, парабола, полиномы 2 и 3 и т.д. Некоторое подобие есть в екселе - при пострении графиков добавление трендов. Подбираются все тренды, далее оценивается сезонность (но в данной случае сезонность не оценивается, т.к. период небольшой), далее идёт расчёт ошибки. Про сезонность Вы полностью правы, я написал холт-винтерс автоматом, имеется ввиду только Хольт (т.к. именно Уинтерс или Винтерс добавил сезонность в формулу). arma и arima и расчитывается без сезонности, хотя и сезонность можно тоже учитывать (но в данном случае нет необходимости).

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

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

я бы скорее обратил внимание именно на сезонность - она там явно есть и вполне объяснима.

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

"нет непрерывной статистики" - под этим подразумевается "грязь" из-за дефектуры или в самом деле нет данных о продажах?

Страховой запас S - именно стаховой запас в днях, т.е. сколько дней торговая точка будет работать при сбое поставки, например, 7 дней.

А вот возможный рост продаж, данный страховой запас не учитывает. Именно поэтому я хотел добавить некий запас по СКО Vsr*(d+w)*СКО - то есть подержать немножко товара, расчитывая на возможный рост продаж на величину отклонения СКО. Отсюда и мысль привязать к АВС, чтобы не держать такой запас для неходовых позиций, например, держать только для А. АВС пересчитывается по каждой торговой точке 1 раз в неделю.

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

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

слагаемое Vsr*(d+s), входящее в страховой запас, говорит о том, что у нас всегда поставка опаздывает на s дней.

в слагаемом Vsr*(d+w)*СКО следует (из контекста) под СКО подразумевать безразмерную относительную ошибку СКО/Vsr. так? тогда здесь видимо подразумевается величина отклонения спроса от Vsr, связанная с случайностью - (d+w)*СКО. по смыслу наших рассуждений мы измеряли СКО по дням, значит на самом деле должно быть sqrt(d+w) * СКО.

z - фактор - не совсем понятно, чем он лучше, особенно когда вид распределения не так просто определить через формулы, например, по 6500 позициям по 400 торговым точкам. Учитывая, что дефектура (отсутствие товара) в аптечном ритейле присутствует постоянно. Вы сами писали об определении вида распределения и о ценности математических методов :)

Вот я и хотел подойти к вопросу о "дополнительном запасе", использовав Вашу статью. То есть заменить Vsr*(d+w)*СКО на что-то более интересное. Что заменить надо, это понятно. Хочется оценить именно дополнительный запас с точки зрения колебания спроса и возможных потерь, а не страховой запас созданный для уменьшения дефектуры при сбое поставки, который в аптеке просто должен быть - и это опять практика.

так ведь на самом деле когда вы говорите, что назначаете СКО для группы "А" = 0.5, вы фактически назначаете этот самый z :)

что касается нормальности распределения - в аптечном ритейле его практически нет.

пример работы с данными ненормального вида здесь уже публиковали - внушает оптимизм.

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

📎📎📎📎📎📎📎📎📎📎