Разбор модели месяца: велогонка

Каждый месяц мы выбираем лучшую модель от пользователей AnyLogic Cloud и рассказываем о ней в новостной рассылке. Одной из таких стала модель велогонки от Брайана Оврума, специалиста по AnyLogic из аргентинского офиса Accenture. Мы попросили его рассказать, как и для чего создавалась модель. Его оригинальная статья – в нашем английском блоге, для русскоязычных пользователей мы публикуем перевод. Приятного чтения!


Введение

В компании Accenture Applied Intelligence мы постоянно разрабатываем имитационные модели на AnyLogic, чтобы решать комплексные практические задачи. Благодаря AnyLogic в одной модели удается комбинировать несколько методов ИМ: так можно детальнее смоделировать процессы. Профильные библиотеки AnyLogic и их элементы ускоряют процесс разработки и позволяют представить модели заказчикам в интуитивно понятном виде.

Брайан Оврум
Брайан Оврум

Я был очень рад, когда вышла новая версия AnyLogic 8.5. Оказалось, что помимо ключевых обновлений (поддержка многоуровневых моделей и улучшения в Библиотеке производственных систем) появился новый 3D-объект – велосипед. Это напомнило мне о старой модели, которую я выкладывал на портал RunTheModel (сейчас вместо него работает AnyLogic Cloud); она была построена с помощью агентного подхода. Я решил создать похожую модель, но с помощью дискретно-событийного подхода и Библиотеки моделирования процессов AnyLogic.

Основная идея

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



В этих гонках участники команд работают вместе, чтобы помочь своему лидеру выиграть гонку. Место каждого участника в гонке влияет на результат, энергетические затраты и степень усталости остальных велосипедистов. Из-за этих факторов, а также конкуренции, лидеры в гонке меняются постоянно.

Чемпионат мира по шоссейному велоспорту UCI 2019 в Йоркшире

Чемпионат мира по шоссейному велоспорту UCI 2019 в Йоркшире

Логика модели

В модели логика задается несколькими блоками Delay, имитирующими задержку агента (один в первой части маршрута, десять для каждого этапа кругового маршрута и последний для финишной прямой). Действия в блоке delay2 заканчиваются на вершине первой горы, после чего велогонщики едут вниз до конца (блок delay4). Далее – подъем на самую высокую точку (блок delay7). После вершины они еще раз едут под гору и финишируют в блоке delay10 – промежуточном спринте.

При переходе из блоков Delay агент принимает разные решения: это влияет на его поведение. Чтобы задать такую механику работы, в этой модели объединены дискретно-событийный и агентный подходы. Это позволяет улучшить производительность модели, так как принятие решений происходит между задержками, а не с приращением времени, как происходило бы в агентных моделей.

Структура модели

Структура модели

В модели мы упростили поведение велосипедистов: скорость участника зависит от скорости ближайших велогонщиков в предыдущем и последующем блоках Delay, а также от позиций других членов команды. Участник увеличивает скорость, когда решает обогнать противника.

Участники, идущие первыми, прилагают больше усилий и на каждом отрезке расходуют больше энергии. Расход энергии рискован, потому что чем меньше у велосипедиста сил, тем больше вероятность, что он не сможет продолжить гонку. Обратите внимание на велосипедистов, помеченных черным кружком: они наиболее уставшие и скоро могут выбыть из гонки. Сделать это можно в двух местах на велодорожке.

Визуализация

В отличие от старой модели, в которой каждый велосипедист ехал по прямой, мы хотели смоделировать движение участников по дорожной петле (с подъемами, спусками и поворотами). Для этого внутри каждого блока Delay созданы пути для агентов. Они соединены последовательно, поэтому общий путь – непрерывный. В каждой предыдущей точке рассчитывается изменение скорости для следующего отрезка маршрута.

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

Фрагмент двумерного отображения кругового маршрута

Фрагмент двумерного отображения кругового маршрута

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

  • синий вертолет, который снимает лидера с близкого расстояния;
  • зеленый, который следует за лидером на большей высоте (и показывает больше панорамных видов);
  • оранжевый вертолет, снимающий лидирующую группу гонщиков.

Чтобы расположить камеры на вертолетах, в качестве примера использовалась модель фабрики по производству автоклавного газобетона.

