Янков И.А, Шибанов С.В. , Шашков Б.Д. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ МОДЕЛИ РАСПИСАНИЙ С ДРЕВОВИДНОЙ ИЕРАРХИЧЕСКОЙ СТРУКТУРОЙ ДЛЯ ПЛАНИРОВАНИЯ РЕСУРСОВ RENT-A-CAR КОМПАНИЙ
Рассматривается пример использования модели расписаний с древовидной иерархической структурой связей применительно к предметной области построения расписаний для ресурсов rent-a-car компаний. Описываются основные особенности данной предметной области, требования к генерации расписаний для водителей и автомобилей. Освещаются основные типы ресурсов и задач, а также схемы их взаимодействия в процессе исполнения плана. Делается вывод об эффективности использования предложенных моделей в процессе построения расписаний для ресурсов rent-a-car компаний.
Введение. Бизнес сдачи автомобилей в аренду представляет собой довольно простой процесс предоставления клиентам автомобилей на прокат. Обычно клиент указывает группу желаемого автомобиля, время и место, где он хотел бы его взять, а также место и время где он бы хотел его оставить после истечения срока аренды.
Для того чтобы максимально удовлетворить требования клиента многие компании имеют огромный флот машин и большой штат водителей, которые ежедневно доставляют и забирают тысячи автомобилей на обширной территории.
Как правило, территория обслуживания разбивается на множество небольших регионов, в рамках которых функционируют филиалы - небольшие станции, куда стекается информация о заказах, где скапливаются и обслуживаются автомобили и начинают свой рабочий день водители. На каждой станции имеется специальный персонал, который занимается ручным построением расписания для водителей и машин. Обычно эту работу выполняют очень опытные специалисты, которые, учитывая множество факторов, определяют какую машину, какому клиенту отдать, а также какой водитель, когда и где будет забирать или доставлять автомобиль и т.д.
Решение задачи автоматического построения расписания ресурсов в данной предметной области представляет большой практический интерес, т.к. может привести к существенному увеличению эффективности использования ресурсов. Однако для решения этой задачи необходимо учитывать, что расписание водителей и машин является сложным составным объектом, связывающим множество участников и операций, которые они выполняют на разных стадиях бизнес-процесса с учетом логической последовательности, места и времени. А значит, разработку системы автоматического построения расписаний необходимо начать с разработки модели расписаний, способной не только описывать внутренние связи между задачами и операциями, но и определять преобразования различных участков расписания, сохраняя при этом его логическую ценность и непротиворечивость.
Модель расписаний с иерархической древовидной структурой связей. В работах [1, 2] нами была
подробно описана модель расписаний с иерархической древовидной структурой связей. В данной статье будет показано, как ранее предложенная модель применяется для решения задачи построения и динамического перестроения расписаний для rent-a-car предметной области.
Водитель 1 Водитель 2 Водитель 3 Водитель 4 Машина 1 Машина 2 Машина 3 Машина 4
1 9.00 1 12.00
- перемещение машины
II - доставка машины клиенту
□ - забор машины у клиента
15.00 t
- перемещение в роли пассажира машины
- перемещение в роли водителя машины
- недоступность водителя
Рисунок 1. Пример расписания водителей и машин для rent-a-car компании.
Проанализируем пример расписания водителей и машин, представленный на рисунке 1 и общие особенности данной предметной области с точки зрения генерации плана. Исходными данными для планирования является последовательность требований, каждое из которых представляет собой клиентский заказ на аренду автомобиля. Для того чтобы обслужить такое требование (подготовить автомобиль к аренде) необходимо не просто предоставить автомобиль, но и обеспечить подготовку автомобиля к аренде, т.е. помыть и доставить его в нужное место. Для выполнения этих действий необходимо привлечь дополнительные ресурсы в виде водителей и других автомобилей. Это означает, что в данной предметной области процесс обслуживания требования может задействовать несколько разнотипных ресурсов. При этом последовательность выполнения задач для обслуживания требования ресурсом каждого типа не определена заранее, а зависит от внутреннего состоянии и расписания ресурсов. Например, чтобы подготовить один автомобиль к аренде необходимо всего лишь помыть его, в то время как для подготовки другого автомобиля требуется забрать его с предыдущей аренды, помыть и доставить новому клиенту. Кроме того, в один момент времени сразу несколько ресурсов могут осуществлять подготовку автомобиля: первый водитель может доставлять автомобиль, второй водитель на дополнительном автомобиле перемещаться в точку доставки, чтобы оттуда забрать первого водителя и т.д. И оба эти действия будут связаны именно с процессом обслуживания одного требования. При этом допускается
многократное использование одного ресурса для обслуживания каждого требования, например, один водитель может помыть автомобиль и сразу же его доставить.
Такой анализ показывает, что процесс обслуживания каждого требования в rent-a-car предметной области является поэтапным разбиением одной задачи на несколько подчиненных и последовательное выполнение их различными ресурсами [1]. Именно поэтому расписания описывается с помощью иерархической структуры, позволяющей отражать причинно-следственные связи между задачами в процессе обслуживания требования.
Схема ветвления, типы задач и ресурсов. Итак, согласно предложенной модели расписаний, для того, чтобы описать процесс обслуживания требования в общем виде необходимо определить типы используемых ресурсов, типы выполняемых задач, а также возможные иерархические связи между ними (схему ветвления задач).
В качестве основных типов ресурсов выделим автомобили (Rc) и водителей (Rd), как основные единицы деятельности по обслуживанию заказов. Процесс определения типов задач проводится совместно с процессом выявления шаблонных связей между ними (схемы ветвления), так чтобы в итоге получить не просто список внутренних активностей, на которые разбивается процесс обслуживания каждого требования, но и правила их формирования.
Пусть каждая операция в расписании ресурсов обладает следующими общими характеристиками: место начала, место окончания, время начала, время окончания [3] . То есть o=<Ss: ds-Sf: df>. Так например, если водитель перемещается с географической точки S1 в точку S2 в интервале времени 10.00-10.45 одного дня, то краткая запись операции будет выглядеть, как o=<S1:10.00- S2:10.45>. Тогда последовательность O = (ox, 02, ... on) образует расписание одного ресурса. Согласно ограничениям пред-
метной области: oi.Sf=oi+1.SS, oi.df ^ oi+1.dS для 1 <i <n- 1 .
Определим тип задачи заказа (Td) как тип основной задачи планирования подготовки автомобиля клиенту. Это означает, что ресурсом-исполнителем для данного типа задач будет являться тип ресурсов Rc. То есть в ходе планирования для каждого заказа будет создана задача типа Td, ресурсом-исполнителем которой будет являться доставляемый в рамках данного заказа автомобиль. Операции-исполнители для данной задачи будут иметь тип rental, при этом dS - время фактического начала аренды, df- планируемого окончания, SS - место передачи автомобиля клиенту, Sf - место забора автомобиля после истечения срока аренды. Ресурс-потребитель для данного типа задач должен быть не определен, т.к. в дереве задачи данного типа всегда будут являться задачами верхнего уровня (главными задачами).
Однако разместить в расписании некоторого ресурса типа Rc операцию-исполнителя задачи типа Td явно не достаточно для того, чтобы считать связанный заказ корректно запланированным. Ведь в расписании машины не будет плана предварительной помывки и доставки, что будет противоречить ограничениям предметной области по пространственной и логической связанности. Для правильной подготовки машины к аренде, необходимо создать дополнительные задачи ее помывки или доставки.
Зададим тип задачи Tw как тип дополнительно задачи по помывке автомобиля, стоящего на станции для подготовки его к аренде. Ресурсом-исполнителем для данного типа задачи будут выступать ресурсы типа Rd (водители, которые осуществляют помывку автомобиля), а ресурсом-потребителем являются ресурсы типа Rc (автомобили, которые требуют помывки). Операция-исполнитель и операция-потребитель имеют тип washing при этом dS - время начала помывки, df- время окончания, Ss ,Sf -станция на которой производится помывка. Задачи данного типа будут всегда подчиненными к задачам типа Td. На рисунке 2 представлен пример расписания, состоящего из операций задач Td и Tw типов.
Рисунок 2. Пример расписания выполнения задач Td и Tw типов.
Обозначим тип задачи Tdr, как тип задачи по доставке автомобиля в место, указанное в заказе на аренду. Обычно указывается адрес географической точки, где будет осуществлена передача автомобиля. Ресурсом-исполнителем для данного типа задачи будут выступать ресурсы типа Rd (водители, которые осуществляют доставку автомобиля), а ресурсом-потребителем являются ресурсы типа Rc (автомобили, которые требуют доставки). Доставка может осуществляться как автомобиля, стоящего на станции, так и автомобиля, оставленного клиентом в любом другом месте. Операция-исполнитель и имеет тип driving, а операция-потребитель - moving, при этом ds - время начала движения, df- время окончания, Ss ,Sf - место начала и окончания передвижения. Задачи данного типа будут всегда подчиненными к задачам типа Td.
Введем тип задачи Tс как тип задачи по забору автомобиля с места, в котором он был оставлен предыдущим клиентом на станцию, указанную в заказе на аренду, как место сдачи автомобиля на прокат. Ресурсом-исполнителем для данного типа задачи будут выступать ресурсы типа Rd (водители, которые осуществляют забор автомобиля), а ресурсом-потребителем являются ресурсы типа Rc (автомобили, которые требуют забора). Операция-исполнитель и имеет тип driving, а операция-потребитель -moving.
Таким образом, главная задача типа Td может иметь нескольких подчиненных задач типов Tw, Tdr, Tc. Рассмотрим условия создания каждого типа подчиненных задач и тем самым определим схему ветвления для задачи типа Td.
Задачи типа Tw создаются, если сдаваемый в аренду автомобиль требует помывки на станции, то есть в момент планирования задачи Td при размещении операции типа rental как Oi, предыдущая операция в расписании ресурса Oi-i не является операцией типа washing или же i = 1 (предыдущей операции не существует).
Задачи типа Tdr создаются, если сдаваемый в аренду автомобиль требует перемещения в место передачи автомобиля клиенту. То есть в момент планирования задачи Td при размещении операции типа rental как Oi, предыдущая операция в расписании ресурса Oi-i имеет место окончания отличное от ме-
D - Washing | ~| - Rental
Td1
ста передачи: o^1.Sf ф oi.SS. Задача описывает необходимость доставить автомобиль из o^1 .Sf в
oi.s3..
Задачи типа Tc создаются, если сдаваемый в аренду автомобиль требует перемещения автомобиля на станцию, указанную в заказе на аренду, как место сдачи автомобиля на прокат. То есть в момент планирования задачи Td при размещении операции типа rental как oi, предыдущая операция в расписании ресурса oi-1 имеет место окончания географическую точку отличную от станции передачи: o^1 .SfФ oi.SS. Задача описывает необходимость забрать автомобиль из o^1 .Sf в oi.SS. При этом обязательным условием является тот факт, что местом передачи автомобиля клиенту является станция.
- Washing k\\\1 - Driving ГУУУ] - Moving [ I - Rental
- Задача
-"d___x - Ресурс-потребитель
1 'kF ~У - Ресурс-исполнитель
Рисунок 3. Пример расписания выполнения задач Td, Tw и Tdr типов.
Таким образом, в зависимости от самого заказа (места передачи автомобиля) и расписания арендуемого автомобиля Oc, задача типа Td может создавать подчиненные задачи в следующей последовательности:
branch1(Td, Oc) -> Tc branch2(Td, Oc) -> Tw branchj(Td, Oc) -> Tdr
Как правило, наиболее часто создаются следующие последовательности подчиненных задач:
Tc,Tw - машина сначала забирается с удаленной географической точки, потом моется на станции и на этой же станции сдается в аренду;
Tw - автомобиль, стоящий на станции, моется и сдается в аренду;
Tw, Tdr - автомобиль моется и доставляется в географическую точку, где и передается клиенту (рисунок 3).
Однако процесс доставки и забора автомобилей должен задействовать более чем одного водителя. Ведь в общем случае требуется доставляющего автомобиль водителя каким-то образом забрать, а забирающего автомобиль водителя - доставить к месту забора. Это необходимо сделать в целях обеспечения пространственной связанности, иначе водители могут остаться брошенными в географических точках, что не будет соответствовать ограничения предметной области. Для этого предложено ввести специальный тип задач по перемещению водителей в качестве пассажиров. Обозначим такой тип задач как Tr. Ресурсом-исполнителем для данного типа задачи будут выступать ресурсы типа Rd (водители, которые перевозят пассажиров), ресурсом-потребителем являются также ресурсы типа Rd (водители в качестве пассажиров).
- Washing KW^ - Driving K-OVl - Moving I I - Rental
- Задача
- Ресурс-потребитель
- Ресурс-исполнитель
Рисунок 4. Пример расписания водителей и машин по обслуживанию одного заказа.
Кроме того, выполняя задачи типа Tr, водители должны использовать дополнительные автомобили для того, чтобы подъехать к пассажиру, выполнить задачу по его перевозке и вернуться на станцию. В качестве таких автомобилей используются любые машины из доступного флота, включая и те, что имеют план доставки. Поэтому для правильного учета автомобилей необходимо их подобное использова-
ние обозначать операциями в расписании. Для планирования такой активности введем тип задач Tcar, который будет отражать необходимость использования машины для перемещения водителя. Ресурсом-исполнителем для данного типа задачи будут выступать ресурсы типа Rc (автомобили которые используются для внутренних целей), ресурсом-потребителем являются ресурсы типа Rd. Перемещение водителя с автомобилем может осуществляться в/из любого места (станция или географическая точка). Операция-исполнитель имеет тип moving, а операция-потребитель - driving, при этом ds - время начала движения, df - время окончания, Ss ,Sf - место начала и окончания передвижения.
Подобно тому, как описывается схема ветвления для задач типа Td, задается и схема ветвления для задач Tc и Tdr. Они создают подчиненные задачи типа Tr, если для выполнения работы водителю требуется переместиться в точку начала работы или же вернуться на станцию.
На рисунке 4 представлен возможный вариант расписания водителей и автомобилей по обслуживанию одного заказа.
Заключение. Расписание обслуживания заказа в rent-a-car предметной области может быть полностью описано с помощью предложенной модели расписаний с иерархической древовидной структурой связей. При этом сами связи, формируемые в ходе работы схемы ветвления, отражают причинноследственные закономерности процесса обслуживания заказа и предназначены для того, чтобы алгоритм построения расписаний имел возможность пересмотреть некоторые ранее принятые решения о размещении тех или иных задач, сохраняя логическую целостность и непротиворечивость всего расписания.
Использование предложенной модели расписаний позволило разработать алгоритм и программную реализацию системы автоматизированного построения расписаний, которая была внедрена в качестве основной системы оперативного планирования в британском отделении международной компании по сдаче автомобилей в аренду.
ЛИТЕРАТУРА
1. Янков И.А., Шибанов С.В., Шашков Б.Д. Нотация представления сильносвязанных расписаний реального времени с учетом внутренней метаинформации // Известия Высших Учебных Заведений. Поволжский Регион. Технические Науки, 2009. № 4. - C. 26-37.
2. Янков И.А., Шибанов С.В., Шашков Б.Д. Модель расписаний с древовидной структурой связей // Программные продукты и системы, 2010. №1. - C. 77-79.
3. S.Andreev, G.Rzevski, P.Shviekin, P.Skobelev, Igor Yankov, A Multi-Agent Scheduler for Rent-a-Car Companies // 4th International Conference on Industrial Applications of Holonic and Multi-Agent Systems, Linz, Austria, 2009.