Я попытался использовать простой генетический алгоритм, чтобы понять, что делать во время пандемии.

Позвольте мне подчеркнуть, что это всего лишь мое упражнение, которым, как мне кажется, было бы неплохо поделиться. Я не эксперт в области инфекционных заболеваний или генетических алгоритмов и никоим образом не собираюсь использовать эти результаты, чтобы предполагать какое-либо поведение. Надлежащее научное исследование с реальными рекомендациями см. в отчетах группы реагирования на COVID-19 Имперского колледжа:

https://www.imperial.ac.uk/mrc-global-infectious-disease-analysis/news--wuhan-coronavirus/

https://www.imperial.ac.uk/media/imperial-college/medicine/sph/ide/gida-fellowships/Imperial-College-COVID19-NPI-modelling-16-03-2020.pdf

На прошлой неделе меня очень вдохновила эта блестящая недавняя статья Гарри Стивенса в Washington Post, объясняющая ценность физического дистанцирования с помощью очень простой и элегантной модели. Итак, в качестве упражнения по программированию я отправился воссоздавать их модель эпидемии прыгающих мячей. Если вы еще не читали статью Стивенса (пожалуйста, прочтите!), идея состоит в том, что мы начнем со 100 человек, каждый из которых представлен кружком, и я добавил изюминку, представив их индивидуальное пространство в виде полупрозрачной ауры. , цветовая кодировка: синий для здоровых, красный для инфицированных и желтый для выздоровевших. У каждого человека есть случайная начальная скорость, которая будет обновлять его положение в каждый период времени (или день с момента первого заражения). Всякий раз, когда два человека входят в пространство друг друга, они отскакивают друг от друга, и если один из них заражен, инфекция передается. Полное восстановление (желтое) наступает через 100 кадров (или дней). График общего числа здоровых, инфицированных и выздоровевших людей показывает печально известную кривую, которую каждая страна стремится выровнять, что означает меньшее количество инфицированных одновременно:

Теперь, в статье Стивенса, физическое дистанцирование было представлено людьми, которые остаются неподвижными, и 25 % населения приняли это. Красная кривая значительно сглаживается. Затем я задался вопросом, есть ли какое-либо другое возможное решение, которое мы наблюдаем (очевидно, для этой нереальной модели прыгающих мячей), поэтому я написал очень простой алгоритм, похожий на генетический, чтобы минимизировать пик заражения. Идея состоит в том, что в каждом поколении выполняется несколько повторений одного и того же сценария с небольшими изменениями начальной скорости каждого человека. Я буду называть каждое повторение множеством популяций, а их начальную скорость — их генами. Затем для следующего поколения мы сохраняем только верхнюю половину набора населения в зависимости от того, насколько хорошо они сгладили кривую, и создаем другую половину с помощью простого пересечения, чтобы получить лучшее (и худшее) из каждого набора. После многих поколений мы, вероятно, получим по крайней мере один набор с близким к идеальному решением для выравнивания кривой. Кроме того, чтобы немного усложнить задачу, первоначальный уровень заражения составляет 10 из 100 человек. Давайте взглянем:

О, какой сюрприз: идеальное решение (справа), предложенное генетическим алгоритмом, — это физическое дистанцирование. Никто не двигается, пока зараженные популяции не будут восстановлены. Я действительно думал, что это закончится какими-то странными решениями с ошибками, но нет, все так просто. Говоря о жуках, вы, возможно, заметили, что некоторые шарики сцепляются друг с другом и остаются вместе в течение всего периода — я подумал, что это хороший жучок, и сохранил его, чтобы представлять влюбленные пары.

Детерминированный подход

Чтобы дать больше свободы решению, я решил использовать детерминированный подход. В предыдущей модели для заданного сценария группа населения могла выбирать только начальные скорости своих особей, а их судьба определялась тем, против кого они в конечном итоге столкнутся. Теперь, в этой новой модели, для каждого набора населения будет запланировано поведение каждого его индивидуума на весь кризис. Это означает, что теперь нет никаких скачков, поскольку каждый человек должен иметь возможность следовать заранее определенному пути. Однако если двое зайдут в личное пространство друг друга, заражение все равно произойдет. Кроме того, без отскока человек, находящийся за пределами поля, снова появится на другой стороне коробки, что-то вроде если бы мир был круглым (как бы безумно ни звучало слово «круглый мир», верно? ?!). Такой детерминистический подход означает, что нужно оптимизировать еще много генов, так что давайте посмотрим, что выдает алгоритм:

Решение: снова физическое дистанцирование! Даже при возможности точно определить, где человек будет находиться в течение всей эпидемии, физическое дистанцирование было оптимальным решением (для этого крошечного мира-коробки и моего простого алгоритма я не могу не подчеркнуть этого). Как заметил мой друг Диего, все, что мы здесь делаем, — это «машинные рассуждения об очевидном».

Бонус: нельзя стоять на месте

Я все еще хотел иметь другое представление об оптимальном решении, поэтому я подумал: а что, если никому не позволено стоять на месте? какое решение она предложит? Давайте посмотрим:

Хорошо сыграно, алгоритм! Решение состоит в том, чтобы посадить всех в один «поезд» и никому не позволять двигаться (или ввести нацию в инерционное состояние, эквивалентное тому, что все стоят на месте).

Различные сценарии, которые я хочу попробовать, чтобы улучшить модель и алгоритм

переполненная коробка

50% начальный уровень заражения

Увеличенное личное пространство

уменьшенное личное пространство