00:00 Введение
02:53 Решения против артефактов
10:07 Экспериментальная оптимизация
13:51 История до этого
17:01 Сегодняшние решения
19:36 Манифест количественной цепи поставок
21:01 Проблема распределения запасов в рознице
24:49 Экономические силы, влияющие на SKU магазина
29:35 Придание реальности будущему
32:41 Придание реальности опциям - 1/3
38:25 Придание реальности опциям - 2/3
43:02 Придание реальности опциям - 3/3
44:44 Функция вознаграждения за запасы - 1/2
51:41 Функция вознаграждения за запасы - 2/2
56:19 Приоритезированное распределение запасов - 1/4
59:59 Приоритезированное распределение запасов - 2/4
01:03:39 Приоритезированное распределение запасов - 3/4
01:06:34 Приоритезированное распределение запасов - 4/4
01:12:58 Сглаживание потока на складе - 1/2
01:16:48 Сглаживание потока на складе - 2/2
01:22:12 Функция вознаграждения за действие
01:25:02 Реальный мир хаотичен
01:27:38 Заключение
01:30:00 Следующая лекция и вопросы аудитории

Описание

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

Полный транскрипт

Slide 1

Добро пожаловать в эту серию лекций по цепям поставок. Меня зовут Йуаннес Верморель, и сегодня я представлю «Распределение запасов в рознице с вероятностными прогнозами». Распределение запасов в рознице — это простая, но основополагающая задача: когда и сколько запасов перемещать в любой момент времени между распределительными центрами и управляемыми вами магазинами? Решение о перемещении запасов зависит от будущего спроса, поэтому необходим некий прогноз спроса.

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

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

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

Slide 2

Первый шаг в решении задач цепи поставок — это выявление настоящих решений для цепи поставок. Решение цепи поставок имеет прямое, физическое, ощутимое воздействие на цепь поставок. Например, перемещение одной единицы запаса из распределительного центра в магазин реально; как только вы это делаете, на полках магазина появляется одна дополнительная единица, а в распределительном центре исчезает одна единица, которую уже нельзя перенаправить в другое место.

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

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

Например, начнем с резервного запаса. Этот запас не является реальным; у вас нет двух видов запасов — резервного и рабочего. Существует только один запас, и единственное решение, которое можно принять, — это необходимость его увеличения или нет. Пополнение запасов в определенном количестве реально, но резервный запас таковым не является. Аналогично, уровень сервиса тоже не является реальным. Уровень сервиса сильно зависит от модели. Действительно, в розничном спросе данные о продажах скудны. Таким образом, если вы возьмете любую конкретную SKU, обычно у вас слишком мало данных, чтобы вычислить значимый уровень сервиса, просто изучив SKU. Подход к уровню сервиса осуществляется с помощью методов моделирования и статистических оценок, что приемлемо, но, опять же, это артефакт, а не реальность. Это буквально математическая точка зрения на вашу цепь поставок.

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

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

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

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

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

Slide 3

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

Еще более проблематично то, что сама функция потерь в основном неизвестна. Функцию потерь можно как-то приблизительно оценить, но только сопоставление этой функции с обратной связью из реального мира, которую вы можете получить от своей цепи поставок, даст вам достоверную информацию об адекватности этой функции потерь. Это не вопрос математической корректности; это вопрос адекватности. Отражает ли эта функция потерь, являющаяся математической конструкцией, в достаточной мере то, что вы пытаетесь оптимизировать в своей цепи поставок? Мы обсудили эту дилемму оптимизации, когда переменные и функция потерь неизвестны, в лекции 2.2, озаглавленной “Экспериментальная оптимизация”. Перспектива экспериментальной оптимизации утверждает, что проблема не является заданной; её необходимо обнаружить путем повторяющихся, итеративных экспериментов. Доказательство правильности функции потерь и её переменных возникает не как математическое свойство, а через серию наблюдений, полученных в результате тщательно подобранных экспериментов прямо из цепи поставок. Экспериментальная оптимизация радикально меняет наше понимание оптимизации, и эту перспективу я буду использовать в этой главе. Инструменты и методы, которые я представлю здесь, ориентированы на перспективу экспериментальной оптимизации.

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

Slide 4

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

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

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

Slide 5

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

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

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

Slide 6

