Моделируем распространение коронавирусной инфекции COVID-19 в Simulink - часть 1
Добрый день, коллеги! Пока мы с вами вынуждены сидеть дома на карантине, возникает вопрос, а действительно ли это эффективно? Насколько изоляция на самом деле способна остановить распространение инфекции?
Давайте помоделируем разные сценарии распространение болезни и заодно освоим последние возможности MATLAB/Simulink.
Архив с проектом приложен к статье. Крайне рекомендую скачать и поэкспериментировать.
Имейте ввиду, что проект использует новейшие возможности MATLAB/Simulink, а поэтому для его запуска требуется MATLAB R2020a. Вы можете запросить у нас пробную версию и оперативно получить лицензию на месяц. Как раз хватит, чтобы не сойти с ума от скуки во время карантина :)
Для запуска модели понадобятся:
- MATLAB R2020a
- Simulink
- Stateflow
- (не обязательно) Simulink Coder
Как устроен проект
Проект оформлен в виде MATLAB Project, чтобы его открыть, необходимо открыть скачанный архив с помощью MATLAB, распаковать проект в выбранную папку и открыть файл VirusPropagation.prj
При этом автоматически откроется Simulink-модель распространения инфекции propagationSimulator
и приложение для проведения экспериментов propagationApp
.
Как устроена модель propagationSimulator
, разберем позже. Вы можете ее запускать, наблюдать графики распространения инфекции, а после окончания симуляции - строить итоговый график и даже его анимировать. Для задания параметров симуляции необходимо использовать приложение propagationApp.
Приложение позволяет задавать параметры симуляции, запускать симуляцию, строить график результатов и анимировать его. Кроме того вы можете сохранить результаты симуляции в файл, чтобы исследовать их отдельно или поделиться с нами :)
Параметры симуляции:
N1 - количество людей по горизонтали
N2 - количество людей во вертикали
R - радиус человека
Vmax - максимальная скорость, с которой люди начинают двигаться и сталкиваться
Immob - доля людей, который не двигаются, все время оставаясь в начальном положении. Это те, кто соблюдает карантин и никуда не выходит.
Основные задачи, которые вы захотите решать, оформлены как ярлыки на панели быстрого доступа проекта для запуска в один клик. Используйте их для удобства.
Анализ распространения болезни
Я уже провел несколько интересных экспериментов, сохранил результаты в проект и оформил их в интерактивный скрипт doc/propagationAnalysis.mlx
. Можете взять его за основу для своего анализа. Привожу результаты здесь.
1. Никакого карантина, все двигаются хаотично
Нажмите на картинку ниже, чтобы посмотреть анимацию.
Как видите, количество зараженных в таком случае возникает очень быстро, можно сказать, экспоненциально. Начиная с одного человека инфекция распространяется на ВСЕХ.
Зеленый цвет - количество здоровых, не зараженных людей
Кипричный цвет - количество зараженных людей
Синий цвет - количество людей, преренесших инфекцию, и выработавших иммунитет. В рамках модели повторно они не заражаются.
2. Половина людей сидит дома и никуда не ходит
Нажмите на картинку ниже, чтобы посмотреть анимацию.
Предположим, что теперь мы ввели карантин и попросили всех сидеть дома, но поскольку, наступила весна и на улице такая хорошая погода, то половина людей нас не послушалась и пошла гулять, жарить шашлыки, общаться друг с другом.
Анимация показывает, что свободно перемещающиеся люди очень хорошо справляются с тем, чтобы передать болезнь другу и заразить всех, кто сидит дома) Поэтому такой карантин нельзя назвать эффективным, потому что в конечном итоге болезнь затрагивает абсолютно всех.
Тем не менее пик заражения снижается на 20%, уменьшая нагрузку на систему здравоохранения.
3. Строгий карантин: 90% людей заперты дома
Нажмите на картинку ниже, чтобы посмотреть анимацию.
При таком строгом карантине картинка меняется и мы получаем 40-50% людей, которые так и не были заражены.
Пик эпидемии также снижается до уровня 35-40% популяции, так что в целом такой карантин выглядит довольно эффективным.
Заключение по анализу
Можно по-разному относиться к строгим карантинным мерам, кторые вводят в том числе и в нашей стране. Можно критиковать их в экономическом, правовом плане и т.д. Но мы с вами только что путем простейшем симуляции убедились в том, что если мы действительно заинтересованы в том, чтобы остановить коронавирусную инфекцию, то строгий карантин действительно может стать эффективной мерой. Простая статистика.
Так что #сидитедома и #изучайтематлаб!
В следующей части расскажу, как устроена Simulink-модель распространения инфекции, там много всего интересного в инженерном плане.
И еще раз напоминаю, что вы можете запросить у нас триальную версию MATLAB R2020a на время карантина и поэкспериментировать с моделью самостоятельно. Скачать ее можете из приложения к статье.
Если вы знаете, как сделать модель круче и интереснее, присоединяйтесь к разработке проекта на GitHub.
Пишите в коментариях свои результаты и мысли, а также идеи, что еще можно учесть в модели.
Комментарии
Вы серьёзно? Т.е. эту модель нельзя сделать в MATLAB v5? Обязательно требуется новейшая версия?
Очень разочаровало бы в возможностях MATLAB, если б раньше с ним не работал... ))
Ничего, что в приведённой модели, люди, сидящие дома, свободно контактируют с произвольно перемещающимися, простого однократного контакта достаточно для заражения и выход из карантина, видимо, в бесконечности по временной оси? Да и экспоненты там вообще не наблюдается, скорее логистическая кривая.
Проблема любой модели в верификации. Без неё любая модель - игрушка
Тут же обычная математика, так что можно было бы и старом матлабе сделать, хоть модель и была бы более громоздкая. Но у меня цель была не только показать модель, но и новые возможности последних релизов, чтобы вы их тоже на практике опробовали, MATLAB v5 ведь уже неинтересен для реальных современных задач.
Насчет верификации полностью согласен. Эта модель по сути и есть игрушка, по которой можно только качественно и в общих чертах что-то исследовать. Но лично для меня уже ее результаты стали инсайтом, поэтому и решил поделиться. Было бы интересно смоделировать еще вероятность заражения при контакте.
Сейчас появляется все больше более весомых статистических моделей, по которым можно исследовать уже количественные характеристики. Как разберусь, расскажу.
Здорово. Мне очень понравилось