Нейросеть прогнозирует использование контейнеров в группе компаний "Pool"

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

В конкретном случае компаний “Pool” эта потребность возрастает, поскольку они должны
поддерживать качество обслуживания, а также минимизировать инвестиции в основные средства. Задачу решает нейронная сеть, обученная и адаптированная под потребности компании.

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

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

Компания “Pool” проводит свои инвентаризационные расчеты в конце каждой недели. Известен текущий запас каждого вида контейнеров на каждом складе . Также известно сколько каждого типа контейнеров прибудет в течение недели. Неизвестная информация -сколько контейнеров клиенты заберут с каждого склада.

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

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

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

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

Результаты
Как показывают полученные результаты, нейронные сети представляют собой отличный инструмент прогнозирования поведения клиентов компании “Пул”
, даже несмотря на доступной для обучения ограниченный объем исторической информации, . Они особенно хорошо работают , когда рабочая информация нелинейна, с шумом или с временными зависимостями, или когда ее необходимо быстро адаптировать к новым ситуациям.

С другой стороны, трудно осознать процесс получения результата, потому что нейронные сети используют подход “черного ящика”. Кроме того, в определенных ситуациях периоды обучения могут быть слишком длительными (не в данном случае): обучение сети только для одного клиента, на одном складе и для одного определенного типа товара обычно занимает около 4-5 минут; это подразумевает всего несколько часов расчета для всего процесса.

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

Несмотря на то, что бывают недели, когда ошибка для конкретной статьи составляет почти 4%, в целом частота ошибок прогнозирования остается менее 2%.

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

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

Выбор модели нейронной сети
Для целей прогнозирования наиболее интересными моделями являются многослойные прямые (Бишоп, 1995) и рекуррентные сети (Хаммер, 2000). Эти модели использовались многими исследователями для решения финансовых проблем и других задач прогнозирования.

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

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

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

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

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

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

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

Проверенными рекуррентными сетями были сети Элмана . Сети Эдмана были протестированы с использованием функции обучения BPTT (BackpropTroughTime) с коэффициентом обучения от 0,05 до 0,2. Эти сети не смогли предсказать с достаточной точностью пики спроса со стороны клиентов.

Проверенными рекуррентными сетями были сети Элмана . Сети Эдмана были протестированы с использованием функции обучения BPTT (BackpropTroughTime) с коэффициентом обучения от 0,05 до 0,2. Эти сети не смогли предсказать с достаточной точностью пики спроса со стороны клиентов.

Обучение нейронной сети
Сети были обучены с помощью алгоритма “Обратного распространения” (Back-Propagation) с коэффициентом обучения 0,01. Существуют и другие методы обучения, такие как алгоритм “Быстрого распространения” ( алгоритм “Обратного распространения с импульсом” и т. д. Эти алгоритмы теоретически сходятся быстрее, но полученные результаты были не так хороши, как при “обратном распространении”.
Чтобы избежать длинного цикла, было установлено ограничение на количество тренировочных циклов. Проверка на ошибку была также включена в качестве условия остановки обучения; эта ошибка была рассчитана по набору выборок проверки (10% от всего набора выборок, выбранных случайным образом) и не должна была увеличиваться, чтобы предотвратить перетренированность сети.
В реализованном приложении нейронная сеть была обучена для каждого клиента, типа контейнера и склада.

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


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

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

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

Источник CiteSeerX