Манифест количественной цепочки поставок — это документ, который я впервые опубликовал в 2017 году. Эта концепция подробно рассмотрена в лекции 1.2, но для ясности я сегодня кратко повторю основные моменты. Существует пять столпов, но для нашего сегодняшнего обсуждения актуальны только первые три. Первые три столпа таковы:

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

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

Slide 7

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

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

Естественно, мы предполагаем, что имеется полная информация о продажах в магазинах и уровнях запасов как на уровне распределительного центра, так и на уровне магазинов, то есть считаем, что транзакционные данные доступны. Мы также предполагаем, что входящие поставки, предназначенные для распределительного центра, известны с оценочными временами прибытия (ETA), что может вносить определенную степень неопределенности. Кроме того, мы предполагаем, что вся повседневная, но критически важная информация доступна, такая как цена закупки продукта, цена продажи, категории товара и т.д. Вся эта информация содержится в любой системе ERP, даже если ей уже три десятилетия, а также в системах WMS и кассовых системах.

Сегодня мы не включаем пополнение распределительного центра (DC) в рамки задачи. На практике пополнение распределительного центра и распределение запасов по магазинам тесно взаимосвязаны, поэтому имеет смысл решать эти задачи одновременно. Причина, по которой я не рассматриваю это сегодня, заключается в стремлении к ясности и краткости изложения; сначала мы разберемся с более простой задачей. Однако, обратите внимание, что предложенный мной подход можно естественным образом расширить для включения пополнения распределительного центра.

Slide 8

Решение о перемещении ещё одной единицы товара в магазин для данного продукта в определенный день зависит от ряда экономических факторов. Если перемещение единицы приносит прибыль, мы хотим его выполнить; если нет — нет. Основные экономические факторы перечислены на экране, и, по сути, увеличение запасов в магазине приводит к ряду преимуществ. К ним относятся увеличение валовой прибыли за счет избежания упущенных продаж, повышение качества обслуживания за счет уменьшения количества дефицита товара, а также улучшение привлекательности магазина. Действительно, чтобы магазин был привлекательным, он должен казаться хорошо обеспеченным; в противном случае он выглядит уныло, и люди могут быть менее склонны к покупкам. Это общее наблюдение в розничной торговле, хотя оно может не вполне применяться к таким сегментам, как сегмент товаров уровня люкс.

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

Сглаживание потока запасов также крайне желательно. Распределительный центр (DC) имеет номинальную мощность, при которой он работает с наивысшей экономической эффективностью. Этот пик эффективности определяется физической организацией DC, а также числом постоянного персонала, работающего в нем. Идеально, если DC работает ежедневно, оставаясь очень близким к своей номинальной мощности для максимальной экономической эффективности. Однако поддержание пиковой эффективности DC требует сглаживания потока от DC к магазинам. Экономическая перспектива отличается от традиционных подходов, ориентированных на уровень обслуживания, часто встречающихся в современной литературе по цепочкам поставок. Мы стремимся к получению прибыли в долларах, а не в процентных пунктах. Единственный способ понять, разумно ли корректировать схему распределения запасов на уровне сети для снижения операционных затрат за счет незначительного ухудшения качества обслуживания в магазинах — это принять представленную здесь экономическую перспективу. Если вы ориентированы исключительно на уровень обслуживания, такие вопросы не могут быть решены. Наша цель на данном этапе — разработать числовые рецепты, которые позволят оценить экономические результаты любого решения по распределению запасов.

Slide 9

В предыдущей главе, пятой главе, мы обсуждали, как строить вероятностные прогнозы, и ввели специализированный тип данных «ranvar», который представляет собой одномерное дискретное распределение вероятностей. Короче говоря, ranvar — это специализированный тип данных, используемый для представления простого одномерного вероятностного прогноза в Envision.

Envision — это специализированный язык программирования, разработанный Lokad исключительно для предиктивной оптимизации цепочек поставок. Хотя в этих лекциях Envision не обладает чем-то принципиально уникальным, он используется для ясности и краткости изложения. Описанные сегодня числовые рецепты могут быть реализованы на любом языке, таком как Python, Julia или Visual Basic.

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

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

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

Slide 10

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

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

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

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

