Оптимизационные задачи

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

В нашей практике к ним относились, например, такие вопросы:

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

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

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

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

Ключевой этап в процессе разработки оптимизационной модели – регулярное извлечение и трансформация необходимых данных. Рационально такие задачи решать на этапе построения АХД. Однако, мы часто сталкиваемся с ситуацией, когда часть информации, напрямую влияющей на целевую функцию, недоступна для автоматической обработки, поскольку эксперт хранит ее в слабоструктурированном виде (файлы word, заметки и пр.). В таком случае мы предлагаем организовать бизнес-процессы так, чтобы необходимая информация имела реляционное цифровое отражение.

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

В ряде случаев для повышения точности оптимизационной модели целесообразно использовать методы Artificial Intelligence (AI) и Machine Learning (ML), такие как, эволюционные вычисления, генетические алгоритмы, алгоритмы имитации отжига, эволюционное программирование, эволюционные стратегии, детерминированные методы, поиск с запретом, искусственные нейронные сети и т.п. При применении данных методов необходимо учитывать их особенности, например, склонность к нахождению локального оптимума у генетических алгоритмов, отсутствие обоснования полученных результатов («черный ящик») у нейросетевых моделей  и т.д. Для построения и развертывания оптимизационных моделей основанных на методах Artificial intelligence и Machine Learning мы обычно используем MS Machine Learning Studio, Python (Jupiter Notebooks, различные библиотеки).

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

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

Наверх