Вот уже год я руковожу разработкой систем автоматизации для логистических компаний. Грубо говоря, помогаю другим доставлять быстрее и качественнее. Казалось бы, что может быть интересного в такой банальной задаче? Однако логистика таит в себе множество подводных камней, и о некоторых я хотел бы рассказать в данном посте.
Если быть точным, речь пойдет о транспортной логистике – т.е. оптимальном перемещении груза из точки «А» в точку «Б». Если вы проходили комбинаторику в ВУЗе, то должны знать о задаче коммивояжёра (ее решают в том числе пчелы) и о том, что простых решений здесь нет. Мы же не будем заострять все внимание на математике, а перейдем к более насущным проблемам.
Итак, предположим, что у нас есть сферический курьер Петя. Петя проехал 1 километр до нужной точки и вернулся назад. Все хорошо. Однако, скорее всего, таких точек будет как минимум 10 (в лучшем случае), и для них придется находить оптимальный порядок (звездочкой обозначена база).
Кроме того, зачастую у тех или иных точек есть строгие «окна доставки» – часы, вне которых наш груз не смогут принять. Таким образом, сам маршрут может и не быть оптимальным с точки зрения протяженности, но именно он будет удовлетворять этим условиям.
К слову, я забыл упомянуть, что Петя передвигается на машине, а значит – должен учитывать пробки, которые неизменно возникают в часы пик. Поэтому, чтобы успеть в каждую точку в нужное время, мы должны понимать, как будет развиваться дорожная обстановка в течении дня.
Помимо всего этого, нужно помнить, что Пете не всегда нужно именно развозить, иногда у него просят забрать груз из одной точки и отвезти в другую. И это накладывает дополнительные ограничения на порядок посещения точек.
Предположим, точек стало так много, что один Петя уже не справляется, и ему в помощь дают Васю. Как им разделить задачи между собой? Самым удобное и простое решение – это разделить их на зоны. В зоне «А» будет работать Петя, а в зоне «Б» – Вася, и пересекаться они не будут.
Однако строгие зоны не всегда могут быть оптимальны, ведь в отдельные дни у Пети может быть гораздо меньше задач, и было бы несправедливо заставлять Васю работать весь день, когда Петя развез все посылки уже с утра и спокойно пьет пиво (хотя кого я обманываю). Поэтому, в случае дисбаланса с той или иной стороны, зоны должны уметь обмениваться друг с другом задачами.
Помимо зон, курьеры могут быть разведены между собой во времени с помощью рейсов. Тогда, к примеру, один курьер будет развозить все с утра, а другой – вечером, и все это – внутри одной зоны.
Иногда, чтобы забрать груз их одной точки и доставить в другую, приходится ехать через весь город, и тогда становится выгоднее разделять эти действия между курьерами – Вася, находясь внутри своей зоны, берет груз, встречается по пути с Петей, происходит обмен, а уже Петя доставляет тот груз в нужную точку.
А теперь представьте, что каждый день логист Костя приходит на работу к 6-ти утра (чтобы успеть до того, как Петя и Вася поедут все развозить) и начинает проделывать все эти операции вручную. ВРУЧНУЮ, КАРЛ! Более того, в крупных компаниях не один и не два, а десятки курьеров, каждый из которых выполняет по 30-40 задач в день. Т.е. он будет видеть примерно следующее:
Здесь я затронул базовые части того, что касается планирования маршрута. В реальности утренний план редко совпадает с тем, что происходит в течении дня. Один и тот же маршрут может многократно меняться, курьеры подменять друг друга в случае форс-мажоров, перепланировать свой маршрут на лету и т.д. и т.п. Хороший логист должен учитывать десятки, если не сотни самых разных параметров и событий.
Надеюсь, теперь вы понимаете, почему логистика – это так весело и увлекательно!
Где мемсы? Курьер потерял?
Комментарий удален модератором
Подтверждаю, интересно.
В университете как-то раз делал доклад по задаче о максимальном потоке (BFS, алгоритм Форда-Фалкерсона, Эдмондса-Карпа, Беллмана-Форда).
Вот и вся логистика
"Основы логистики". Дальше пшщвапшыппыпывш почти как "Капитал".
Хитрый автор на самом интересном месте статью закончил. Вот как маршрут строит Костя по этим данным? Какие инструменты он для этого использует?
Комментарий удален модератором
Комментарий удален модератором
Комментарий удален модератором
Виды коносамента на примерах rage face
Спасибо. Теперь буду кидать ссылку на этот пост своим друзьям, когда они будут спрашивать о том, чем я занимаюсь.
А ваши курьеры могут пробить рельсу вдоль?
Мемесы есть, не обманули.
А вообще, тем интереснейшая. Не был бы физиком, точно бы занялся оптимизацией всяких конвейерных процессов, как мой брат, или, вот, логистикой, с его симплекс методами и прочими задачами о коммивояжёре в рюкзаке
Комментарий удален модератором
Что именно он делает?
Комментарий удален модератором
Но оптимальный маршрут для каждого курьера вычисляется программно, так ведь?
Комментарий удален модератором
Неужели логист Костя строит маршруты, сидя за столом с листом бумаги и карандашом? Как же он успевает?
Комментарий удален модератором
Спасибо. Я полагаю, ваш софт способен всё это автоматизировать, так?
Комментарий удален модератором
Когда ездил с дальнобойщиками, они постоянно жаловались, что какой-то там "умник" написал им маршрут, расписал расход топлива, а потом они въезжают в город и узнают, что тут тонна односторонних дорог и из-за этого расход больше и опоздание на час.
А вообще интересно было бы почитать. Еще интереснее было бы почитать про алгоритм. Это ведь какой-то усовершенствованный комми.
Комментарий удален модератором
Комментарий недоступен
А где же задачи безусловной оптимизации (метод Фогеля, ветвлений и границ, формула Уилсона, метод северо-западного угла, метод диф. рент, метод Гомори, условия Куна-Таккера)?
Комментарий удален модератором
Зашёл, увидел прекрасный растр, не стал читать дальше.
Комментарий удален модератором
Презентация на проекторе быдет выглядеть получше. Там всё-таки размытая картинка.