Представление, которое у нас есть, где видны все SKU и варианты, обычно называют сеткой. Цель состоит в том, чтобы отсортировать эту сетку по убыванию ROI (возврата на инвестиции). Сами по себе такие сетки неплохи, но они не очень эффективны, особенно с вычислительной или памяти точки зрения, и не предоставляют никакой дополнительной поддержки, кроме как в виде большой таблицы. Имейте в виду, что речь идет о розничной сети, и такая сетка может оказаться содержащей миллиард строк или около того. Большие данные неплохи, но меньшие данные предпочтительнее, так как они создают меньше трения и обеспечивают большую гибкость. Мы хотим попытаться свести проблему больших данных к проблеме малых данных, так как меньшие данные упрощают все процессы в производственной среде.

Slide 11

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

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

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

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

Алгоритм сжатия, используемый компанией Lokad для zedfuncs, отличается от алгоритма, применяемого для ranvars, потому что мы решаем разные числовые задачи. Для ranvars нас в основном интересует сохранение массы вероятностей наших смежных сегментов. Для zedfunc акцент смещается. Обычно мы хотим сохранить величину изменения от одной позиции к следующей, поскольку именно по этому изменению можно определить, является ли вариант последним прибыльным или следует остановиться. Следовательно, алгоритм сжатия тоже отличается.

Slide 12

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

График, который вы видели на предыдущем слайде, был сгенерирован скриптом. На строках один и два мы объявляем две линейные функции, f и g. Функция “linear” является частью стандартной библиотеки, а “linear of one” — это просто тождественная функция, полином первой степени. Функция “linear” возвращает zedfunc, и с ним можно складывать константу. У нас есть два полинома первой степени, f и g. На строке три мы конструируем полином второй степени через произведение f и g. Строки с 5 по 10 — это утилиты, по сути шаблонный код для построения графика zedfunc.

На данном этапе у нас есть контейнер данных для zedfunc и экономических результатов. Zedfunc является контейнером данных, как и ranvar был для вероятностного прогноза. Однако нам всё ещё нужны числовые схемы для расчёта этих экономических результатов. Контейнер данных у нас есть, но я ещё не описал, как мы вычисляем эти экономические результаты и заполняем zedfuncs.

Slide 13

Функция вознаграждения за запасы — это небольшой фреймворк, предназначенный для расчёта экономической отдачи для каждого уровня запасов отдельного SKU, с учетом вероятностного прогноза и короткой серии экономических факторов. Функция вознаграждения за запасы исторически была введена в Lokad для унификации наших практик. Ещё в 2015 году Lokad уже работала несколько лет с вероятностными прогнозами, и в результате проб и ошибок мы обнаружили ряд числовых схем, хорошо работающих. Однако они не были по-настоящему объединены; всё было немного хаотично. Функция вознаграждения за запасы объединила все эти инсайты в чистый, аккуратный, минималистичный фреймворк. С 2015 года были разработаны более совершенные методы, но они также более сложны. Для ясности по-прежнему лучше начать с функции вознаграждения за запасы и представить эту функцию первой.

Функция вознаграждения за запасы предназначена для нахождения числовой схемы, которая даст нам расчёт экономических результатов, связанных с этими вероятностными прогнозами. Функция вознаграждения за запасы подчиняется уравнению, которое вы видите на экране, и определяет экономическую отдачу в момент времени t, которую можно получить для имеющихся запасов k. Переменная R представляет экономическую отдачу, выраженную в таких единицах, как доллары или евро. Функция имеет две переменные: время (t) и имеющиеся запасы (k). Мы хотим вычислить это вознаграждение для всех возможных уровней запасов.

Существует четыре экономические переменные, которые необходимо учитывать:

M — это валовая маржа на единицу проданного товара. Это маржа, которую вы получите, успешно обслужив одну единицу. S — это штраф за отсутствие запасов, своего рода виртуальная стоимость, которую вы несёте всякий раз, когда не удаётся обслужить клиента на единицу товара. Даже если вам не придётся выплачивать штраф клиенту, существует стоимость, связанная с неоказанием должного обслуживания, и эту стоимость необходимо смоделировать. Один из самых простых способов моделирования этой стоимости — назначать штраф за каждую единицу, которую не удалось обслужить. C — это затраты на хранение, стоимость за единицу за период времени. Если у вас одна единица на складе в течение трёх периодов, это будет три раза C; если у вас две единицы на складе в течение трёх периодов, это будет шесть раз C. Alpha используется для дисконтирования будущей отдачи. Идея заключается в том, что то, что происходит в далёком будущем, имеет меньшее значение, чем то, что происходит в ближайшем будущем. Функция вознаграждения за запасы настолько проста, насколько это возможно без чрезмерного упрощения. Уравнение указывает, что если спрос превышает имеющиеся запасы, доход включает маржу за все имеющиеся запасы.

