친구와 적과 함께 춤추기: boids의 군집 지능
Dancing with friends and enemies: boids' swarm intelligence

Wolfram Community의 한 사용자가 1000명의 '댄서'가 무작위로 친구와 적을 선택하고, 친구에게 다가가고 적에게서 멀어지는 단순한 규칙을 반복하며 만들어내는 아름다운 군집 패턴을 소개합니다. 이 시스템은 동적 평형을 이루지만, 주기적으로 관계를 바꾸면 끊임없이 변화하는 소용돌이 춤을 선보입니다. 이 게시물은 14년 전에 올라왔으며, 이후 다양한 변형(3D, 링 구조, 100만 입자 시뮬레이션)과 개선된 코드가 댓글로 이어졌습니다.
무작위성이 의도적으로 주입된다.
- markstock
SW가 포함한 조정들은 비슷한 시뮬레이션에서 흔히 쓰이는 것들이다: 1) 인력-반발 쌍은 "boids" 시뮬레이션의 전형적인 특징이며, 원자에 작용하는 Lennard-Jones 힘에도 등장한다(다만 감쇠율의 지수가 다르다). 2) 입자 간 거리가 0에 가까워질 때 힘을 0으로 만드는 것은 각 입자를 점이 아닌 '구름'으로 취급하는 것으로, 소용돌이 입자 방법에서는 '정규화(regularization)', 중력 방법에서는 'Plummer 연화(softening)'라고 불린다. 주요 이점은 (i != j) 조건을 제거함으로써 SIMD와 병렬화에 유리하다는 것이다. 3) 느린 수축(각 입자의 위치에 (1-epsilon)을 곱하는 것)은 생성적 디지털 아티스트들이 시각적 활동이 특정 지점에서 너무 멀리 벗어나지 않도록 보장하기 위해 사용하는 기법이다. 이 시뮬레이션의 독특한 점은 매우 적은 수(N=2)의 이웃 입자에 대한 (계산적으로 효율적인) 의존성이다. 일반적으로 실시간 시뮬레이션을 1만~5만 개의 입자로 제한하는 O(N^2)이 O(N)이 된다.
- yehoshuapw
새 버전에서 멀리 떨어진 무리들이 분리된 상태를 유지하다가, 더 큰 무리에서 작은 무언가가 그들에게 도달하면 모두 다시 합쳐지는 것이 정말 매혹적이다.
- Honali
여기서 마음에 드는 점은 boids의 주요 가정 중 하나인 지역성(locality)을 버렸음에도 흥미로운 행동이 살아남는다는 것이다.