Boids: як три правила створюють зграю з тисяч особин

Алгоритм Boids Крейга Рейнольдса 1986 року використовує лише три правила — розділення, вирівнювання, згуртованість, — щоб відтворити моторошно реалістичну поведінку зграй, яку ми бачимо в шпаків, що літають хмарами. Жодного диригента, жодного плану, жодного глобального знання. Лише локальні правила — і емерджентність.

Погляньте на хмару шпаків у польоті — і вам важко буде повірити, що жоден птах тут не головний. Тисячі особин нахиляються, крутяться і хвилюються, як єдина плинна сутність — форма, що постійно змінюється: стискається в щільні кулі, витягується у стрічки й розділяється навколо хижаків із мілісекундною точністю. 1986 року дослідник комп'ютерної графіки Крейг Рейнольдс розкрив цей код усього трьома правилами. Його стаття, опублікована на SIGGRAPH 1987, познайомила світ із Boids — симульованим алгоритмом зграйної поведінки, що й досі лишається одним із найелегантніших прикладів емерджентної складності, коли-небудь створених.

Три правила Boids

Кожен boid — так Рейнольдс поєднав слова «bird» (птах) і «-oid» (подібний до) — підпорядковується рівно трьом стерувальним поведінкам, кожна з яких діє в межах локального радіусу сприйняття:

Кожне правило зважується і поєднується в єдиний керувальний вектор, застосований до швидкості boid'а. Жоден boid не спілкується з усією зграєю. Жоден не має карти. Жоден не знає, що він частина хмари з тисяч птахів. Інтелект — якщо це можна так назвати — виникає повністю з локальних взаємодій між особинами, кожна з яких сприймає лише невелику околицю навколо себе.

Ключова ідея: радіус сприйняття — найважливіший параметр. Занадто малий — і зграя розпадається. Занадто великий — і кожен boid одночасно перебуває під впливом усієї зграї, що дає жорсткий, неприродний рух. Оптимальна зона — приблизно 50–150 пікселів в екранних координатах — створює той плавний, органічний рух, що виглядає біологічно правдоподібним.

Емерджентність: коли просте стає складним

Приголомшливий результат поєднання цих трьох правил полягає в тому, що на рівні зграї виникають візерунки, яких жоден окремий boid не планував і не виконував. Зграя розділяється навколо перешкод, і жоден птах не приймає рішення розділитися. Хижак, що потрапляє у зграю, створює «порожнечу» — прогалину, що поширюється назовні хвилею — без жодного координаційного сигналу. Ця хвиля рухається швидше за будь-якого окремого птаха, бо її несуть не птахи, а каскад локальних реакцій.

Налаштування ваг кардинально змінює характер симуляції:

Застосування у візуальних ефектах з'явилося майже одразу й мало глибокий вплив. Фільм Тіма Бертона «Бетмен повертається» (1992) використовував похідну від Boids систему і для зграй кажанів, і для сцени маршу армії пінгвінів — перше масштабне використання поведінки автономних агентів у кіно. Команда Пітера Джексона у Weta Digital розширила алгоритм для армій орків у фільмі «Володар перснів: Дві вежі» (2001), наділивши окремих воїнів здатністю уникати одне одного, орієнтуватися на місцевості та формувати емерджентні бойові порядки. Сцена панічної втечі в «Королі Леві» (2019) використовувала подібні техніки для антилоп гну.

Не лише птахи: Boids скрізь

Рейнольдс створював Boids для моделювання зграй птахів, але алгоритм узагальнюється на будь-яку систему локально взаємодіючих агентів. У моделюванні косяків риб додають імпульс утечі від хижака — раптове правило розділення з дуже високою вагою, що спрацьовує, коли хижак потрапляє в радіус сприйняття, — і це породжує вибухове «спалахове розширення», яке спостерігають у косяках сардин, оточених хижаками. Косяк знову стискається, щойно хижак відступає.

Мурашині колонії — доповняльна децентралізована система: замість правил керування рухом мурахи залишають і йдуть за феромонними слідами. Немає жодної матки, що керує рухом. Оптимальний шлях між гніздом і джерелом їжі виникає тому, що коротші шляхи накопичують сильніший феромонний сигнал, перш ніж він встигне випаруватися — ще одне локальне правило, що породжує глобальний інтелект.

Моделі евакуації людських натовпів використовують варіанти Boids, де розділення кодує особистий простір, а згуртованість відображає тенденцію слідувати за іншими. Ці моделі вплинули на проєктування виходів зі стадіонів та маршрутів аварійної евакуації. У робототехніці алгоритми рою дронів реалізують Boids у фізичному апаратному забезпеченні — квадрокоптери утримують формацію завдяки бортовим сенсорам без жодного централізованого контролера.

Оригінальна стаття Рейнольдса «Flocks, Herds, and Schools: A Distributed Behavioral Model» (SIGGRAPH 1987) лишається однією з найцитованіших робіт у комп'ютерній графіці, а її основні ідеї вплинули на галузі від автономних транспортних засобів до роїнної робототехніки й моделювання соціальних мереж. Стаття перебуває у вільному доступі й досі дивовижно легко читається майже через чотири десятиліття.

Можливо, найбільш приголомшливий висновок емпіричних досліджень справжніх хмар шпаків: птахи реагують на сусідів за 7 мілісекунд, і вони відстежують не 6–7 найближчих птахів у метричній відстані, а в топологічній відстані — 6–7 найближчих незалежно від того, як далеко вони фізично перебувають. Додайте невеликий стохастичний шум до правила вирівнювання, щоб відобразити індивідуальні відхилення, — і симульована хмара птахів стає майже невідрізнимою від відеозйомки справжнього явища. Три правила. Сім сусідів. Нескінченна складність.