Это именно то, что говорит первая строка: у нас есть k маржей, значит, мы продаём все имеющиеся единицы, а затем понесём штраф, равный Y(t) - k за все единицы, которые не удалось обслужить.

В противном случае, если имеющиеся запасы превышают спрос, мы можем извлечь выгоду из произведения Y(t) на M, что представляет собой маржу от проданного сегодня товара. Затем мы должны оплатить затраты на хранение. Затраты на хранение за сегодняшний день составят то, что осталось в конце дня, то есть (k - Y(t))·C, плюс alpha, умноженное на функцию вознаграждения за запасы R* для следующего дня.

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

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

Дисконтирование времени с помощью alpha очень полезно, поскольку оно фактически устраняет необходимость задавать конкретный временной горизонт. Функция вознаграждения за запасы не работает с конечным временным горизонтом; она простирается до бесконечности. Благодаря alpha, которая является значением строго меньше единицы, экономические результаты, связанные с событиями в далёком будущем, становятся ничтожно малыми и, таким образом, несущественными. У нас нет какого-либо произвольного ограничения, например, сокращения временного горизонта цепочки поставок до 60 дней, 90 дней, одного года или двух лет.

Slide 14

В Envision функция вознаграждения за запасы принимает ranvar на вход и возвращает zedfunc. Функция вознаграждения за запасы является небольшим строительным блоком, который превращает вероятностный прогноз (ranvar) в zedfunc, являющийся контейнером для оценённых экономических результатов для ряда вариантов. Как следует из названия, функция вознаграждения за запасы представляет экономическую отдачу, связанную с каждой отдельной позицией запасов: что произойдёт, если у меня ноль единиц на складе, одна единица, две единицы, три единицы и так далее. Zedfunc отразит экономические результаты для каждого уровня запасов, кодируя экономическую отдачу, связанную с соответствующим уровнем.

Процесс вычисления этих zedfuncs иллюстрирован на экране. На строке 1 мы вводим имитацию спроса на один день, представляющую собой случайное распределение Пуассона. На строках с 2 по 7 мы вводим экономические переменные, и, кстати, у нас два alpha. Есть ещё один нюанс: на запасы действует эффект защёлки. Как только запасы направляются в магазин, обычно очень дорого вернуть их обратно. Это отражает тот факт, что любое распределение, сделанное в магазин, практически окончательно. Что касается затрат на хранение, alpha не должен быть слишком мал, поскольку при переизбытке мы действительно понесём эти затраты. Мы не можем отменить это решение. Однако, когда дело касается alpha, связанного с маржей, реальность такова, что, так же как у нас будут другие возможности справляться с будущими дефицитами, у нас будут и другие возможности привлечь больше запасов и обеспечить ту же маржу при их последующем распределении. Таким образом, нам нужно гораздо агрессивнее дисконтировать всё, что происходит со стороной маржи, по сравнению с тем, что происходит со стороны затрат на хранение.

На строках с 9 по 11 мы вводим саму функцию вознаграждения за запасы. Эта функция, которую я представил на предыдущем слайде, может быть линейно разложена на три компонента, каждая из которых отдельно учитывает маржу, затраты на хранение и штраф за отсутствие запасов. Действительно, у нас имеется линейное разделение, и в Envision эти три компонента вычисляются отдельно. Мы можем умножить zedfunc на коэффициент M, который будет валовой маржей.

