Проекты

Моделирование роста Physarum Polycephalum на многогранниках

Работа призёра открытой городской научно-практической конференции «Курчатовский проект – от знаний к практике, от практики к результату» в секции «Идея»

Направление работы: Биомоделирование
Авторы работы: ГБОУ Школа имени Маршала В.И. Чуйкова
Предметы: Биология
Классы: 8 класс
Мероприятия: Открытая городская научно-практическая конференция «Курчатовский проект – от знаний к практике, от практики к результату» 2021 года

Актуальность

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

Цели

  1. Создать первую модель роста Physarum Polycephalum на трехмерных многогранниках.

Задачи

  1. Модифицировать 2D модель Physarum Polycephalum в 3D модель.
  2. Реализовать модель роста Physarum Polycephalum в симуляторе.
  3. Настроить параметры модели так, чтобы поведение модели соответствовало экспериментам, проведенным с живым слизевиком.

Оснащение и оборудование, использованное при создании работы

  • Компьютер для поиска и анализа информации, создания 3D-модели
  • Библиотека three.js
  • Плазмодий Physarum Polycephalum
  • Геодезические многогранники

Описание

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

Затем был написан симулятор Physarum Polycephalum на трехмерных многогранниках с выпуклыми гранями на Python 3. Моделируемый организм в этой симуляции ведет себя проще, чем в оригинальной модели Джонса. Такой подход был выбран, чтобы в короткие сроки получить минимальную жизнеспособную версию и общее представление о технических трудностях, с которыми авторы могут столкнуться в процессе разработки.

Перед продолжением разработки авторы связались с Джеффом Джонсом и получили исходный код его реализаций (на языке Processing, основанном на Java). Исходники были использованы для уточнения деталей устройства модели перед написанием полной версии симулятора. На этом этапе также были произведены незначительные модификации модели, в основном связанные с упразднением правил, которые не имели смысла в трехмерном пространстве.

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

Результаты работы/выводы

Был написан прототип симулятора на Python, моделирующий слизевик по упрощенным законам на трехмерных многогранниках с выпуклыми гранями. Для симулятора на CUDA C++ были написаны модули, описывающие геометрические объекты, узлы сетки, их построение, движение частиц и модуль интеграции с визуализацией.

Ключевое отличие симулятора, который являлся целью данной работы, от других подобных – выращивание Physarum Polycephalum на поверхности произвольных выпуклых трехмерных многогранников (тогда как прочие реализации выполняют симуляцию только на плоскости).

 

 

 

 

 

 

 

 

Симуляция роста слизевика на кубе

 

При реализации полной версии симулятора авторы столкнулись с проблемами совместимости C++ и CUDA Runtime API и бедностью стандартной библиотеки. Несмотря на то что CUDA является расширением языка C++, некоторые возможности C++ при некоторых условиях недоступны (например, в некоторых контекстах возможно делать только C-like выделение памяти). Поскольку симулятор был спроектирован без учета этих особенностей языка, авторам пришлось исправлять ошибки, вызванные вынужденным использованием функций С в контекстах С++ (например, проблемы, вызванные вынужденным совмещением C++ классов и низкоуровневых функций работы с памятью).

Перспективы использования результатов работы

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