Имитационное моделирование на базе AnyLogic

Модель аэропорта. Часть 1

В лекции изложена методика создания имитационной модели аэропорта в среде AnyLogic с использованием пешеходной библиотеки. Материал построен по принципу поэтапного усложнения: от статического задания геометрии пространства (стены) и целевых точек до реализации динамических процессов. Логика повествования следует за разработкой: сначала задается базовая логика движения агентов, затем добавляется визуализация, внутренние препятствия и, наконец, моделируется первая зона обслуживания с очередью на регистрацию.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Создавать геометрию замкнутого пространства для агентов с помощью прямых и редактируемых стен в пешеходной библиотеке.
2. Применять инструмент «Направляющие» для трансформации линейных стен в криволинейные элементы.
3. Настраивать целевую линию как точку входа агентов в модель и точку их выхода.
4. Конструировать простейшую линейную диаграмму процесса движения пешеходов из трех блоков.
5. Задавать и настраивать тип пешеходного агента с 3D-анимацией для визуализации модели.
6. Анализировать влияние добавления внутренних стен на автономное изменение траекторий агентов.
7. Разрабатывать мультисервисную зону обслуживания с единой очередью типа «змейка».
8. Связывать графический объект сервиса с логическим блоком процесса для имитации задержки обслуживания.
Показывать лекцию целиком
Краткое изложение

Terminal.png Terminal.png Мы переходим к модели, в рамках которой будем использовать пешеходную библиотеку (Pedestrian Library). Наша задача — построить имитационную модель движения пассажиров по небольшому аэропорту. Это упрощенная, но показательная реализация, техника которой применима к более сложным проектам.

Процесс стандартный: пассажир прибывает в аэропорт, регистрируется на рейс, проходит досмотр и направляется в зону ожидания у выхода на посадку (гейта). После объявления посадки пассажиры проходят проверку билетов и направляются на борт. В последней фазе мы смоделируем распространение инфекции, но начнем с первой: создадим простую модель, в которой пассажиры прибывают и движутся к выходу.

1. Создание модели и разметка внешних стен

Создаем новую модель, называем её «Аэропорт». В палитре «Презентация» берем элемент «Изображение» и добавляем заранее заготовленный рисунок схемы терминала. Подгоняем размер презентационного окна под габариты картинки.

Теперь необходимо обозначить физические границы, чтобы агенты не выходили за рамки рисунка. Переходим в пешеходную библиотеку, выбираем объект «Стена» (Wall) и начинаем отрисовывать внешний контур аэропорта, разбивая скругления на линейные участки.

Чтобы создать плавный изгиб стены, используется инструмент «Редактировать направляющие». Рисуем прямую стену, затем через контекстное меню правой кнопкой мыши выбираем «Редактировать направляющие» и, перемещая маркеры кривизны, добиваемся идеальной округлости. Это позволяет точно обвести контур любой сложности, не прибегая к объекту «Округлая стена», который создает заполненную область (подобие колонны) и не подходит для описания границ.

2. Внутренние препятствия и целевые линии

После создания внешнего периметра отрисовываем внутренние стены и колонны, используя прямоугольные и округлые стены. Благодаря этим объектам агенты будут «знать» о препятствиях и обходить их. Если этого не сделать, они смогут проходить сквозь элементы на картинке.

Далее задаем целевые линии (Target Line) — ключевые пространственные метки для пешеходной модели:
• Entry Line (entryLine): место появления пешеходов в модели.
• Gate Line (gateLine): место назначения, при пересечении которого агенты покидают модель.

3. Базовая логика и создание агента
Описываем простейший процесс, состоящий из трех блоков из библиотеки моделирования процессов:
1. Ped Source: генерирует агентов на линии entryLine с интенсивностью 100 человек в час.
2. Ped Go To: направляет агентов к целевой линии gateLine.
3. Ped Sink: уничтожает агентов после достижения цели.

На этом этапе модель уже работает: люди появляются и идут напрямую к выходу, обходя созданные стены. Это обеспечивается встроенной молекулярной моделью движения в непрерывном пространстве.

Теперь заменим стандартные кружочки на 3D-модели людей. В пешеходной библиотеке на вкладку Main выносим элемент «Тип пешехода» (Pedestrian Type), называем его Passenger и в его свойствах выбираем 3D-анимацию в форме человека. Затем в блоке Ped Source в свойстве «Новый пешеход» указываем созданный тип Passenger.