На строках с 13 по 15 итоговое вознаграждение пересчитывается путём сложения трёх экономических компонентов. В этом скрипте мы используем тот факт, что у нас есть векторное пространство zedfuncs. Эти zedfuncs не являются числами; они — функции. Но мы можем их складывать, и результат сложения является другой функцией, которая также является zedfunc. Переменная reward является результатом сложения этих трёх компонентов. В основе расчёта функции вознаграждения за запасы лежит анализ неподвижной точки, который может выполняться за постоянное время для каждого компонента. Этот расчёт за постоянное время может показаться незначительной технической деталью, но когда вы имеете дело с большой розничной сетью, это определяет разницу между демонстрационным прототипом и настоящим промышленным решением.

Slide 15

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

Например, предположим, что у нас есть магазин, в котором уже имеются две единицы запаса, и если мы добавим третью единицу, ожидаемый уровень обслуживания возрастет с 80% до 90%. Это хорошо, и, возможно, большинство в сети согласятся с идеей добавить ещё одну единицу, чтобы уровень обслуживания мог подняться с 80 до 90. Это кажется вполне разумным, поэтому они скажут, что это хороший шаг. Однако что, если эта единица, которую мы собираемся переместить, эта третья единица, на самом деле является последней доступной в распределительном центре? У нас есть ещё один магазин в сети, который уже страдает от дефицита, и если мы переместим эту единицу в магазин, где она станет третьей, мы продлим дефицит для магазина, который уже лишён запасов того же продукта. В этой ситуации почти наверняка перемещение единицы в магазин, уже лишённый запасов, будет лучшим решением и должно иметь более высокий приоритет.

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

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

Slide 16

Сортировка вариантов распределения запасов относительно проста при наличии правильных инструментов. Давайте рассмотрим этот скрипт Envision. На строке 1 мы создаем три товарных кода (SKU) с именами A, B и C. На строке 2 мы генерируем случайные цены покупки от 1 до 10 в качестве имитационных данных. На строке 3 мы генерируем имитационные zedfunc’ы, которые должны представлять вознаграждение за каждую из этих товарных единиц. На практике zedfunc должен вычисляться с помощью функции вознаграждения за запас, но чтобы сохранить код кратким, здесь используются имитационные данные. Вознаграждение представляет собой убывающую линейную функцию, которая достигает нуля при уровне запасов 6. На строке 4 мы создаем таблицу G, сокращенное обозначение для сетки, представляющей уровни наших запасов на руках. Мы предполагаем, что уровни запасов выше 10 не стоят оценки. Это предположение разумно, учитывая, что в имитационных данных функция вознаграждения становится отрицательной при уровне запасов свыше 6. На строке 6 мы извлекаем предельное вознаграждение для любой единицы в запасах, чтобы получить эту таблицу-сетку. Мы используем zedfunc, функцию, представляющую вознаграждения, для извлечения значения для позиции запасов G.N. Стоит отметить, что начиная с строки 6 не имеет значения, как данные были изначально сгенерированы. С строк 1 по 4 это просто имитационные данные, которые не использовались бы в производственной среде, а начиная с строки 6 всё было бы по существу так же, как в производстве.

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

Наконец, с строк 9 по 15 мы выводим таблицу, отсортированную по убыванию оценок. Важно отметить, что в скрипте нет никакой изысканной логики. Первые четыре строки – это просто генерация имитационных данных, а последние шесть строк – это отображение приоритетного распределения. Как только zedfunc’ы появляются и у нас есть функция, представляющая экономическую отдачу для каждого уровня запасов, преобразование этих zedfunc’ов в приоритетный список становится абсолютно простым.

Slide 17

На экране таблица, полученная в результате выполнения предыдущего скрипта Envision, показывает, что товар с кодом C занимает первое место. Все товары имеют одинаковую экономическую отдачу для первой единицы, а именно доход в $5. Однако у C самая низкая цена покупки – $3.99, и поэтому, когда мы делим вознаграждение в $5 на $3.99, получаем оценку примерно 1.25, что оказывается самой высокой оценкой в таблице. Вторая единица C имеет оценку примерно 1, что является второй по величине.