У камер зеленого и оранжевого вертолетов практически одинаковые функции. Единственное отличие – их текущее положение по осям Х и Y в зависимости от того, за каким велосипедистом они следуют. Камера же синего вертолета ориентирована на центр карты (вершину самой высокой горы) и вращается так, чтобы вершина всегда оставалась в центре кадра.

Скриншот ниже показывает, как задается позиция и вращение камеры синего вертолета. Первое условие проверяет, что значение переменной cyclistCamera (камера велосипедиста) имеет значение, равное null. Эта переменная была добавлена, чтобы во время гонки выбрать конкретного участника для съемки. Им может быть участник, которого выбирает пользователь при запуске модели, или велосипедист, который первым переходит из одного блока Delay к следующему.

Настройки камеры синего вертолета

Настройки камеры синего вертолета

Но при использовании камеры необходимо учитывать ряд нюансов. К примеру, у меня всегда возникают проблемы при переключении между камерой, следующей за агентом, и свободной камерой. Поэтому я обычно открываю два разных 3D окна: одно – для свободных камер (например, на финише или на верхней точке холма) и еще одно – для остальных камер. И каждый раз, переключаясь между камерами, я задаю видимость одного 3D окна и невидимость другого.

Еще один совет: при запуске модели вы можете кликнуть по 3D окну правой кнопкой мыши и скопировать расположение камеры. Это позволит запустить модель и поворачивать камеру, пока вы не найдете хороший вариант расположения: вид можно экспортировать или задать как изначальное расположение камеры в модели.

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

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

Следующие шаги

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

Что же до визуализации, то эта модель все еще остается примитивным отражением потенциальных возможностей. Больше информации о каждом велосипедисте, различные способы визуализации этой информации во время гонки, изображения до и после гонки, информация о сошедших с дистанции, вероятность победы каждого велосипедиста и т.д. Все это и гораздо больше возможно с использованием библиотек AnyLogic!

Другие модели

Описанная далее серия моделей от нашей команды Accenture Applied Intelligence лучше покажет некоторые из возможных дополнительных инструментов.

  • Спринт: эта модель имитирует последние километры гонки. В этой модели мы использовали пешеходную библиотеку, предполагая, что любой велосипедист может вести себя как пешеход. Дорога огорожена стенами, а скорость участников изменяется при переходе с одного сегмента в другой.
  • Финал Кубка Либертадорес – 2018: у модели удобный и понятный пользовательский интерфейс, который позволяет задать начальные условия модели.
  • Симулятор стратегии посадки пассажиров в самолет: эта модель с очень простым интерфейсом позволяет запускать различные сценарии, видеть, что делает каждый агент, и наблюдать за изменением общего количества пассажиров в самолете.
  • Балансировщик нагрузки на заправочную станцию: в этой модели очень удобное боковое меню, а также необычная форма подачи информации о каждой станции на карте.
  • Перекресток: модель изначально создавалась для тестирования возможностей Библиотеки дорожного движения, но превратилась в микромир с установленными камерами на автомобилях, самолетах, поездах и подводных лодках (!). В каждом автомобиле есть несколько камер: перемещайтесь от одного автомобиля к другому и путешествуйте по дорогам.
  • Поезда: чтобы показать железнодорожные пути в этой модели, мы запустили самолеты! Из них можно следить за движением поезда и другими объектами, которые появляются в модели.

Благодарности

Некоторые иконки в модели загружены с сайта www.flaticon.com, вот их авторы:

  • Иконка вертолета создана автором Freepik
  • Иконка велосипедиста создана автором Global Warming
  • Иконка горы создана автором Business
  • Иконка финиша создана автором Motor Sports

Справка о Чемпионате мира по шоссейному велоспорту UCI взята с сайта cyclingweekly.com

Хочу поблагодарить команду AnyLogic Cloud за то, что они позволяют нам делиться имитационными моделями с другими пользователями AnyLogic. Библиотека публичных моделей – это постоянный источник вдохновения для создания новых работ. Кроме того, я хочу поблагодарить всю команду AnyLogic за то, что разрешили мне опубликовать этот пост в их блоге, и за их постоянную помощь и поддержку в совместном развитии.

Похожие материалы