Главная страница

Лабораторная Системная динамика. 107 Модель распространения эпидемии


Скачать 1.3 Mb.
Название107 Модель распространения эпидемии
АнкорЛабораторная Системная динамика
Дата12.12.2021
Размер1.3 Mb.
Формат файлаpdf
Имя файлаЛабораторная Системная динамика.pdf
ТипДокументы
#300753

AnyLogic за три дня
107
Модель распространения эпидемии
Мы построим модель, изучающую распространение инфекционного заболевания среди населения. Давайте рассмотрим численность населения, равную 10 000 человек, которую обозначим как TotalPopulation. Вначале заражен только один человек, а все остальные лишь восприимчивы к болезни.

Во время болезни один человек в среднем контактирует с другими с интенсивностью ContactRateInfectious, равной 1.25 человека в день.
Если заразившийся человек контактирует с восприимчивым к болезни, то вероятность передачи инфекции Infectivity равняется 0.6.

После того, как человек заражается, инкубационный период
AverageIncubationTime длится 10 дней.

Средняя длительность болезни после инкубационного периода
AverageIllnessDuration (
другими словами, длительность периода, когда этот человек может заражать других) составляет 15 дней.

Выздоровевшие люди получают иммунитет к болезни и не могут снова заболеть.
Фаза 1. Создание диаграммы потоков и
накопителей
1.
Создайте новую модель, выбрав пункт меню
Файл > Создать > Модель
Назовите модель SEIR и выберите
дни
в качестве единиц модельного времени.

108
AnyLogic за три дня
Давайте начнем с того, что нарисуем диаграмму накопителей и потоков.
В данной модели мы не будем учитывать все разнообразие населения, а лишь выделим четыре категории людей, имеющие значение для изучаемого нами процесса:

Susceptible
– Восприимчивые к заражению люди, которые еще не были заражены вирусом.

Exposed
– Люди, находящиеся в латентной стадия заражения (они уже заражены, но еще не могут заражать других).

Infectious
– Люди в активной стадии заражения (они могут заражать других людей).

Recovered
– Выздоровевшие люди (они приобрели иммунитет к данному заболеванию).
Название модели SEIR – это аббревиатура, образованная сокращением названий основных стадий распространения инфекции: Susceptible - Exposed - Infectious -
Recovered.

AnyLogic за три дня
109
Терминология и общая структура модели взяты из книги ("Compartmental models in epidemiology").
В нашей модели можно естественным образом выделить четыре накопителя, по одному на каждую стадию заболевания. Давайте и начнем с их создания.
2.
Откройте палитру
Системная Динамика
. Перетащите элемент
Накопитель
из палитры
Системная динамика
на диаграмму Main. Назовите его
Susceptible.
3.
Добавьте еще три накопителя. Расположите их, как показано на рисунке ниже, и назовите Exposed, Infectious и Recovered.

110
AnyLogic за три дня
Накопители и потоки
В системной динамике накопители (иногда они также называются уровнями или
фондами) представляют собой переменные, которые эквивалентны объему определенного «вещества» (это могут быть деньги, знания, люди, жидкости и т.п).
Потоки задают динамику системы. Значения накопителей изменяются с течением времени именно согласно существующим в системе потокам.
Входящий в накопитель поток увеличивает значение данного накопителя, исходящий из накопителя поток уменьшает его значение. Ниже приведены примеры накопителей и потоков:
Накопитель
Входящие потоки
Исходящие потоки
Население
Рождаемость
Иммиграция
Смертность
Эмиграция
Бак с горючим
Заправка
Потребление горючего
3

AnyLogic за три дня
111
Один и тот же поток может служить исходящим потоком для одного накопителя и входящим - для другого; в этом случае говорится, что это поток из первого накопителя во второй:
Если поток начинает течение "из ниоткуда", то в его начальной точке рисуется общепринятый для таких случаев символ облака.
Аналогично, облако рисуется у конечной точки потока, если поток течет не в какой-то другой накопитель, а "в никуда".
Направление стрелки потока обозначает влияние этого потока на накопители.
Основная логика нашей модели такова: восприимчивые к заболеванию люди подвергаются заражению вирусом, болеют и заражают других, а затем выздоравливают. Чтобы промоделировать перемещение людей между нашими четырьмя накопителями, нам нужно добавить три потока.
4.
Добавьте первый поток, который ведет из накопителя Susceptible в накопитель Exposed. Сделайте двойной щелчок мышью по накопителю, из которого поток выходит (Susceptible) и затем щелкните по накопителю, в который поток входит (Exposed).