Для третьей позиции в таблице у нас есть еще один товар с кодом B. У B цена покупки выше, и поэтому оценка для первой единицы составляет всего 0.96. Однако, из-за убывающей отдачи, получаемой при распределении первых двух единиц для SKU C, первая единица B получает более высокую оценку, чем третья единица C, и тем самым занимает место выше. По сути, этот приоритетный список очень глубок, но его планируется ограничить пороговым значением. Например, мы можем определить минимальную доходность инвестиций, и распределять будут только те единицы, которые превышают этот показатель. Как только порог определен, мы можем взять все строки, находящиеся выше порога, и подсчитать количество строк для каждого товара. Это даст общее количество единиц, которые должны быть распределены для каждого отдельного товара. Мы вернемся к проблеме порога через минуту, но идея такова: как только у вас появляется порог, вы суммируете количества по каждому товару, и это дает общее количество единиц для распределения каждого SKU. Именно это ожидает ваша система WMS или ERP, существующая в распределительном центре, для организации доставки на следующий день в магазины.

Приоритетный список – это всего лишь концептуальное представление для принятия решения о том, что имеет приоритет. Однако вы устанавливаете порог, агрегируете данные, и затем возвращаетесь к количествам распределения по каждому товару в вашей розничной сети.

Slide 18

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

На этом экране представлен вариант предыдущей таблицы, полученный с помощью другого скрипта Envision, который является минимальным вариантом того, что был представлен два слайда назад. По сути, я декомпозирую экономические факторы, способствующие формированию вознаграждения. Здесь у нас есть три дополнительных столбца: маржа, затраты на хранение и потеря продаж. Маржа – это ожидаемая средняя валовая маржа для распределяемой единицы. Затраты на хранение – это ожидаемая средняя стоимость размещения этой единицы в запасах магазина. Потеря продаж – это ожидаемое наказание, которого удается избежать, поэтому штраф за потерю продаж здесь имеет положительное значение. Итоговое вознаграждение – это просто сумма этих трех компонентов, и все эти величины выражены в денежных единицах, например, в долларах. Столбец, в котором указаны значения в долларах для маржи, затрат на хранение, потерь продаж и вознаграждения, представляет собой общую сумму долларов, которую можно ожидать, разместив эту единицу в магазине.

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

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

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

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

Slide 19

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

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

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

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

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

Slide 20

Опыт компании Lokad показывает, что сглаживание потока на складе посредством плоского порога мощности хорошо работает в большинстве розничных ситуаций. На экране вы можете увидеть типичную кривую экономической отдачи, который наблюдается при рассмотрении всех возможных порогов. По оси X отложено количество единиц, отгружаемых со склада. Мы концептуально предполагаем, что единицы отправляются по одной, чтобы можно было наблюдать предельный вклад каждой отдельной единицы. Естественно, в производственной среде единицы отгружаются партиями, а не по одной, но это сделано для того, чтобы можно было построить кривую. По оси Y отложены предельные экономические результаты на уровне магазина, то есть для n-й единицы, отгружаемой в магазин, любого магазина сети. Первые распределенные единицы генерируют основную часть отдачи. На практике верх списка неизменно состоит из ситуаций нехватки запасов, требующих немедленного решения. Именно поэтому первые единицы решают проблему дефицита запасов, и именно поэтому экономическая отдача очень высока. Затем отдача уменьшается, и мы переходим к плоской части кривой.

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

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

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

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

Slide 21

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

Еще в 2021 году один из нас в Lokad опубликовал функцию поощрения действий. Функция поощрения действий является духовным наследником, если хотите, функции поощрения запасов, но эта функция предлагает гораздо более детальный взгляд на сами вероятностные прогнозы. Ведь не все вероятностные прогнозы равны. Сезонность, различная продолжительность поставок и ETAs поступления для распределительных центров – всё это учитывается в функции поощрения действий, в то время как в функции поощрения запасов не принималось во внимание.

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

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

Slide 22

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

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

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

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

Slide 23

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

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

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

Slide 24

Думаю, на сегодня все. Следующая лекция состоится в среду, 6 июля, в то же время, в 15:00 по парижскому времени. Я перейду к седьмой главе, чтобы обсудить тактическую реализацию количественной инициативы в области цепочек поставок. Кстати, в последующих лекциях я вернусь к главе 5, посвященной вероятностным прогнозам, и к главе 6, посвященной техникам принятия решений. Моя цель — получить полное начальное представление обо всех элементах, прежде чем углубляться в какую-либо конкретную тему.

Таким образом, сейчас я перейду к вопросам.

Вопрос: zedfunc может иметь бесконечное количество вариантов. Разве тогда все решения не окажутся краткосрочными?

