УДК 004.942
Зори С. А., Бездетный Н. А. Программная симуляция распространения эпидемии вируса. В статье представлено описание программной модели симуляции распространения вируса, которая обладает наглядностью, простой регуляции настроек и выполнена с применением средств трёхмерной компьютерной графики на базе игрового движка Unity.
Ключевые слова: вирус, эпидемия, прогнозирование, моделирование, компьютерная симуляция, SIR-модели, программирование, игровой движок, Unity, C#.
Тема данной работы, связанная с разработкой компьютерной симуляции и изучением современных технологий ее реализации, является актуальной, так как проблема вирусной заболеваемости и возникновение эпидемий требует оперативного решения и активно исследуется во всем мире, в том числе – и с использованием математического аппарата.
Математическое компьютерное моделирование используется для исследования механизмов распространения болезни. Такие модели позволяют прогнозировать и оценивать динамики передачи заболеваний. Это позволяет анализировать и контролировать ситуацию, связанную с распространением вируса, а также предугадывать серьёзные последствия и принимать соответствующие меры по их устранению.
За основу базовой модели процесса симуляции выбрана SIR-модель [1]. Усовершенствование представленной компьютерной модели заключается в повышении информативности и наглядности процесса симуляции за счет внедрения трёхмерной визуальной составляющей симуляции и регулируемых параметров, влияющих на модель, что в последствии также позволяет гибко получать конечные результаты при помощи варьировании структур, алгоритмов и параметров модели.
Сама симуляция исполняется в виртуальной среде окружения одного из районов города. «Население» обладает искусственным интеллектом – собственным поведением, основанным на реальном поведении людей. В виртуальной среде моделируется распространение вируса и факторы, влияющие на его распространение, степень заразности и время действия.
Для разработки прототипа моделирующей системы основной локацией симуляции является город. Данное окружение подходит для создания модели распространения вируса в условиях приближённых к реальным, т. к. достаточно хорошо повторяет городские условия. На карте присутствуют жилые дома, офисы, магазины и тому подобная инфраструктура.
Рисунок 1 – Внешний вид локации для симуляции
Город населён жителями с искусственным интеллектом, которые ведут себя как люди в реальной жизни. В качестве их моделей были использованы низко-полигональные вариации. При создании нового персонажа на сцене, его модель случайным образом берётся из пула доступных моделей человека.
Также для них была настроена базовая анимация движения (состояния покоя, ходьбы и бега), которая напрямую зависит от скорости передвижения персонажа. Например, при низкой – человек идёт, при высокой – бежит.
Для осуществления задумки симуляции, одной из основных механик можно считать передвижение персонажа из одной ключевой точки карты в другую. Искусственный интеллект должен уметь определять, что он делает, уметь прокладывать наиболее эффективный маршрут и изменять свой путь, когда на пути появляются препятствия. Избегание препятствий — это простое поведение, позволяющее ИИ-сущностям достигать целевых точек [2].
Данная задача решается при помощи встроенных инструментов Unity – системы навигации NavMesh. Система навигации позволяет создавать персонажей, которые могут разумно перемещаться по игровому миру, используя навигационные сетки, которые создаются автоматически из геометрии сцены. Система позволяет изменять навигацию персонажей во время выполнения..
Для более реального поведения агентов сетку можно разделить на области с разной «стоимостью прохода». Например, в реальной жизни человек не может пересекать дорогу в неположенном месте. Поэтому при помощи дополнительных настроек и составления слоёв NavMesh можно настроить окружение приближённое к реальному.
Как и в реальной жизни, агенты имеют своё собственное поведение. Каждый человек имеет своё жильё, ходит на работу, в магазин за покупками и прочее. Следовательно, каждое занятие агента можно разделить на три категории: "дом", "работа", "прочая активность". Для каждой категории в городе существуют соответствующие здания или точки на местности. Данное разделение на активности отлично подходит для реализации шаблона проектирования «Состояние».
В своей книге Design Patterns: Elements of Reusable Object-Oriented Software Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидис («Банда четырёх») определили «задачу» шаблона «Состояние» следующим образом: «Он должен позволить объекту изменять своё поведение при изменении его внутреннего состояния. При этом будет казаться, что объект изменил свой класс». Из-за того, что в разное время переменная «текущего состояния» ссылается на разные состояния, будет казаться, что один и тот же класс скрипта ведёт себя по-разному [3].
Рисунок 2 – Визуальное представление модели
В каждый момент времени агент обладает конкретным статусом здоровья, в основе которого будет лежать SIR-модель.
Модель SIR является одной из простейших моделей, и многие модели являются производными от этой базовой формы. Модель состоит из трех групп: – S: Количество восприимчивых людей. Когда восприимчивый и заразный индивидуум вступает в «инфекционный контакт», восприимчивый индивидуум заражается болезнью и переходит в инфекционную группу. I: Количество инфекционных особей. Это инфицированные люди, способные заразить восприимчивых людей. R – количество невосприимчивых или умерших людей. Это люди, которые были инфицированы и либо вылечились от болезни, либо умерли. Эту группу также можно назвать «восстановленными» или «устойчивыми» [4].
Основная механика распространения вируса базируется на системе взаимодействия коллайдеров в Unity. Каждый персонаж обладает зоной распространения вируса (жёлтая сфера). Если человек заражен, то в определенные промежутки времени, он будет распространять вирус в данной зоне. И также у каждого персонажа будет своя зона восприятия или зона взаимодействия с окружением (зеленый квадрат). Данная зона позволяет определить рамки, при которых возможно взаимодействии с этим человеком другими объектами.
Рисунок 3 – Зона распространения и зона взаимодействия персонажей
При нахождении человека в зоне распространения инфекционного индивидуума и попытке заражения этого человека, данное действие будет иметь базовый шанс, который будет увеличиваться или уменьшаться в зависимости от внешних и внутренних факторов влияния.
Пользовательский интерфейс (UI) – это часть игровой механики игры, которая позволяет игроку взаимодействовать с игрой. Термин в первую очередь означает множество кнопок, окон, вкладок и других вариантов меню, которые контролируются игроком при игре [5].
Для взаимодействия с симуляцией в левом верхнем углу присутствует специальная панель, которая состоит из трёх кнопок.
Первая (шестерёнки), вызывает окно, где представлено меню системных настроек. Вторая (слайдеры), открывает окно с регулируемыми параметрами симуляции, которые можно изменять в реальном времени. И третья (графики), представляет собой компонент графиков и диаграмм, который представляет статистическую информацию о симуляции.
Все параметры модели, которые влияют на конечный результат, можно поделить на два типа. Те, которые изменяются при новом эксперименте, и те, которые остаются прежними независимо от эксперимента.
Ниже перечислены параметры, которые не меняются в течении следующих представленных экспериментов:
Далее перечислены параметры системы, которые описывают шансы заражения вирусом при контакте и дополнительном внешнем факторе – наличии маски:
Ниже представлены результаты экспериментов, которые подтверждают, что при наличии маски у человека, общее количество заражённых будет меньше.
Рисунок 4 – Эксперимент №1. Процент населения с наличием маски – 25%
Если взглянуть на линейный график классической SIR-модели, то можно увидеть сходство с графиком данной симуляции. Это означает, что модель – релевантная и на ней можно производить последующие эксперименты.
Рисунок 5 – График классической SIR-модели
Рисунок 6 – Эксперимент №2. Процент населения с наличием маски – 50%
Рисунок 7 – Эксперимент №2. Процент населения с наличием маски – 75%
Предложенная программная модель симуляции распространения эпидемии вируса сравнивалась на релевантность с классической SIR-моделью, что подтвердило ее адекватность. На основе разработанной модели были проведены эксперименты, по результатам которых можно отметить следующее.
В результате первого эксперимента полученные данные практически не отличаются и очень схожи с классической SIR-моделью. При проведении второго опыта количество больных немного снизилось и поток заражения слегка растянулся по времени. Третий эксперимент показал значительное снижение числа зараженных и распределение потока на большее количество дней. Ожидаемые результаты совпали с фактическими. В исключительных случаях подтверждено, что 1 зараженный человек не успевал распространить вирус вообще.
Зори С. А., Бездетный Н. А. Программная симуляция распространения эпидемии вируса. В статье представлено описание программной модели симуляции распространения вируса, которая обладает наглядностью, простой регуляции настроек и выполнена с применением средств трёхмерной компьютерной графики на базе игрового движка Unity.
Ключевые слова: вирус, эпидемия, прогнозирование, моделирование, компьютерная симуляция, SIR-модели, программирование, игровой движок, Unity, C#.
Zori S. A., Bezdetniy N. A. Software simulating the spread of the virus epidemic. The article describes a software model for simulating the spread of a virus, which has visibility, simple adjustment of settings and is made using three-dimensional computer graphics based on the Unity game engine.
Keywords: virus, epidemic, forecasting, modeling, computer simulation, SIR models, programming, game engine, Unity, C#.