Для отображения 3D-вида добавляем на экран элемент «3D-окно» (3D Window). При запуске модели теперь видна объемная картина. Управлять ракурсом можно прямо во время выполнения: колесико мыши отвечает за приближение/удаление, левая кнопка — за перемещение, а комбинация Alt + левая кнопка — за поворот камеры.

4. Моделирование первой зоны обслуживания: Стойки регистрации

Переходим к моделированию сервиса. Создаем первую зону обслуживания — регистрацию на рейс. Для этого используем объект «Сервис с очередями» (Service with Queues).

Нам требуется обслуживание у 5 стоек, поэтому:
1. Выносим объект на схему.
2. Перемещаем первую точку сервиса к первой стойке, а затем в свойствах устанавливаем «Количество сервисов» равным 5. Точки автоматически распределятся.
3. Свойство «Количество очередей» оставляем равным 1 — будет одна общая очередь.
4. Называем объект, например, checkInService. Тип очереди выбираем «Змейка» (Snake).
5. Теперь, выделив компонент очереди внутри объекта, с помощью опции «Добавить точку» вручную отрисовываем маршрут следования очереди к стойкам, начиная чуть левее.
6. Для визуализации добавляем пять 3D-объектов «Стол» из палитры «3D-объекты», расставляя их поверх точек сервиса.

Наконец, усложняем логику процесса. Перед блоком pedGoTo вставляем блок Ped Service. В его свойствах выбираем ссылку на созданный объект checkInService. Задаем «Время задержки» (Delay Time) равномерным (uniform(1, 4)) — это означает, что обслуживание на стойке занимает от одной до четырех минут модельного времени.

При запуске агенты сначала выстраиваются в очередь-змейку, затем распределяются по освободившимся стойкам, «обслуживаются» заданное время и только потом направляются к выходу.

Краткие итоги

В материале демонстрируется системный подход к имитационному моделированию пассажиропотоков, основанный на принципе «от геометрии к логике». Первичным и критически важным этапом является формализация физического пространства. Разработчик вручную создает невидимую инфраструктуру из стен и целевых линий, которая накладывается на графическую подложку. Ключевая мысль здесь заключается в том, что именно эти программные границы определяют допустимые области для движения, а сама картинка выполняет лишь иллюстративную роль. Освоение техники редактирования направляющих позволяет не просто копировать чертеж, а точно адаптировать цифровую среду под реальную, часто нелинейную архитектуру помещений.

После создания пространственного каркаса следует переход к наполнению модели поведением. Показано, что базовая логика навигации в среде AnyLogic реализована на молекулярном уровне и не требует от пользователя программирования правил обхода препятствий. Агенты автономно прокладывают маршрут, что является фундаментальным преимуществом, позволяющим сосредоточиться на моделировании процессов, а не на низкоуровневой механике перемещения. Визуализация через 3D-анимацию рассматривается не как косметическое дополнение, а как инструмент верификации и презентации, работа с которым требует понимания методов управления виртуальной камерой.

Кульминацией практической части становится построение зоны обслуживания. Здесь раскрывается архитектура сложных объектов библиотеки, которые являются составными сущностями, включающими в себя точки сервиса и геометрию очереди. Применение паттерна с одной очередью на несколько параллельных точек обслуживания (стойки регистрации) — это классическое решение для управления потоком, исключающее простои отдельных каналов. Важнейшим выводом является разделение графического макета сервиса и его логической модели: пространственное расположение очереди и столов настраивается вручную, а временные задержки и связь с агентом — через параметры блока Ped Service. Такой подход позволяет независимо калибровать визуальную и процессную составляющие, что критично для перехода от условной схемы к реалистичному имитационному эксперименту, например, к последующему анализу скоплений и распространения инфекций.
Мы строим имитационную модель аэропорта с помощью пешеходной библиотеки AnyLogic. Первый этап — создание физического пространства. На схему добавляется изображение терминала, а затем объектами «Стена» (Wall) обводятся его внешние и внутренние границы, включая колонны. Это критически важно, так как без стен агенты будут игнорировать препятствия на картинке. Для создания плавных изгибов контура используется функция «Редактировать направляющие», которая позволяет превратить прямую стену в дугу.

Далее задаются ключевые места с помощью «Целевых линий» (Target Line): Entry Line — точка появления пассажиров, и Gate Line — точка выхода из модели.

После разметки пространства строится простейшая диаграмма процесса из трех блоков:
1. Ped Source: создает агентов на Entry Line (интенсивность — 100 в час).
2. Ped Go To: направляет агентов к Gate Line.
3. Ped Sink: удаляет агентов при достижении цели.
На этом этапе модель уже работает: агенты появляются, автономно обходят все нарисованные стены и следуют к выходу. Это обеспечивается встроенной молекулярной моделью движения в непрерывном пространстве.