zedfunction — это буквально контейнер данных для последовательности вариантов, поэтому горизонт, к которому она применяется, заложен в значении alpha, временных коэффициентах скидки, которые я использовал в своих скриптах. Фундаментально, целевой временной горизонт, который вы интегрируете в экономический результат zedfunction, на самом деле не содержится в самих zedfunctions; он больше зависит от экономических расчетов, которыми они наполняются. Не забывайте, что zedfunctions — это всего лишь контейнеры данных. Именно это определяет, являются ли они краткосрочными или долгосрочными, и, очевидно, вы хотите настроить свои числовые рецепты так, чтобы они отражали ваши приоритеты. Например, если ваша компания испытывает огромный стресс из-за проблем с денежным потоком, у вас, вероятно, будет гораздо более краткосрочная перспектива в получении денежных средств, то есть фактически распродажа запасов. Если же у вас достаточно наличных, возможно, вы предпочтете отложить продажи на более поздний период, продавать по лучшей цене и обеспечивать лучшую валовую прибыль. Так что, опять же, все эти варианты возможны с zedfunctions. zedfunctions — это просто контейнеры; они не обязательно подразумевают наличие какого-либо числового рецепта для экономических результатов, которые вы хотите заложить в zedfunctions.

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

Что такое реальное? Вот в чем суть проблемы, о которой я говорил в лекции по экспериментальной оптимизации. Проблема в том, что когда вы утверждаете, что у вас есть значения или измерения или что-то подобное, на самом деле у вас имеются математические конструкции, числовые конструкции. То, что они числовые, не означает, что они корректны. Я рассматриваю цепочку поставок как экспериментальную науку; вам необходимо установить связь с реальным миром. Именно так вы определяете, является ли что-то реальным или нет. Дело в том, и я с этим полностью согласен, что предположения не должны основываться на заранее существующих реальных значениях, потому что таких не существует. Их необходимо проверять; эти предположения должны быть проверены и подвергнуты сомнению на основе реальных наблюдений, которые вы можете провести в вашей цепочке поставок. Корректность ваших предположений можно оценить только через соприкосновение с реальностью вашей цепочки поставок.

Вот в чем заключается сложность перспективы экспериментальной оптимизации, потому что математическая оптимизация просто предполагает, что все переменные известны, все переменные реальны, все переменные могут быть наблюдаемы, и функция потерь может быть корректной. Но суть моего утверждения в том, что цепочка поставок — это чрезвычайно сложная система. Это не так. Большую часть времени у вас имеются достаточно косвенные измерения. Когда я говорю об уровне запасов, я не захожу в магазин, чтобы проверить, соответствует ли уровень запасов действительности. У меня есть очень косвенное измерение — электронная запись, полученная из системы enterprise software, которая, как правило, была внедрена два десятилетия назад по причинам, не имевшим ничего общего с анализом данных. Вот что я имею в виду; проблема с реальностью в том, что цепочка поставок всегда распределена географически, поэтому всё, что вы измеряете, всё, что вы видите в виде значений, — это косвенные измерения. Таким образом, реальность этих измерений всегда вызывает сомнения. Не существует прямого наблюдения. Вы можете провести прямое наблюдение лишь для контроля или проверки, но оно может составлять лишь малую часть всех значений, с которыми вам нужно работать в вашей цепочке поставок.

Вопрос: В функциях поощрения запасов, помимо очевидных параметров, таких как маржа, мы также сталкиваемся с штрафами за отсутствие товаров. Как нам лучше всего научиться оптимизировать эти сложные параметры?

Это очень хороший вопрос. Действительно, штрафы за отсутствие товаров реальны; иначе никто бы даже не стремился добиться высокого уровня обслуживания. Причина, по которой вы стремитесь к высокому уровню обслуживания, заключается в том, что с экономической точки зрения каждый розничный торговец, которого я знаю, убеждён, что штрафы за отсутствие товаров реальны. Покупателям не нравится, когда обслуживание низкого качества. Но я бы не сказал, что это сложно; скорее, это запутанно. По своей природе они трудны, и часть этой трудности заключается в том, что на кону стоит буквально долгосрочная стратегия розничной сети. У большинства моих клиентов, например, штраф за отсутствие товаров — это то, что я обсуждаю напрямую с генеральным директором компании. Это доходит до самого верха; на кону стоит супер-долгосрочная стратегия розничной сети.

