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


❖ авторы Кенго Хамада, Котаро Танахаси

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

Введение


Recruit размещает несколько бесплатных газет, в том числе Town Work и Hot Pepper Beauty, на стойках, вокзалах и в магазинах по всей Японии. Доставка бесплатных газет к каждому стеллажу осуществляется несколькими компаниями.

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

Понимание бизнес-проблемы


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

На схеме ниже показан маршрут доставки.


Есть две вещи, которые необходимо решить.

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

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

Кроме того, необходимо соблюдать ряд практических ограничений, включая следующие пункты:

  • Время работы водителя.
  • Грузоподъёмность грузового автомобиля.
  • Время, необходимое для того, чтобы добраться до магазина.

Описанную до сих пор постановку задачи можно обобщить в виде следующего рисунка.


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

Подход математической оптимизации


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

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

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

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

▍ Обособление оптимизационной задачи с помощью опросов


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

Построение задачи

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

Целевая функция: минимизация общего времени в пути транспортных средств для перевозки грузов.

Ограничения

  • Не превышать установленное количество транспортных средств для перевозки грузов.
  • Все транспортные средства отправляются со склада и возвращаются на склад.
  • Все пункты распределения посещает ровно один автомобиль.
  • Учитывать предел грузоподъёмности транспортных средств для перевозки грузов.

Результат: оптимальный маршрут для каждого транспортного средства2.

2. Рисунок, размещённый в разделе «Понимание бизнес-проблемы», показывает тот самый результат.

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

Конкретные ограничения будут определены в ходе опросов, но трудно получить всю необходимую информацию, просто спросив, например, «Что добавить?».

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


▍ Разработка специального решателя


Основные направления подхода к решению оптимизационных задач можно организовать следующим образом (ссылка: материал профессора Шундзи Уметани на японском языке).

Общий метод решения: формулировать и применять общий решатель для решения, например, задачи целочисленного программирования.

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

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

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

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

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


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


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


Этот метод накопления локальных улучшений называется методом локального поиска. В частности, описанный выше алгоритм называется 2-opt и часто используется в задачах оптимизации маршрутов.

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

Последствия внедрения


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

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

Заключение


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

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

Вы можете написать в комментариях, на какую тему вы бы хотели почитать материал, или же какие-то конкретные статьи для перевода. Если повезёт, то встретимся с вами вновь.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх

Комментарии (11)


  1. Andriljo
    00.00.0000 00:00

    На самом деле интересен не бизнес анализ проблемы, а решение той же множественно й VRP задачи (у вас на рисунке с грузоперевозками) через современные и не очень методы: ветви и границы, много этапный метод ЦЛП или RL , генетика и тп.


    1. thevlad
      00.00.0000 00:00
      +1

      Есть три эффективных подхода, которыми решаются практические задачи дискретной оптимизации: local search, integer programming, constraint programming. Конкретно про VRP, есть книжки и статьи, где рассмотрены подходы к решению. Но это считается решённой проблемой, поэтому полезные статьи довольно старые. Китайцы любят публиковать всякий мусор для решения задач дискретной оптимизации, как раз через RL, генетику и отжиг и прочие мета-эвристики, имеющие в среднем комбинаторную сложность.


      1. Andriljo
        00.00.0000 00:00
        +1

        NP трудные задачи не имеют решения на основе локального поиска или ЦЛП и тп. Только определённое приближение к оптимуму или при малой размерности точное находят. Локальный поиск вам не найдёт нормальное решение без комбинации с глобальным поиском и вероятностной схемой сэмплирования. А вот эти все RL, генетика отжиг и по метаэвристики и есть комбо из глобального и локального поиска. Даже метод ветвей и границ комбинируют с этим.


        1. thevlad
          00.00.0000 00:00

          NP трудные задачи в общем случаи не имеют решения, кроме как эквивалентного по сложности полному перебору. Не очень понимаю, что вы этим хотели сказать. Но если вам нужны глобальные оптимумы на больших задачах, то единственный вариант это integer programming. А по поводу local search в купе с tabu мета-характеристикой, среди аппроксимирующих алгоритмов - он бил рекорды на TSP.

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


          1. Andriljo
            00.00.0000 00:00

            Поиск табу тоже кстати относится к метаэвристркам ну и имеет завязку на марковские процессы. Хотите теории идите почитайте Пантелеева Методы Глобальной оптимизации или Волкова метаэврестические алгоритмы оптимизации. Первый МАИ учебник для ВТузов, второй МГТУ им Баумана для ВТузов. Ничего не знаю про проблемы масштабирования у меня их не было. Решал задачи разной размерности, и ничего. Да время растёт и оно и будет расти для NP трудных от масштаба, но если запрогать грамотно будет за удобоваримое время сходится. Могу скинуть свой диссерт по NP задачам. Решал на NP задаче размещения скважин. Кстати тоже юзаю табу + метаэвристики а-ля метод потопа, метод пчелиной колонии или алгоритм муравья от Дориго. Все они это смесь локального и глобального поиска. Локальный это когда вы ищете в рамках текущего решения улучшения его в локальной окрестности. Глобальный когда вы случайно кидаете к точек и в рамках их делаете локальный для каждой точки. Обычно это равно методу эксплуатации решения - локальный поиск и исследования глобальный в RL.


          1. Andriljo
            00.00.0000 00:00

            Ссылки: https://top-technologies.ru/ru/article/view?id=36941

            https://cyberleninka.ru/article/n/algoritm-globalnogo-poiska-garantirovannyh-resheniy-kvadratichno-lineynoy-dvuhurovnevoy-zadachi-i-ego-testirovanie

            https://books.google.ge/books/about/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BE%D0%BF%D1%82.html?id=nR8sDwAAQBAJ&redir_esc=y

            Последняя ссылка про учебник Пантелеева, по мне просто топ. Да и в принципе по запросу: методы глобального и локального поиска, метаэвристики вам откроется чудный мир с методами:табу, локальный поиск, swap-k-swap, генетика, иммунные системы, роевый интеллект, отжиг, алгоритм муравьиной колонии и тп.


            1. thevlad
              00.00.0000 00:00

              я уж не знаю откуда там взялась эта терминология, но она не очень грамотная. Глобальный поиск должен гарантированно давать глобальный оптимум. Или что в нем тогда глобального? Не застревает в каком-то классе локальных оптимумов? Методы локального поиска с мета-характеристиками глобальный оптимум гарантировать не могут, в отличии от методов integer programming.


              1. Andriljo
                00.00.0000 00:00

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


              1. Andriljo
                00.00.0000 00:00

                Ну и кто говорит, что Ваша система верная?


                1. thevlad
                  00.00.0000 00:00

                  Нет, я просто не встречал этого термина ни в одном иностранном учебнике или статье, применительно к данной проблеме(дискретной оптимизации) в том виде как его интерпретируете вы. Если поискать что-то в духе "global search/optimization" то найдете гораздо больше примеров укладывающихся в мое толкование термина. Но да ладно, спорить не вижу смысла.


                  1. Andriljo
                    00.00.0000 00:00

                    Добро.