ИДЗ / Движение стай (Boids) / 2502_БулгаковАА
.pdf
позволяет имитировать миллионы объектов за раз, не затрачивая много ресурсов.
Примерами таких технологий являются NVIDIA Flex или AMD TressFX для компьютерной симуляции волос и травы в компьютерных играх и кино.
Принципы, открытые и популяризированные Boids, в полной мере применимы к коллективной миграции клеток. Каждая клетка чувствует химические сигналы (хемотаксис), механическое натяжение от соседей и следует простым локальным правилам: держаться адгезионных контактов, вытягиваться в направлении градиента фактора, избегать перенаселения. Результатом становится слаженное движение всего пласта клеток, способного обтекать препятствия и затягивать раны. Модели на основе агентов, прямые потомки философии Boids, сегодня являются ключевым инструментом в биологии развития и исследовании метастазирования рака, позволяя не только описать, но и предсказать поведение живых тканей.
Рисунок 3 – Сравнение моделирования волос персонажа с технологией AMD TressFX и без неё
11
Глава 2: Разработка системы или модели
В основе алгоритма Boids лежат три следующих правила:
1.Сепарация (Separation). Каждый объект (или "boid") старается минимизировать возможность столкновения с ближайшими объектами.
2.Выравнивание (Alignment). Каждый объект стремится к тому, чтобы его направление движения было средним направлением движения объектов,
находящихся поблизости.
3. Когезия (Cohesion). Каждый объект стремится к тому, чтобы его положение было близко к среднему положению объектов, находящихся поблизости.
Эти три простых правила позволяют моделировать сложное поведение стаи птиц или роя насекомых. [3–5]
Стоит отметить, что алгоритм Boids сам по себе не является алгоритмом поиска в традиционном понимании этого термина. Он не предназначен для поиска оптимального решения в заданном пространстве возможных решений,
как это делают, например, алгоритмы градиентного спуска или генетические алгоритмы. Вместо этого, алгоритм Boids моделирует поведение группы агентов на основе набора простых правил, что позволяет моделировать сложное и координированное поведение на уровне группы.
Алгоритм Boids может быть адаптирован для распределенного поиска экстремума функции. В этом контексте каждый "boid" представляет собой поискового агента, который перемещается по пространству возможных решений.
Вместо того, чтобы просто следовать за другими "boids", каждый агент может использовать значение функции в своем текущем положении, чтобы корректировать своё движение или учитывать приспособленность других боидов в популяции.
12
Работа Крейга Рейнольдса над алгоритмом Boids, который моделирует стайное поведение, вдохновила на создание концепции роевого интеллекта.
Роевый интеллект описывает коллективное поведение децентрализованной самоорганизующейся системы и к ним относится алгоритм PSO.
Системы роевого интеллекта, как правило, состоят из множества агентов
(боидов), локально взаимодействующих между собой и с окружающей средой.
Идеи поведения, как правило, исходят от природы, а в особенности, от биологических систем. Каждый боид следует очень простым правилам и несмотря на то, что нет какой–то централизованной системы управления поведением, которая бы указывала каждому из них на то, что ему следует делать,
локальные и, в некоторой степени, случайные взаимодействия приводят к возникновению интеллектуального группового поведения, неконтролируемого отдельными боидами.
Алгоритм Boids имеет достаточно много внешних параметров, и каждый из них значительно влияет на характер движения боидов. Посмотрим на эти параметры:
1.cohesionWeight – вес сцепления, определяет силу притягивания членов стаи друг к другу.
2.cohesionDist – расстояние сцепления, определяет расстояние между членами стаи, при котором они начинают притягиваться друг к другу.
3.separationWeight – вес разделения, определяет, насколько сильно члены стаи будут отталкиваться друг от друга.
4.separationDist – расстояние разделения, определяет расстояние между членами стаи, при котором они начинают отталкиваться друг от друга.
5.alignmentWeight – вес выравнивания, определяет, насколько сильно члены стаи будут выравниваться по направлению движения друг друга.
13
6.alignmentDist – расстояние выравнивания, определяет расстояние между членами стаи, при котором они начинают выравниваться по направлению движения друг друга.
7.minSpeed – минимальная скорость, параметр необходим для предотвращения остановки движения боидов.
8.maxSpeed – максимальную скорость, с которой может двигаться боид.
Важно провести серию экспериментов для настройки этих параметров,
чтобы получить желаемое поведение стаи. Можно начать с каких–то заранее заданных и рассчитанных значений из других моделей и постепенно их корректировать, чтобы увидеть, как они влияют на поведение стаи. Стоит учитывать, что нет "правильных" или "лучших" значений параметров для алгоритма Boids в абсолютном смысле, все зависит от конкретной задачи и сценария.
Как алгоритм может работать:
1.Создаётся набор боидов (например, 100 штук), у каждого – начальное положение и скорость.
2.Для каждого боида производится поиск соседей в некотором радиусе и вычисляется три составляющие вектора движения:
•Вектор отталкивания от самых близких соседей.
•Вектор выравнивания со средней скоростью соседей.
•Вектор движения к центру масс соседей.
3. производится сложение эти векторов (обычно с разными весами, чтобы можно было регулировать, какое правило сильнее всего влияет на боид),
получается итоговая скорость.
4. Меняется положение боида, исходя из обновлённой скорости.
14
5. производится переход к следующей итерации симуляции.
Со временем, если параметры (радиус взаимодействия, веса векторов)
подобраны удачно, стая начинает двигаться согласованно и генерировать реалистичные паттерны. [5]
С привлечением современных технологий на базе уже существующих моделей была разработана программа на языке Matlab, которая симулирует движение стай на 20 разных особях в течении 200 итераций.
Она работает по тем же правилам, которые были описаны ранее. В окне программы отображаются 2 графика
На левом графике отображается 20 разноцветных кругов – это боиды. За каждым тянется цветной хвост – её путь. Стрелки показывают направление движения боида в данную итерацию
Правое окно показывает, как правила работают для одного конкретного боида (чёрный кружок). Круги разного цвета вокруг него – зоны влияния:
красный круг – зона в которой боиды начинают отталкиваться друг от друга,
синий круг – зона выравнивания, зелёный круг – зона, с которой боиды начинают притягиваться.
Изначально, боиды появляются в случайных местах, летят в случайных направлениях. На каждой итерации боиды проверяют наличие соседей. Далее применяются правила.
Далее обновляется положение каждого боида: Птички немного смещаются по новому направлению, после этого итерации повторяются. Сначала боиды летят хаотично, но постепенно они перестают сталкиваться (работает правило
"не толкаться"), начинают лететь в одном направлении (правило "лететь в ту же сторону"), держатся группой (правило "держаться вместе").
15
Глава 3: Результаты
Результатом работы программы со стандартными настройками:
•numBoids = 20 – количество боидов
•cohesionWeight = 1.0 – вес сцепления
•cohesionDist = 2.0 – расстояние сцепления
•separationWeight = 1.5 – вес разделения
•separationDist = 1.0 – расстояние разделения
•alignmentWeight = 1.0 – вес выравнивания
•alignmentDist = 1.5 – расстояние выравнивания
•minSpeed = 0.5 – минимальная скорость
•maxSpeed = 1 – максимальная скорость
•numIterations = 200 – количество итераций
•fieldSize = 10 – размер поля
•dt = 0.1 – шаг времени
является график, изображённый на рисунке 1:
Рисунок 1 – График движения боидов Как видно из рисунка, боиды разделились на группы и начали движение в
разные стороны, изменение движения одного боида влечёт изменение движения
16
других боидов. В данном случае боиды разделились на 5 обособленных групп разного размера. Попробуем изменить количество боидов, оставив только 5
особей (рис.2):
Рисунок 2 – Модель с другими параметрами В данном случае явно вино, что изначально синий боид не принадлежал ни
одной группе, однако в последствии «скрепился» с жёлтым и зелёным боидами,
образовав группу (стаю). Красный и фиолетовый боиды изначально двигались навстречу друг другу, но после встречи изменили направление, так как образовали группу.
Уменьшим количество боидов до 3, увеличим максимальную скорость до
20, размер поля до 50 и количество итераций до 500 (рис. 3):
Рисунок 3 – Изменённая модель
17
Как видно из графиков, хоть траектории боидов и пересекаются, но группы не успевают образовываться, так как сила сцепления слишком низкая, а большая скорость просто «разрывает» связь между боидами. Это происходит быстрее,
чем боиды успевают изменить траекторию.
Похожая ситуация прослеживается также если увеличить число боидов обратно до 20 (число итераций уменьшено, так как производительность вычислительного устройства не позволяет моделировать длинные итерации). На рисунке 4 видно, что боиды часто пересекаются и даже «идут бок о бок», однако их энергия слишком велика, чтобы образовать связь, по этой причине не наблюдается ни одной группы.
Рисунок 4 – Увеличенное число боидов Данная модель показывает возможность симуляции движения стай по
алгоритму Boids, однако на данном этапе она является исключительно демонстрационной. Чтобы модель могла иметь практическую пользу, стоит добавить какие–либо препятствия, кроме границ, на поле в котором движутся боиды. Кроме того, стоит добавить внешние стимулы, например физические явления, чтобы рассмотреть, как стая будет двигаться в вынужденном режиме.
18
Глава 4: Заключение
Входе выполнения курсовой работы был проведён комплексный анализ алгоритма моделирования стайного поведения Boids, разработана и исследована его программная реализация на языке MATLAB.
Втеоретической части работы были рассмотрены биологические предпосылки возникновения коллективного поведения, проанализированы исторические подходы к его моделированию и обоснована принципиальная новизна подхода Крейга Рейнольдса. Показано, что сила алгоритма Boids
заключается в его простоте, децентрализованности и эмерджентности – способности порождать сложные глобальные паттерны из набора локальных правил. Также были отмечены его ограничения, такие как упрощённость сенсорной модели и эмпирический подбор параметров.
Практической частью работы стала разработка интерактивной модели,
визуализирующей движение группы агентов (боидов) под действием трёх основных правил: разделения, выравнивания и сцепления. Модель позволяет в реальном времени наблюдать за формированием стай, траекториями движения отдельных агентов и визуализировать зоны влияния правил для выбранного боида.
Проведённые вычислительные эксперименты подтвердили, что характер коллективного поведения существенно зависит от заданных параметров.
Установлено, что:
•Баланс между весами правил и размерами их зон влияния критически важен для формирования устойчивых и согласованных групп.
•Чрезмерно высокая скорость агентов при низких коэффициентах сцепления препятствует образованию стай, приводя к хаотичному, несвязанному движению.
•Количество агентов влияет на сложность возникающих паттернов и вычислительную нагрузку, но сама логика самоорганизации сохраняется.
19
Таким образом, цель работы достигнута: алгоритм Boids изучен, его модель успешно реализована, а влияние ключевых параметров на коллективное поведение исследовано. Разработанная программа наглядно демонстрирует основные принципы роевого интеллекта.
Перспективы дальнейших исследований связаны с усложнением модели:
введением статичных и динамических препятствий, добавлением внешних сил
(например, ветра или течения), реализацией различных поведенческих режимов
(преследование цели, бегство от угрозы), а также адаптацией алгоритма для решения конкретных прикладных задач, например, моделирования коллективной миграции клеток в биомедицинских исследованиях.
20