Таким образом, это не так уж и сложно, но определенно запутанно, поскольку речь идёт о дискуссии с высокими ставками. Что же мы хотим сделать? Как мы хотим относиться к клиентам? Должны ли мы заявлять, что у нас самые низкие цены и извиняться, если качество обслуживания оставляет желать лучшего, но при этом предлагать нечто уникальное по очень низким ценам? Или же вы предпочитаете новизну? Если вы делаете ставку на новизну, это означает, что постоянно появляются новые продукты, а если новые продукты появляются постоянно, это значит, что старые продукты постепенно выводятся из ассортимента, и поэтому вы должны допускать отсутствие товара, поскольку именно так и происходит введение новизны.

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

Видите ли, этот диалог подразумевает взаимный обмен аргументами. Обычно специалист по цепочке поставок тестирует серию значений, представляет экономические результаты и объясняет макро затраты, связанные с определённым драйвером. Он может сказать: “Хорошо, мы можем установить очень большой штраф за отсутствие товара, но будьте осторожны, если мы это сделаем, наша логика распределения запасов всегда будет нацелена на отправку огромного количества товаров в магазины.” Потому что если послание таково, что отсутствие товара губительно, это значит, что мы должны делать всё возможное, чтобы этого избежать. По сути, нам нужно провести этот диалог с множеством итераций, чтобы руководство могло провести проверку реальности: “Является ли моя долгосрочная стратегия экономически жизнеспособной с учётом возможностей моей розничной сети?” Именно так вы постепенно сходите к оптимальному решению. К тому же, это не что-то зафиксированное навсегда. Компании меняются и корректируют свою стратегию со временем, так что не потому, что вы установили коэффициент штрафа за отсутствие товара в 2010 году, он должен быть тем же и в 2022.

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

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

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

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

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

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

Вопрос: Упорядочивание потоков на складе требует упорядоченности производственного потока. Учитывает ли эта модель принятия решений это?

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

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

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

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

Я полагаю, что проблема с цепочками поставок заключалась в том, что до появления интернета они по своей природе были географически распределёнными, с магазинами, распределительными центрами и прочим, разбросанными по территории. До 1995 года было возможно, но очень сложно передавать данные через интернет для компаний. Это было осуществимо, но делать это надежно, недорого и с использованием корпоративных систем, позволяющих консолидировать все эти данные, было редкостью. Таким образом, цепочки поставок начали оцифровываться очень рано, как в 80-х, но они не были сильно сетевыми. Компонент сетевой инфраструктуры и вся сопутствующая “проводка” появились относительно поздно, я бы сказал, после 2000 года для большинства компаний.

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

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

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

Вы можете это сделать. Опять же, стоимость отсутствия товара — это фактически решение, которое вы принимаете. Это ваша стратегическая точка зрения на тот уровень обслуживания, который вы хотите, чтобы ваша розничная сеть предоставляла вашим клиентам. Нет какой-либо объективной реальности; это буквально то, что вы хотите. Что касается стоимости неправильного размещения, то реальность такова, что большинство розничных сетей выживает только благодаря лояльной базе клиентов. Люди действительно возвращаются в магазины, будь то универсальный магазин, который они посещают каждую неделю, модный магазин, который они посещают каждый квартал, или мебельный магазин, куда они возвращаются раз в два года. Качество обслуживания имеет решающее значение для поддержания долгосрочной лояльности клиентов и обеспечения положительного опыта в вашем магазине. Как правило, стоимость утраченной лояльности для большинства магазинов существенно превосходит затраты на неправильное размещение. Единственное исключение, которое приходит на ум, — это розничные магазины с брендовой стратегией, ориентированной на минимальные цены. В этом случае они могут пожертвовать ассортиментом и качеством обслуживания, отдавая предпочтение низким ценам превыше всего.

Вопрос: В чем цель хранения запасов на вашем складе? Это для того, чтобы товары продавались по низким ценам или чтобы поставлять магазины товарами по более высоким ценам?

Это отличный вопрос. Зачем вообще держать запасы в распределительном центре? Почему бы не сквозное складирование всего, отправляя всё напрямую в магазины?

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

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

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

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

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