112
AnyLogic за три дня
5.
Назовите этот поток ExposedRate.
6.
Обратите внимание на формулы накопителей Susceptible и Exposed. Из них следует, что поток ExposedRate уменьшает значение накопителя Susceptible и увеличивает значение накопителя Exposed.
Формулы накопителей
AnyLogic автоматически формирует формулу накопителя в соответствии с создаваемой пользователем диаграммой потоков и накопителей.
Значение накопителя вычисляется согласно потокам, входящим и исходящим из него. Значения входящих потоков, то есть тех, которые увеличивают значение накопителя, прибавляются к текущему значению накопителя, а значения исходящих потоков, соответственно, вычитаются из него: входящийПоток1 + входящийПоток2 + … - исходящийПоток1 - исходящийПоток2 …
В классическом режиме задания формулы накопителя формула является нередактируемой, и в ней могут фигурировать только потоки.
5
4

AnyLogic за три дня
113
7.
Добавьте поток, ведущий из накопителя Exposed в накопитель Infectious, и назовите его InfectiousRate.
8.
Добавьте поток из накопителя Infectious в накопитель Recovered и назовите его RecoveredRate.
9.
Расположите метки с именами потоков, как показано на рисунке ниже.
Чтобы переместить метку, выделите поток в графическом редакторе и затем переместите его имя.
10.
Теперь давайте зададим параметры и зависимости. Добавьте пять элементов
Параметр
, задайте их имена и значения по умолчанию, как указано ниже:

TotalPopulation= 10 000

Infectivity= 0.6

ContactRateInfectious= 1.25

AverageIncubationTime = 10

AverageIllnessDuration = 15
9
8
7

114
AnyLogic за три дня
11.
Задайте первоначальное количество инфицированных людей, указав значение 1 в качестве
Начального значения
накопителя Infectious.
12.
Задайте
Начальное значение
накопителя Susceptible: TotalPopulation-1.
Вы можете нажать Ctrl+пробел (Mac OS: Alt+пробел) и затем выбрать имя параметра из мастера подстановки кода).
Слева от введенного выражения вы увидите красный значок - индикатор ошибки. Причина ошибки в том, что вы задали логическую зависимость между элементами диаграммы накопителей и потоков (начальное значение накопителя
Susceptible зависит от параметра TotalPopulation), но эта зависимость не задана графически на диаграмме.
12
10

AnyLogic за три дня
115
Связи зависимостей
Связь используется для задания зависимости между элементами диаграммы потоков и накопителей.
Зависимости в диаграммах потоков и наполнителей могут быть двух типов:

Переменная (это может быть накопитель, поток, вспомогательная переменная или параметр) упоминается в формуле потока или вспомогательной переменной. Такой тип связи отображается сплошной линией:

Переменная фигурирует в формуле начального значения накопителя.
Этот тип связи отображается пунктирной линией:
13.
Нарисуйте связь, ведущую из параметра TotalPopulation в накопитель
Susceptible:
Сделайте двойной щелчок мышью по элементу
Связь
палитры
Системная динамика
, щелкните по параметру TotalPopulation и затем щелкните по накопителю Susceptible. Вы увидите связь с точками соединения на ее концах:

116
AnyLogic за три дня
14.
Давайте зададим формулу потока ExposedRate. Выделите поток щелчком мыши и введите следующую формулу с помощью мастера подстановки кода:
Infectious*ContactRateInfectious*Infectivity*Susceptible/TotalPopulation
14
13

AnyLogic за три дня
117
Нам необходимо нарисовать связи зависимостей, ведущие от указанных в формуле переменных и параметров к этому потоку. Может показаться забавным, но в некоторых других инструментах системной динамики все связи придется рисовать вручную. Мы же предпочитаем использовать механизм автоматического создания связей.
15.
Щелкните правой кнопкой мыши по потоку ExposedRate в графическом редакторе и выберите опцию
Исправить ошибки в связях > Создать
недостающие связи
из контекстного меню. При этом появятся недостающие для этого потока связи зависимостей:
16.
Задайте следующую формулу для потока InfectiousRate:
Exposed/AverageIncubationTime
17.
Задайте следующую формулу для потока RecoveredRate:
Infectious/AverageIllnessDuration
18.
Добавьте все недостающие связи зависимостей. В результате диаграмма потоков и накопителей должна будет выглядеть следующим образом:

118
AnyLogic за три дня
19.
Подкорректируйте вид связей. Измените радиусы дуг связей, чтобы сделать диаграмму более красивой и читаемой, например, как на рисунке ниже.
Чтобы изменить изгиб связи, выделите связь в редакторе и перетащите метку, расположенную посередине связи.
20.
Запустите модель и исследуйте динамику процесса с помощью похожих на виджеты информационных окон этих переменных.
Открыть информационное окно переменной можно, щелкнув мышью по этой переменной.

AnyLogic за три дня
119
21.
Чтобы переключить виджет в режим графика, щелкните самый левый значок его панели управления. Чтобы изменить размер окна, потяните за правый нижний угол этого окна.
22.
Увеличьте скорость выполнения модели, чтобы моделирование проходило быстрее.
21
20
22

120
AnyLogic за три дня
Фаза 2. Добавление графика для визуализации
динамики процесса
Циклы обратной связи: уравновешивающие и
усиливающие
Системная динамика изучает системы с обратными связями, то есть системы, образованные (возможно, зависящими друг от друга) циклами обратной связи.
Есть два типа циклов обратной связи: усиливающие и уравновешивающие.
Определить тип цикла можно с помощью следующих правил.
Начните с предположения, что значение переменной увеличивается, и проследите за изменением значений входящих в цикл переменных.
Цикл является:

усиливающим, если после прохождения по циклу вы видите тот же результат, что был допущен при начальном предположении;

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

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

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

AnyLogic за три дня
121
2.
Перейдите в панель
Свойства
и измените
Тип
цикла на
R
(
что означает
Reinforcing
, то есть «усиливающий»). Оставьте заданное по умолчанию
Направление: по часовой стрелке
и укажите текст, который AnyLogic будет отображать возле значка цикла: Contagion (то есть, «заражение»).
Элемент «Цикл»
Элемент AnyLogic
Цикл
представляет собой графический значок, состоящий из метки с описанием смысла цикла и стрелки, показывающей направление этого цикла. Элемент не задает саму логику зависимостей в моделируемой системе, а только показывает информацию об образовавшемся цикле влияний переменных друг на друга. Добавляя на диаграмму значки циклов, вы можете облегчить понимание существующих в этой диаграмме циклов обратной связи будущим пользователям этой модели.
Давайте определим тип нашего цикла Contagion. Увеличение значения накопителя Infectious ведет к увеличению значения потока ExposedRate, что в свою очередь увеличивает значение накопителя Exposed. Следовательно, цикл
Contagion является усиливающим. Все связи в этом цикле положительные.
Определите, какие еще циклы присутствуют в моделируемой системе? Каких они типов?
Теперь давайте добавим временной график для просмотра динамики изменения численности каждой категории людей в нашей модели.
3.
Перетащите элемент
Временной график
из палитры
Статистика
на диаграмму и увеличьте размер графика, как показано на рисунке ниже.
1

122
AnyLogic за три дня
4.
Добавьте элемент данных, который будет отображаться на графике. В панели
Свойства
перейдите в раздел
Данные
и щелкните по кнопке
Добавить
5.
Измените свойства созданного элемента данных графика:

Заголовок:
Susceptible people (
то есть, восприимчивые к заболеванию люди).

Значение:
Susceptible (
при введении имени переменной используйте мастер подстановки кода).
5

AnyLogic за три дня
123
6.
Добавьте еще три элемента данных, которые будут отображать значения накопителей Exposed, Infectious, и Recovered соответственно. Не забудьте проставить каждому элементу соответствующий
Заголовок

124
AnyLogic за три дня
7.
В разделе свойств графика
Внешний вид
сбросьте флажок
Заливка области
под линией
7

AnyLogic за три дня
125
8.
Мы закончили создание модели. Запустите ее и изучите динамику распространения болезни с помощью нашего временного графика.


написать администратору сайта