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

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

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

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

Я начал с попыток найти что то похожее на ResearchGate но к сожелению схожих статей я не нашел. Потом начал просто перебирать все готовые алгоритмы кластеризации от SKlearn. Там меня тоже ждала неудача кластеры были либо не равномерно распределены по количеству заказов либо они были распределены некорректно географически.

Так как я работаю один и посоветоваться было не с кем, а что-то делать надо, я разработал собственный алгоритм, основанный на методе Kmeans. Я разделил все точки на N кластеров, где N — это сумма заказов в датасете, деленная на порог заказов. Далее я находил самый маленький кластер и при помощи метода ближайших соседей (Nearest Neighbors) присваивал точки этого кластера другим кластерам. Если кластер оказывался слишком большим, алгоритм применялся заново. После 100 итераций получалось довольно сбалансированное распределение. Конечно не идеально, но уже лучше чем ничего.

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

Всем привет! Мой первый пост, надеюсь что получится разжечь какую-то дискуссию по теме познакомится с интересными людьми из профессионального сообщества | Сетка — социальная сеть от hh.ru Всем привет! Мой первый пост, надеюсь что получится разжечь какую-то дискуссию по теме познакомится с интересными людьми из профессионального сообщества | Сетка — социальная сеть от hh.ru