УДК 519.16
И. А. Янков, С. В. Шибанов, Б. Д. Шашков НОТАЦИЯ ПРЕДСТАВЛЕНИЯ СИЛЬНОСВЯЗАННЫХ РАСПИСАНИЙ РЕАЛЬНОГО ВРЕМЕНИ С УЧЕТОМ ВНУТРЕННЕЙ МЕТАИНФОРМАЦИИ
Аннотация. Описываются характеристики однородных и многостадийных расписаний, выделяется группа сильносвязанных расписаний и области их применения. Предлагается оригинальная нотация для генерации и обработки таких типов расписания. Описывается предметная область построения расписаний для компаний, сдающих автомобили в аренду, и на базе этого примера показывается применение основных элементов нотации. Приводятся данные об эффективности использования предложенной нотации, перспективах ее развития.
Ключевые слова: алгоритм планирования, теория расписаний, однородная задача, многостадийная задача, внутренняя метаинформация, нотация представления расписаний, расписание реального времени, связь задач и операций.
Abstract. The paper gives overview of main modern types of schedules, defines the new tightly coupled kind of schedules and fields of its applications. The author suggests special notation for generation and processing such kind of schedule. The rent-a-car business domain is presented as main demonstration example of usage of basic features of the suggested notation. In conclusion the author describes the first results of the notation utility and forms the direction of the future development.
Keywords: scheduling algorithm, notation of the schedule, open shop scheduling, task’s tree, rent-a-car business, inner metainforamation, task-operation links, realtime schedule, scheduling theory.
Введение
Задачи составления расписания носят самый общий характер. Они возникают там, где существует возможность выбора той или иной очередности выполнения работ: при составлении расписания движения поездов и самолетов, при распределении работ на производстве, планировании деятельности образовательных и административных учреждений.
Успешное решение многих практических задач построения расписаний привело к развитию систем автоматического построения и динамического управления расписаниями в целом ряде областей человеческой деятельности: управлении, производстве, транспорте, образовании, сельском хозяйстве и т.д. Задачей таких систем является генерация эффективных расписаний и поддержка сводного плана в режиме реального времени, т.е. динамическое перестроение расписания согласно изменяющимся внешним условиям и данным о выполнении плана. Наиболее сложные и интересные задачи стоят перед разработчиками таких систем в областях, где в процессе исполнения сводного плана участвует множество разнотипных ресурсов, расписания которых сильно связаны друг с другом, а изменения в планах одного участника вызывают изменения в планах других участников.
1 Постановка задачи
Рассмотрим основные типы расписаний, наиболее часто встречающиеся в практических задачах. Если каждая выполняемая работа задействует
один ресурс и при этом не зависит от выполнения других работ, то расписание представляет собой простую последовательность операций, которые необходимо выполнить ресурсам, участвующим в планируемом процессе: сотрудникам, устройствам, оборудованию. То есть для того чтобы выполнить множество работ N = {пь п2, ..., пк}, используется конечное множество ресурсов Я = {г1, г2,..., гт}. При этом каждой работе п е N сопоставляется такое множество ресурсов Я с Я, что работа п должна быть выполнена любым из ресурсов Ье ЯI, но не более чем одним одновременно [1]. Такие расписания называют однородными. Анализировать, строить и изменять их очень легко, так как для каждой операции достаточно хранить лишь ссылку на работу, ссылку на ресурс и временные показатели выполнения работы. Пример такого расписания приведен на рис. 1.
Ресурс 1 Ресурс 2
Пі
П'2 I Пз I щ~
П5
П6
П7
П8
П9
Ресурс т
Пк-3
Пк-2
Пк-1
Пк
?0 t
Рис. 1 Пример однородного расписания
Если же каждая выполняемая работа требует привлечения нескольких ресурсов в определенной последовательности, то операция должна хранить не только ссылку на работу, но и порядковый номер данной операции в списке операций работы, т.е. процесс выполнения работы п е N включает рг-стадий. При этом каждой работе п е N и каждой стадии q (1 < q < рг-) выполнения сопоставляется некоторое множество ресурсов Яlq с Я. Работа
П е N на стадии q должна быть выполнена любым из ресурсов Ь е Яlq, но
не более чем одним ресурсом одновременно. Такие расписания обычно называют многостадийными [2]. Примером многостадийного расписания может быть план обработки одной детали на нескольких станках (рис. 2).
Деталь 1 Деталь 2 Ресурс 1
Ресурс 2 Ресурс з
Д.і Ст.1 Д.1 Ст.2 Д.1 Ст.з
Д.1 Ст.1 Д.2 Ст.1
Д.1 Ст.2 Д.2 Ст.2
Д.2 Ст.1 Д.2 Ст.2 Д.2 Ст.3
Д.1 Ст.3 Д.2 Ст.3
^ t
Рис. 2 Пример многостадийного расписания
К наиболее сложным можно отнести такие расписания, где каждая работа требует одновременного использования нескольких ресурсов. Примером является расписание школьных занятий, когда для каждой операции (урока) необходимо хранить ссылки на несколько ресурсов - преподавателя, аудиторию, класс (рис. 3). Более сложным случаем является расписание работы водителей и автомобилей в компаниях, сдающих автомобили в аренду (rent-a-car companies), потому что в каждый момент времени водитель, выполняя передвижения по доставке/возврату автомобилей и подвозу пассажиров, выполняет несколько задач. Особенностью сводного плана в таких областях является сильная связанность всех ресурсов, когда расписание одного участника тесно переплетается с другими и почти не может быть изменено без серьезного перестроения всего плана [3].
Преподаватель 1 | Урок 1 | Урок 2 Урок 3 |
Преподаватель 2 | Урок 4
Аудитория 1 Урок 1 Урок 2 Урок 3 Урок 4
Класс 1 Урок 1 | Урок 2
Класс 2 | Ур°к 3 | Ур°к 4 |
--------------1----------------------------------------►
Ь ,
Рис. 3 Пример расписания школьных занятий как сильносвязанного расписания
Генерировать, описывать и анализировать такие сильносвязанные расписания - довольно непростая задача, так как необходимо описать все возможные взаимодействия ресурсов в процессе исполнения плана, выделить список работ и учесть внутренние причинно-следственные связи между различными выполняемыми работами.
В данной статье предлагается оригинальная универсальная нотация представления и обработки сильносвязанных расписаний, которая позволит генерировать, сохранять и распознавать расписания с учетом метаинформации, описывающей внутренние связи и зависимости между операциями. Такая нотация необходима для начальной генерации расписания как составной элемент алгоритма построения плана для адаптивного перестроения расписания, когда одно внешнее событие может вызвать изменение небольшой части расписания, сохранив целостность и непротиворечивость плана, для проверки и описания расписания.
Важным требованием к нотации является не только способность описать сложные зависимости между выполняемыми работами, но и наличие возможности быстрого перестроения различных участков расписания. Именно это позволит использовать данную форму представления при разработке систем, которые генерируют и изменяют план в режиме реального времени под воздействием множества внешних событий. В этом случае расписание представляет собой не единый «монолитный» объект с большим количеством внутренних связей, изменение которых невозможно, если хотя бы какая-то часть плана была послана на исполнение, а динамическую последователь-
2B
ность операций в расписании ресурсов, которая может быть подвержена быстрому инкрементальному перепланированию и рекомбинированию [4].
2 Модель и нотация представления сильносвязанных расписаний
Для разработки эффективных систем планирования очень важно выявить характеристики и природу внутренних связей расписаний, а также предложить модель, которая позволила бы описать процесс выполнения каждой работы.
Анализ нескольких типов сильносвязанных расписаний позволил сделать вывод, что процесс выполнения каждой работы - это поэтапное разбиение одной задачи на несколько подчиненных подзадач и последовательное выполнение их различными ресурсами. Так, например, чтобы выполнить работу по доставке автомобиля из точки А в точку В, необходимо создать подчиненные задачи подвоза водителя в точку А перед работой и возврата его на станцию с точки В после выполнения работы.
Также часто бывает необходимым перед началом выполнения работы или после ее завершения осуществить мероприятия по подготовке ресурса к работе. Классическим примером является процесс переналадки станка перед выполнением или после выполнения операции.
Таким образом, любая задача, размещая свои операции в расписании ресурсов, может создавать подчиненные задачи. Такие расписания можно представить в виде связанной древовидной структуры, позволяющей отражать причинно-следственные связи процесса выполнения работ.
Рассмотрим модель такого типа расписаний. Пусть имеется конечное множество работ N = {пь п2, ..., пк} и конечное множество ресурсов Я = {г1, г2, ..., гп}. Будем считать, что процесс выполнения каждой работы состоит только из одной стадии и может быть осуществлен только одним ресурсом, т.е. допускается только непрерывная обработка требования. При этом каждой работе п е N сопоставляется некоторое множество ресурсов Я^ с Я такое, что работа п должна быть выполнена любым из ресурсов Ь е Яг-, но не более чем одним одновременно.
Для описания процесса исполнения плана будем использовать понятие задачи как единицы основной и дополнительной активности для подготовки ресурса к выполнению работы. Каждая задача будет соответствовать одному из типов задач из множества Т = {(1, (2,..., (п}. При этом каждому типу задачи ^ е Т сопоставляется некоторое множество ресурсов ЯI с Я такое, что только ресурсом из множества Яг- может быть выполнена данная задача.
Таким образом, для каждой работы п е N задается своя, специфическая последовательность типов задач В1 = (Т{,Т2,...,ТЬ ), состоящая из Ь
количества элементов, где Т^ е Т (1 < у < Ь), которая означает, что задача
типа ТУ должна быть выполнена перед выполнением работы п основным ресурсом. Таким же образом необходимо задать последовательность типов задач А1 = (Т{, Т2,..., Т1 ), где Т1- еТ (1 < у < а), которые должны быть выполнены после выполнения работы п основным ресурсом. Кроме того, такие
же последовательности можно задавать не только для работ, но и для каждого
типа задачи из множества Т. То есть можно определять Б1 = (Т{, Т2,..., Т! ) и
!І
Лг = (Т{,Т2,...,Т1 ) для ґі єТ . Это будет означать, что перед выполнением и
аі
после выполнения задачи типа ^ ресурсом необходимо выполнить дополнительные задачи типов, входящих в последовательности Б1 и Л . На рис. 4 представлен пример получаемого дерева типов задач, если БТ1 = (Т2), ЛТ1 = (Т5), БТ2 = (Т3), ЛТ2 = (Т4).
В предлагаемой нотации расписание - это совокупность последовательностей операций, заданных для каждого ресурса. Операции содержат описание выполняемой работы и ее временные рамки. Данные о том, с какими другими ресурсами взаимодействует рассматриваемый ресурс в момент выполнения работы и как данная работа связана с другими работами, содержатся в задачах. Каждая задача может иметь операции-потребителей (demand) и операции-исполнителей (resource). Ресурсы, в расписании которых располагаются операции-потребители, имеют открытые в текущий момент потребности и требуют выполнения для них каких-либо операций. Они же характеризуются как выгодополучатели от выполнения задачи. Ресурсы, в расписании которых располагаются операции-исполнители, выполняют поставленные задачи и пытаются удовлетворить указанные выше потребности своими возможностями. Например, если стоит задача подвоза одного водителя другим, то тот, кто везет, является исполнителем, а тот, кто едет как пассажир, - потребителем. Данная зависимость отражает связь нескольких ресурсов во время выполнения одной задачи. Запланировать задачу означает найти исполнителя и определить временные рамки ее выполнения (задать операциям-исполнителям и операциям-потребителям в расписании ресурсов временные значения) [5].
Рассмотрим связи между задачами. Они выражают отношения подчиненности, когда для выполнения одной задачи типа tj е T необходимо дополнительно выполнить другую из последовательностей Б1 или A1. Обычно эти последовательности заранее заданы в каждой предметной области для каждого типа задач. На рис. 5 представлен пример зависимостей между задачами ti, t2, t3. Задача ti является главной для задач t2 и t3.
Таким образом, общий порядок формирования связей между задачами следующий. Сначала определяется задача верхнего уровня. Обычно в качест-
ЗО
ве таковой выбирается задача, для которой наиболее критичен правильный выбор ресурса-исполнителя. Далее эта задача в ходе планирования создает подчиненные задачи, которые будут отражать поиск ресурсов для выполнения дополнительной работы. Подчиненные задачи создают операции-исполнителей в расписании выбранного ресурса и операции-потребителей в расписании ресурса задачи вышестоящего уровня. Каждая подчиненная задача может стать главной для следующего уровня задач.
Задача
операция-потребитель
операция-исполнитель
Рис. 5 Пример иерархии задач расписания
Теперь рассмотрим возможность динамического перестроения расписания реального времени, описанного с помощью предложенной нотации. Введем понятия перепланирования и отмены задач. Перепланирование - это такое воздействие на задачу, которое оставляет неизменными операции-потребителей и удаляет операции-исполнителей задачи, которые впоследствии в ходе нового планирования будут созданы и размещены в расписании другого ресурса. В момент, когда задача перепланируется, все подчиненные задачи должны отменяться. Отмена задачи приводит к удалению операций-исполнителей и операций-потребителей, разрушению связи с родительской задачей и отмене всех подчиненных задач. То есть в случае перепланирования задачи становится неактуальным выполнение подчиненных задач, и для того чтобы корректно удалить все устаревшие операции, необходимо выполнить операции отмены.
Таким образом, данный подход позволяет гибко манипулировать расписанием, высвобождая или занимая его различные участки. Если некоторый ресурс становится недоступным на определенное время, то необходимо просто перепланировать все задачи, операции-исполнители которых располагаются в его расписании в указанное время. Это автоматически приведет к тому, что будут удалены все связанные устаревшие операции на всем множестве ресурсов, а задачи, попавшие в список перепланируемых, будут запланированы заново на новые ресурсы. К сожалению, это возможно только в том случае, если ни одна из отмененных или перепланируемых задач не содержит операций, которые уже были посланы на исполнение. Если же на любом уровне найдется хотя бы одна такая задача, то процесс такого перестроения расписания может привести к неисполнимости всего плана.
Вышеописанные зависимости между задачами и операциями позволяют сформировать «каркас» расписания, который однозначно определяет связи между расписаниями различных ресурсов. Это сильно облегчает возможность
построения и, что еще более важно, адаптивного перестроения различных участков расписания, создает предпосылки к созданию унифицированного способа хранения и обработки всей информации о получаемом расписании, что, в свою очередь, позволяет создавать несколько параллельно работающих алгоритмов планирования, использующих единую форму представления расписания.
3 Применение нотации при построении расписания для компании rent-a-car
Рассмотрим основные особенности построения расписаний для ресурсов компании rent-a-car. Компании rent-a-car сдают автомобили в аренду своим клиентам. Каждый клиент может выбрать группу, к которой относится автомобиль, место и время, где он хочет получить свой автомобиль (автомобиль может быть доставлен туда компанией заранее), а также место и время, где он его хочет оставить после истечения срока аренды. Кроме того, некоторые клиенты могут задать жесткие временные рамки доставки/возврата автомобиля. Частным является случай, когда местом доставки/возврата служит станция. Компании имеют сеть станций, расположенных в разных городах, для обслуживания клиентов и планирования процесса доставки/возврата автомобилей. Все автомобили, принадлежащие компаниям, могут беспрепятственно перемещаться между этими станциями.
Автомобили доставляются клиентам и забираются водителями компаний. Для внутренних целей (забрать водителя после доставки автомобиля, подвезти водителя для возврата автомобиля, переехать на другую станцию) водители используют автомобили компании. Каждый водитель имеет график работы, определяющий рабочие часы на каждый день недели. Кроме того, для водителя задается станция, в которой он начинает работать, и станция, где он должен закончить свой рабочий день. Некоторые водители могут работать сверхурочно, но данное время обычно используется компанией, если есть срочная неотложная работа. Перед тем как доставить автомобиль клиенту, его необходимо помыть на станции.
Автоматическое построение расписания водителей и автомобилей предполагает генерацию последовательности операций, которые ресурсы должны выполнять в течение рабочего дня. Основные операции для водителей выглядят так:
- проехать на автомобиле С1 в качестве водителя с места 51 до места S2 с пассажирами D1, D2 и D3 (driving);
- проехать на автомобиле С1 в качестве пассажира с места S1 до места S2 с водителем D1 (moving);
- помыть автомобиль С1 на станции St1 (washing);
- выполнить передачу автомобиля С1 клиенту в точке S1 (delivery);
- возврат автомобиля С1 клиентом в точке S1 (collection).
Кроме того, операции недоступности (unavailability) в расписании водителя отражают его рабочий график на все дни недели.
Расписание автомобиля представляет собой последовательность операций следующих типов:
- передвижение автомобиля с места S1 до места S2 с пассажирами D1, D2 и водителем D3 (moving);
- помывка автомобиля на станции St1 водителем D1 (washing);
- передача автомобиля клиенту в точке S1 водителем D1 (delivery);
- возврат автомобиля клиентом в точке S1 водителю D1 (collection).
Для примера рассмотрим план работы нескольких водителей по доставке/сбору нескольких автомобилей. Предположим, что необходимо доставить автомобиль С1 с точки S1, где он был оставлен клиентом, в точку S2, где его заберет новый клиент. Для того чтобы это сделать, необходимо водителю D1 оказаться в точке возврата автомобиля (S1), доставить его новому клиенту в точку S2, после чего вернуться на станцию. Чтобы переехать из точки S3 (предположим, это станция), где сейчас находится D1, в точку возврата S1, водитель D1 должен вызвать водителя D2. Чтобы водителю D2 перевезти пассажира, он должен найти автомобиль С2, подъехать на нем к D1, довезти его и вернуться на станцию. Чтобы водителю D1 после передачи автомобиля клиенту вернуться на станцию, он должен в общем случае инициировать поиск автомобиля в этой точке S2, и, если таковой не найдется, то вызвать себе нового водителя D3.
Кроме того, в каждом из этих передвижений могут участвовать несколько пассажиров со своими целями и своими планами. Например, D2 подвозил не только D1, но и D4 к месту возврата автомобиля С3 в точке S4.
Некоторые работы могут связываться в последовательность действий, где каждая новая работа может забирать ресурс как со станции, так и с места окончания предыдущей работы. Например, водитель D3 везет D1 не на станцию, а к месту нового возврата автомобиля С4 в точке S5. В данном случае мы имеем несколько независимых работ, последовательно и параллельно размещенных в расписаниях одних и тех же ресурсов. Описанное выше расписание представлено на рис. 6.
Как видно из примера, расписание в данной предметной области представляет собой сложное взаимодействие различных ресурсов с большим числом причинно-следственных связей, описывающих необходимость существования тех или иных операций, участков расписания. Как следствие, появляется необходимость в использовании предложенной нотации представления и обработки такого расписания.
Определим основные задачи и зависимости между ними для данной предметной области. Главной задачей является задача размещения заказа (De-liveryTask), которая занимается поиском оптимального автомобиля для клиента, так как именно выбор этого ресурса наиболее критичен для общего качества планирования. К ее подчиненным задачам можно отнести помывку автомобиля (WashTask), доставку его клиенту (DrivingTask), возврат автомобиля на станцию (CollectTask), в случае если заказ предусматривает наличие автомобиля на станции. Кроме того, для выполнения многих задач требуется дополнительно переместить водителя из одной точки в другую посредством планирования подчиненной задачи подвоза пассажира (RunnerTask). Например, чтобы выполнить CollectTask, водителю необходимо добраться до точки возврата автомобиля клиентом. Пример расписания для нескольких водителей и автомобилей представлен на рис. 7. В верхней части рисунка изображены задачи и связи между ними, а в нижней указаны операции ресурсов и их принадлежность к задачам.
01
02
03
04 С1
С2
СЗ
С4
9.00
- перемещение машины
- доставка машины клиенту
- возврат машины клиентом
12.00
15.00 1
- перемещение в роли пассажира машины
- перемещение в роли водителя машины
недоступность водителя
Я4 551
02 С2 °
Рис. 6 Пример расписания нескольких поездок
Известия высших учебных заведений. Поволжский регион
Collection Task2
Runner Task2
Driving Task
Washing Task
GoHome Task
Car Task2
Car Taskl
Collect Task2
Car Task3
Collect Taskl
RunnerTaskl
Delivery Task
Driving Task
Washing Task
CarTaskl
CarT ask3
CarT ask3
Driving 1 - Collection Delivery ] - Rental
- Task
- Washing
- Moving
Collection Taskl
Runner Taskl
Delivery Task
la Рис. 7 Пример расписания с учетом внутренних связей
№ 4 (12), 2009 Технические науки. Информа1?тка. вычислительная техника
Заключение
Данная нотация активно применялась в процессе проектирования и разработки автоматической системы планирования ресурсов для компаний, сдающих автомобили в аренду, которая была внедрена при участии авторов в качестве основной системы оперативного планирования в британском отделении международной компании по сдаче автомобилей в аренду. Предложенная нотация позволила однозначно классифицировать все существующие активности планирования (соответствия потребитель-исполнитель для каждого типа задачи), разработать алгоритм динамического построения и перестроения участков расписания, визуализировать основные причинно-следственные зависимости сводного плана. Надо отметить, что применение данной формы представления возможно и в других предметных областях, где процесс построения сильносвязанных расписаний может носить такой же структурный характер.
Список литературы
1. Leung, Joseph Y.-T. Handbook of Scheduling: Algorithms, Models and Performance Analysis / Joseph Y.-T. Leung // Chapman & Hall : CRC Computer and Information Science Series, 2004. - 1224 р.
2. Танаев, В. С. Теория расписаний. Многостадийные системы / В. С. Та-наев, Ю. Н. Сотсков, В. А. Струсевич. - М. : Наука, 1989. - 328 с.
3. Ян ков, И. А. Разработка мультиагентного планировщика для RentACar компаний / И. А. Янков, С. В. Шибанов, Б. Д. Шашков // Новые информационные технологии и системы : труды 8 Международной конференции. -Пенза : Изд-во ПензГУ, 2008. - Ч. 2. - С. 126-134.
4. Himoff, J. Magenta technology multi-agent logistics i-Scheduler for road transportation / J. Himoff, P. Skobelev, M. Wooldridge // The Fifth International Joint Conference on Autonomous Agents and Multi Agent Systems. Proceedings - Industry Track. - 2006. - P. 1514-1521.
5. Andreev, S. A Multi-Agent Scheduler for Rent-a-Car Companies / S. Andreev, G. Rzevski, P. Shviekin, P. Skobelev, Ig. Yankov // 4-th International Conference on Industrial Applications of Holonic and Multi-Agent Systems. -Linz, Austria, 2009. - P. 305-314.
Янков Игорь Александрович аспирант, Пензенский государственный университет
E-mail: igor.yankov@gmail.com
Шибанов Сергей Владимирович
кандидат технических наук, доцент, кафедра математического обеспечения и применения ЭВМ, Пензенский государственный университет
E-mail: serega@pnzgu.ru
Yankov Igor Alexandrovich Postgraduate student,
Penza State University
Shibanov Sergey Vladimirovich Candidate of engineering sciences, associate professor, sub-department of computer application and software, Penza State University
Шашков Борис Дмитриевич
кандидат технических наук, профессор, декан факультета вычислительной техники, Пензенский государственный университет
E-mail: pm@pnz.ru
Shashkov Boris Dmitrievich Candidate of engineering sciences, professor, dean of the department of computer sciences,
Penza State University
УДК 519.16 Янков, И. А.
Нотация представления сильносвязанных расписаний реального времени с учетом внутренней метаинформации / И. А. Янков, С. В. Шибанов, Б. Д. Шашков // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2009. - № 4 (12). - С. 26-37.