Несмотря на то, что предметная область, о которой пойдет речь, называется в ОТМ «управление парком», в конечном итоге на практике все сводится к управлению людьми, а не машинами.
Сейчас довольно редко слышу слово «шофер», а вот мой дедушка говорил только так. Теперь чаще говорят «водитель». Хотя справедливости ради надо сказать, что именно шофер — это профессия, а водитель может быть и любителем. Но сойдемся на том, что рассказ будет о профессиональных водителях.
И чтобы уже окончательно разобраться с терминологией я решила выяснить что такое «диспетчеризация» и правильно ли использовать это слово по отношению к процессу управления парком и водителями в ОТМ. Диспетчеризация (англ. dispatch — быстро выполнять) — процесс централизованного оперативного контроля и дистанционного управления, с использованием оперативной передачи информации между объектами диспетчеризации и пунктом управления. Как нам сообщает Большая советская энциклопедия, основные задачи диспетчеризации на транспорте: непрерывный контроль состояния подвижного состава, его технической готовности, состояния графиков погрузочно-разгрузочных работ и соблюдения расписания движения. Получается что процесс планирования перевозок, который выполняется с учетом актуальной информации о статусе и местоположении водителей и транспортных средств, вполне можно назвать диспетчеризацией.
Назначение парка на перевозки в ОТМ — это двухэтапный процесс. В ходе планирования учитывается количество и доступность только по типам машин. А затем вторым этапом массив рейсов автоматически распределяется по конкретным машинам и водителям с учетом фактической доступности, удаленности, а в конечном итоге — стоимости. Вообще с подходом к назначению парка в качестве пост-обработки уже спланированных рейсов можно поспорить и есть TMS, которые делают это сразу. Но с другой стороны — не всегда весь массив рейсов выполняется своими силами и тогда необходимость задавать сразу точный список транспорта только будет мешать. ОТМ же дает возможность обозначить возможности своего парка количественно и не ставить планирование в зависимость от текущей ситуации по наличию машин. Это значит, что планировать перевозки можно заранее, а позже определиться с конкретными номерами машин и фамилиями водителей.
В ОТМ к идее режима работы водителя подступались с разных сторон и даже еще задолго до того, как вообще появился специальный модуль для управления собственным парком и даже собственно Водитель, как объект системы. Ведь даже если мы не управляем водителями, для оценки реального времени выполнения рейсов на дальние расстояния нужно учитывать не просто среднюю скорость движения автомобиля, а еще и нормативы труда и отдыха. Так в ОТМ появился специальный режим оценки времени в пути, который называется «симуляция» — имеется в виду симуляция реальной картины движения машины. Во-первых, этот режим позволяет задать разную среднюю скорость движения в зависимости от расстояния: на коротких расстояниях скорость обычно ниже, как например в городе или в пригороде, а на дальних — выше, т.к. на трассе можно двигаться с «крейсерской скоростью». Во-вторых, здесь же есть возможность указать предельное время движения без отдыха и длительность перерыва на отдых.
Дальше на эту самую симуляцию наложился более продвинутый функционал управления рабочим временем водителя, который позволил задавать длительность смены и собственно рабочий график на уровне водителей. Автоматизация назначения в ОТМ строится на определении списка водителей, которые доступны для выполнения ранее запланированных рейсов согласно их графикам работы. При чем в отношении планового времени рейсов допускается гибкий подход — оно может переноситься в течение дня или даже нескольких дней, пока это не нарушает ни одного временного окна заказов, входящих в этот рейс. Благодаря этому рейсы равномерно распределяются в течение дня даже если изначально они все были условно спланированы на одно время.
Интересно, что предпосылка к построению непрерывных цепочек из рейсов была также заложена в ОТМ еще задолго до появления управления парком. Даже можно сказать, что это один из базовых оптимизационных алгоритмов и суть его в построении длительных перемещений из обычных рейсов, путем их соединения между собой минимальными порожними пробегами. Особенно это актуально для автоматического поиска обратных загрузок, что позволяет создавать «кругорейсы». Однажды при подготовке очередного моделирования в ОТМ мы столкнулись с некоторыми проблемами производительности при назначении водителей на большой объем рейсов. В качестве обходного пути коллеги из Oracle Development предложили нам воспользоваться именно этой функциональностью создания цепочек связанных рейсов, на которые уже вторым шагом были назначены водители. Работает она, надо сказать, отлично и главное — быстро.
В процессе назначения рейсы группируются по признаку выполнения одним водителем и транспортным средством. Маршрут каждого рейса дополняется данными о точках базирования и порожнем пробеге. Таким образом появляется информация о подаче машин под погрузку, возврате в гараж и о порожнем пробеге между рейсами.
Кстати при формировании себестоимости рейсов порожний пробег можно тарифицировать отдельно. Это позволит полностью свести оптимизацию к стоимостным показателям.
Теперь вернемся к диспетчеризации в смысле контроля местоположения. В каждый момент времени у водителя отмечается текущее и ожидаемое местоположение и время прибытия туда. После завершения рейса ожидаемое местоположение становится фактическим, а при новом назначении появляется новое ожидаемое и так далее. На этом собственно и строится автоматический поиск ближайших доступных водителей по точке загрузке и желаемому плановому времени. Этой же информацией может воспользоваться диспетчер при назначении вручную. Удобно, что водитель, который уже назначен на рейс, но еще никуда не поехал, не исчезает из поля зрения и может быть переназначен на другой рейс при необходимости. В качестве подсказки диспетчеру ОТМ даже может показать все варианты назначения как свободных водителей так и снятия с рейсов уже занятых водителей.
Ничто кстати не мешает использовать весь этот прекрасный функционал также для управления привлеченным парком, пусть с некоторыми поправками. Даже если наемная машина не всегда в поле вашего зрения, перевозчик может регулярно сообщать следующую доступную дату и точку по своим машинам, чтобы вы могли на него рассчитывать. Только подумайте как это ускорило бы процесс поиска транспорта!