Чтобы заменить стандартные круги на фигурки людей, создается новый «Тип пешехода» (Pedestrian Type). Ему назначается 3D-анимация человека. Этот тип затем указывается в блоке Ped Source. Для просмотра объемной сцены добавляется «3D-окно» (3D Window), а управление камерой во время работы модели осуществляется мышью: колесо — масштаб, левая кнопка — сдвиг, Alt+левая кнопка — поворот.

Следующий шаг — моделирование первой зоны обслуживания, регистрации. Для этого используется объект «Сервис с очередями» (Service with Queues). Поскольку у нас 5 стоек, в свойствах объекта задается 5 точек сервиса и 1 общая очередь. Тип очереди — «Змейка» (Snake). Маршрут змейки отрисовывается вручную путем добавления промежуточных точек на линии очереди. Для визуализации из палитры 3D-объектов добавляются столы, расставляемые по точкам сервиса.

Логика усложняется вставкой в диаграмму процесса блока Ped Service перед блоком Ped Go To. В нем указывается ссылка на созданный объект сервиса и задается время задержки. Например, равномерное распределение uniform(1, 4) моделирует обслуживание на стойке длительностью от 1 до 4 минут.

Теперь при запуске пассажиры сначала выстраиваются в очередь, проходят к освободившейся стойке, задерживаются на заданное время и только потом направляются к выходу. Модель наглядно демонстрирует, как архитектура пространства и логика сервисов совместно определяют динамику пассажиропотока.

Выводы

1. Моделирование начинается с ограничения пространства: объект «Стена» задает непроницаемые границы, без которых агенты игнорируют препятствия на рисунке-подложке.
2. Инструмент «Редактировать направляющие» превращает прямую стену в криволинейную, позволяя точно обводить скругленные архитектурные контуры.
3. Целевые линии — это именованные пространственные метки, на которые ссылаются блоки диаграммы процесса для появления, движения и удаления агентов.
4. Автономный обход препятствий работает по умолчанию: добавление внутренних стен мгновенно и без доработки логики меняет траектории всех пешеходов.
5. Для замены стандартных кружочков на 3D-модели людей необходимо создать пользовательский «Тип пешехода» и выбрать для него соответствующую анимацию.
6. Управление обзором в 3D-окне осуществляется мышью: колесо меняет масштаб, левая кнопка — позицию, Alt+левая кнопка — угол поворота камеры.
7. Объект «Сервис с очередями» является составным: его компоненты (точки сервиса и траектория очереди) настраиваются отдельно друг от друга.
8. Одна общая очередь на несколько точек обслуживания гарантирует, что агенты не закрепляются за конкретной стойкой заранее, а идут к первой освободившейся.
9. Геометрия очереди типа «Змейка» рисуется вручную путем добавления промежуточных точек, формирующих извилистый путь.
10. Блок Ped Service связывает агента с конкретным объектом сервиса и задает стохастическую задержку на обслуживание через параметр «Время задержки».
11. Разделение визуализации и логики позволяет размещать 3D-объекты мебели (столы) независимо от настройки времени и алгоритма работы сервиса.
12. Интенсивность появления агентов (например, 100 в час) синхронизируется с модельным временем, где одна секунда реального времени может быть приравнена к одной минуте.

Вопросы для самопроверки

1. Как объект «Стена» из пешеходной библиотеки влияет на поведение агентов в модели?
2. Опишите алгоритм превращения прямолинейной стены в дугу или кривую произвольной формы.
3. В чем функциональное различие между целевыми линиями входа (entryLine) и выхода (gateLine) с точки зрения жизненного цикла агента?
4. Почему при добавлении внутренних стен не требуется изменять существующую диаграмму процесса движения агентов?
5. Какова последовательность действий для того, чтобы агенты отображались в модели как трехмерные фигуры людей, а не как стандартные круги?
6. Каким образом можно независимо повернуть и приблизить камеру в 3D-окне во время выполнения модели?
7. Для чего в объекте «Сервис с очередями» при нескольких точках обслуживания (стойках) задается всего одна очередь?
8. Какие практические шаги необходимо предпринять, чтобы нарисовать немонотонную очередь типа «змейка»?
9. Какую роль выполняет блок Ped Service и как он взаимодействует с графическим объектом сервиса на схеме?
10. Объясните связь между свойством «Время задержки» блока Ped Service и моделируемой длительностью обслуживания на стойке.
Вернуться к учебному плану