Электронный журнал «Труды МАИ». Выпуск № 58
шшш.так ги/эсюпсеЛп^у/
УДК 519.854.2
Автоматизированный программный комплекс для формирования графиков оборота воздушных судов
А. О. Махорин, М. Н. Мусолов, Д. Н. Чуркин
Аннотация
Рассмотрены основные функции и структура автоматизированного программного комплекса, предназначенного для формирования графиков оборота воздушных судов пассажирской авиакомпании. Дано общее описание основных функциональных блоков, базы данных, графического интерфейса пользователя. Приведены общие сведения о программной реализации.
Ключевые слова:
планирование авиаперевозок; задача назначения самолетов на рейсы; график оборота ВС; автоматизированный программный комплекс.
Введение
Эффективное оперативное управление парком воздушных судов является одной из наиболее актуальных проблем, стоящих перед авиакомпаниями. Сложность и многофакторность данной проблемы предполагает использование для ее решения автоматизированных систем, обеспечивающих информационную и алгоритмическую поддержку процесса принятия решений в ходе осуществления производственной деятельности авиакомпании. В данной статье рассматривается автоматизированный программный комплекс, предназначенный для решения задачи формирования графиков оборота воздушных судов и назначения самолетов на рейсы. Данная задача возникает на последнем этапе процесса планирования авиаперевозок и занимает важнейшее место в процессе оперативного управления, поскольку ее решение служит основой для составления суточного плана полетов, определяющего выполнение рейсов конкретными самолетами на ближайшие сутки.
Задача формирования графиков оборота состоит в определении однозначного соответствия рейсов и конкретных воздушных судов (самолетов), которые будут выполнять эти рейсы, исходя их текущего состояния самолетов, степени их готовности, наличия
разрешений и ограничений по маршрутам, а также исходя из их коммерческой загрузки. Помимо регулярного планирования данная задача также включает в себя оперативную модификацию рейсов и соответствующих назначений (при снижении или превышении фактической коммерческой загрузки, отсутствии ВС для выполнения рейса по расписанию, необходимости введения дополнительных рейсов и посадок, и т. п.) [1].
В настоящее время назначение самолетов на рейсы в большинстве российских авиакомпаний производится либо вручную, либо с применением примитивных автоматизированных систем фиксирующего характера, что не позволяет обеспечить высокое качество принимаемых решений [2, 3]. В связи с этим разработка автоматизированного программного комплекса, предназначенного для решения данной задачи на основе формальных математических методов, является весьма актуальной.
Основные функции и структура программного комплекса
Рассматриваемый автоматизированный программный комплекс (АПК) обеспечивает
выполнение следующих основных функций:
• ведение сезонного расписания и поправок к нему;
• ведение текущего состояния отдельных ВС;
• ведение регламента по техническому обслуживанию ВС (оперативные и периодические формы);
• формирование предварительных графиков оборота;
• формирование окончательных графиков оборота и назначение конкретных ВС на рейсы с учетом их доступности;
• анализ возможных вариантов при изменении расписания и текущей оперативной обстановки.
Процесс формирования графика оборота показан на рис. 1. Целью формирования предварительного графика для "обезличенных" ВС является анализ возможности выполнения расписания с точки зрения наличия достаточного количества ВС.
Рис. 1. Процесс формирования графика оборота ВС.
Для формирования предварительного графика оборота предназначен функциональный блок "Расстановка рейсов". Этот блок не имеет графического интерфейса пользователя, так как решение соответствующей задачи выполняется в автоматическом режиме и не требует вмешательства пользователя. Результатом решения данной задачи являются оптимальные цепочки рейсов, которые рассчитываются с учетом критериев, задаваемых пользователем.
Исходными данными для решения задачи формирования предварительных графиков оборота служит сезонное расписание, которое формируется на некоторый заданный период (сезон) на основе прогнозируемой коммерческой загрузки авиакомпании. Расписание описывает множество рейсов, для которых определены недельная периодичность, время отправления и прибытия, а так же типы самолетов, которые должны выполнять отдельные рейсы.
Полученный график оборота поступает в функциональный блок «Диаграмма Ганта». Этот блок имеет средства визуализации и редактирования графика оборота в виде диаграммы Ганта. Данная функция предназначена для автоматизированной замены "обезличенных" самолетов конкретными бортами, а также для изменения цепочек рейсов (ростеров), которые были сформированы блоком "Расстановка рейсов".
Взаимодействие рассмотренных функциональных блоков показано на рис. 2. Блок "Диаграмма Ганта" передает дату начала формирования графика оборота блоку "Расстановка рейсов" и тем самым инициирует формирование графика оборота на основе сезонного
3
расписания. Полученный график возвращается в блок "Диаграмма Ганта" для последующей обработки.
Рис. 2. Схема взаимодействия основных функциональных блоков.
Рис. 3. Схема взаимодействия модулей блока "Диаграмма Ганта".
Для реализации блока "Диаграмма Ганта" используется архитектура "модель-вид" (рис. 3), в рамках которой лежит идея разделения данных и интерфейса пользователя. Модель отвечает за работы с данными и состоит из двух взаимодействующих модулей: источника данных и контроллера. Источник данных содержит описание модели данных, а также сами данные. Контроллер предоставляет интерфейс доступа к источнику данных — по запросу от сцены считывает необходимую информацию из источника данных, подготавливает ее и передает для дальнейшей обработки. Вид в данном случае — это графическое представление диаграммы Ганта, реализованное в виде двух модулей: сцены и представления. Сцена представляет собой рабочую область графического интерфейса (т. е.
является рабочей областью для множества добавленных в нее графических элементов). Графические элементы хранятся в виде структур и интерпретируются в соответствии с моделью данных. Экземпляр сцены использует предоставляемый контроллером интерфейс для получения данных из источника и согласно модели создает элементы и сохраняет их в виде структур. Под представлением в данном случае понимается все, что имеет непосредственное отношение к графическому интерфейсу, то есть представление отвечает за отображение множества объектов сцены и за взаимодействие с пользователем.
Структура базы данных
Для описания редко изменяемых данных (каталог ВС, аэропортов, стран и типов ВС)
используется формат XML — самодокументируемый формат, который описывает структуру и имена полей, а также значения полей. Данные о рейсах могут часто изменяться с течением времени и использовать для их хранения формат XML нецелесообразно. Принимая во внимание незначительный объем хранимых данных, для их хранения используются простые текстовые файлы с разделителями (CSV).
Далее представлено описание полей сущностей (таблица 1) и схема структуры базы данных (рис. 4).
Параметр Сущность Описание
AP CODE Аэропорт Код аэропорта (IATA)
AP TZ Часовой пояс (UTC)
AP NAME Название аэропорта
AP CITY Город
AP CN Страна
CN CODE Страна 2-буквенный латинский код страны (ISO)
CN NAME Название страны
FL ID Рейс Номер рейса
FL LEG Сегмент рейса
FL DEP.CODE Код аэропорта вылета
FL DEP.DATE Дата вылета
FL DEP.TIME Время вылета
FL ARR.CODE Код аэропорта назначения
FL ARR.DATE Дата прилета
FL ARR.TIME Время прилета
FL TYPE Тип самолета выполняющего рейс
FL TAIL Номер борта выполняющего рейс
TP CODE Типы ВС Код типа борта
TP NAME Наименование типа
AC TAIL ВС Номер борта
AC TYPE Код типа
AC NAME Название борта
Таблица 1. Описание полей данных
5
CIM_CODE I ~ " I I I
Страна
*CN_CODE CN NAME
Аэропорт
*АР CODE
s АР TZ
CODE APCITY AP_CN
AP CODE
FL_DE P.CODE FL ARR.CODE
Рейс
*FL_ID
*FL_LEG
*FL_DEP.DATE
FL_DEP.TIME
FL_DEP.CODE
FL_ARR.DATE
FL_ARR.TIME
FL_ARR.CODE
FL_TYPE
FL TAIL
FL TYPE TP CODE
Тип ВС
*TP_CODE TP NAME
TP CODE
FL_TAIL
AC TAIL
ВС
*AC_TAIL ACTYPE AC NAME
AC TYPE
Рис 4. Структура базы данных программного комплекса
Графический интерфейс пользователя
Графический интерфейс программного комплекса разработан на основе MDL Окно
"Рабочая панель" является основным окном, в котором размещаются рабочие окна. Это окно ограничивает часть экрана, доступную рабочим окнам системы, и содержит следующие элементы управления, общие для всех рабочих окон:
• основное меню и панель инструментов;
• строку состояния, расположенную внизу окна.
Общая панель меню и панель инструментов для всех дочерних окон уменьшает загроможденность экрана элементами интерфейса и увеличивает его полезную площадь. Над всеми окнами приложения можно выполнять стандартные операции, как с одним окном, что предоставляет пользователю удобную возможность для работы с несколькими вариантами графика оборота (рис. 5).
Рис. 5. Основное окно с открытыми рабочими окнами.
Основное меню содержит команды создания графика оборота (вызов блока "Расстановка рейсов"), открытия уже существующих вариантов и сохранения текущего (активного) графика.
На панели инструментов находятся следующие кнопки:
• "Создать" — вызвать диалог формирования графика оборота;
• "Открыть" — вызвать диалог выбора сохраненных вариантов графика;
• "Сохранить" — сохранить текущий (активный) вариант графика.
Рис. 6. Основные графические элементы рабочего окна.
Рабочее окно является графическим интерфейсом блока "Диаграмма Ганта" и содержит следующие основные графические элементы (рис. 6):
1) линейка для индексирования работ по времени.
2) краткая информацию о ВС (бортовой номер);
3) ростер — горизонтальная линия, определяющая цепочку рейсов;
4) ассоциативный рейс — последовательность рейсов, выполняемая одним самолетом от отправления из базового аэропорта до прибытия в базовый аэропорт;
5) рейсы — целевая информация, отображаемая в виде полосок определенного цвета (в соответствии с терминалом базового аэропорта) и показывающая номер рейса, аэропорт пункта назначения, время отправления и прибытия.
Для анализа текущего графика оборота и внесения изменений рабочее окно обеспечивает следующие функции:
• изменение масштаба (детализации);
• навигация по рабочему пространству графика оборота;
• просмотр подробной информации о ВС или рейсе;
• изменение назначения самолета на отдельный рейс или ассоциативный рейс (рис. 7).
в 3 Мау 2010 а 3 М эу 2010
35 06 07 08 | 09 10 11 | 12 | 13 14 | 15 | 16 17 35 | 05 | 07 08 | ДО | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
1 0620СВС 12055УО 1
259 1030 260 1525
2 2 ОбгОСОС 1205вУО
259 1030 260 1525
В 3 М ау 2010 В ЗМау 2010
35 | 06 07 | 08 | СВ | 10 | 11 12 | 13 14 | 15 | 16 | 17 35 06 | 07 | 08 | П0 10 | 11 | 12 | 13 | 14 15 | 16 17 |
0620С0С 12055УО 0620С0С
1 |___ 1 |_|
259 1030 260 1525 259 1030
2 1205йУО
260 1525
Рис. 7. Изменение назначения самолета на рейс.
Реализация программного комплекса
Для разработки основного программного обеспечения программного комплекса
использовались язык Си++ и библиотека Qt [4], которая обеспечивает обширный набор готовых объектов для реализации графического интерфейса пользователя. Главная программа состоит из рабочей панели и множества рабочих окон, которые реализуют функциональный блок «Диаграмма Ганта». Основная компонента данного функционального блока включат в себя следующие объекты:
• GCDiagramView ("Представление");
• GCDiagramScene ("Сцена").
"Представление" отвечает за взаимодействие с пользователем и отображение графических элементов, контейнером для которых является "Сцена". Основными графическими элементами диаграммы являются исполнитель и его заголовок (GCActor и GCActorHeader соответственно), множество работ (GCJob), связанных с исполнителем, и временная шкала (GCRuler), позволяющая соотнести множество работ во времени. Контроллер (ICController) — базовый объект, описывающий интерфейс доступа к источникам данных и представляющий собой класс с виртуальными методами, которые могут быть переопределены в производных классах для доступа к конкретным источникам данных.
Функциональный блок "Расстановка рейсов" представляет собой программу на языке Си, которая реализует алгоритм расстановки рейсов, основанный на использовании однопродуктовой сетевой модели и методов сетевой оптимизации [5]. На вход этой программы поступает файл с сезонным расписанием и файл с управляющими параметрами, указывающими, для какого типа ВС необходимо выполнить предварительную расстановку, начиная с какой даты и на какой период. Выходом данного блока является простой
текстовый файл в формате CSV, которой содержит найденные оптимальные цепочки рейсов. При этом имеется возможность учета всех дополнительных ограничений для индивидуальных самолетов при переборе допустимых решений основной сетевой задачи в рамках метода ветвей и границ.
Библиографический список
1) Козлов С.А. Повышение эффективности управления производственной деятельностью
авиакомпании на основе создания комплексной автоматизированной системы : автореф. дис. ...канд. техн. наук : 05.13.06 / С. А. Козлов ; МГТУ «Станкин». - М., 2007. - 24 с.
2) Schickinger T. Aircraft Routing from Planning to Day of Ops / T. Schickinger // Lufthansa Mathematic Symposium. - Frankfurt, 2008. - 23 p.
3) Schickinger T. The potential of tail assignment optimization / T. Schickinger // AGIFORS Airline Operations conference: Optimizing the Schedule Life Cycle. - Amsterdam, 2008. - 23 p.
4) Шлее М. Qt4.5. Профессиональное программирование на C++ / М. Шлее. - СПб. : БХВ-Петербург, 2010. - 896 с.
5) Махорин А. О. Постановка и решение задачи назначения самолетов на рейсы / А. О. Махорин, А. М. Станкевич // Вестник Московского авиационного института. - 2010. -т.17, № 5. - С. 245-250.
Сведения об авторах:
Махорин Андрей Олегович, доцент Московского авиационного института (национального
исследовательского университета), к.т.н.
МАИ, Волоколамское ш., 4, Москва, А-80, ГСП-3, 125993;
тел.: (499) 158-45-30, e-mail: mao@gnu.org
Мусолов Максим Николаевич, аспирант Московского авиационного института (национального исследовательского университета). МАИ, Волоколамское ш., 4, Москва, А-80, ГСП-3, 125993; тел.: (499) 158-23-52, e-mail: maxmusolov@gmail.com
Чуркин Дмитрий Николаевич, студент Московского авиационного института (национального исследовательского университета);
МАИ, Волоколамское ш., 4, Москва, А-80, ГСП-3, 125993; тел.: (499) 158-23-52, e-mail:churkin.dn@gmail.com