개요
Steam에서 출시 / GitHub에서 공개한 Autonomous Warfare Evolution의 프로그램 중에서 사용되고 있는 군집 지능 (Swarm Intelligence)과 유전 알고리즘 (Genetic Algorithm)에 대해 해설할까 생각했으나, ChatGPT에게 코드를 읽게 했더니 상당히 적절하게 해설해 주었으므로 이 대화 로그를 공개하는 것만으로도 거의 충분하다고 생각한다.
일부, 정정/보충만 해두겠다.
대화 로그의 정정/보충 등
출시 직전 버전까지는 fp * rng라는 항은 없었고, 단순하게 각 파라미터 (Parameter)는 독립적이며, 올리면 에너지 소비가 지수적으로 올라가도록 설계했었다.
이 경우라면 비교적 안정적인 수렴해 (Convergence solution)가 있을 것 같았으나, 너무 단순하면 재미가 없을 것 같아 성능의 트레이드오프 (Trade-off)를 복잡화했다.
솔직하게 최적해 (Optimal solution)가 수렴하는 세계에서는 세대에 따라 강함이 성장해 나가는 것처럼 느껴지기 쉬우므로, 그것대로 게임다운 밸런스였을지도 모른다.
self_incompatibility
일본어로는 「자가불화합성 (自家不和合性)」이라 불리며, 게임 UI 상에서는 "SI"라고 표기하고 있다.
주로 식물에서, 자가 수분보다 다른 개체로부터의 수분을 우선하도록 이러한 특성을 갖추고 있는 것이 많다.
이 파라미터 (Parameter)만, 전투 중인 유닛 (Unit)의 거동에도 성능에도 관계하지 않는, 진화의 특성 파라미터 (Parameter)가 되어 있다.
게임 UI 상에서는 "xenogenic"이라고 표기하고 있다.
외래종을 의미한다.
유전 알고리즘 (Genetic Algorithm)은 「좋은 게놈 (Genome)」이 발견되면, 급속히 다양성이 상실되기 쉬우며, 그렇게 되면 국소해 (Local optimum)에서 벗어나기 어려워진다.
또한, 이번과 같이 관찰 요소가 큰 게임에서는 게놈 (Genome)이 다양성이 부족하면 보고 있기에 지루해지기 쉽다.
이 문제에 대한 대책으로서, 유전 알고리즘 (Genetic Algorithm)을 격리된 여러 개의 풀 (Pool) 위에서 실시하고, 때때로 게놈 (Genome)을 교류시키는 「섬 모델 (Island Model)」이라고 불리는 수법이 알려져 있다.
격리된 섬에서는 독자적인 생태계가 형성되기 쉽다는, 실제 세계의 현상을 그대로 응용하고 있다.
이것은 솔직히 코드의 잔해이며, 실제로는 다른 부분에서 승패 판정이 이루어지고 있다.
억지로 승패를 결정하는 것도 장단점이 있다.
특히 영토 지배율까지 승패 판정에 포함하면, 적극적으로 싸우지 않고 아슬아슬하게 이기는 듯한 AI가 적응적(Adaptive)이 될 가능성이 있다.
그렇게 되면 지뢰와 같은 소극적인 유닛 (Unit)끼리 서로 기다리는 듯한 구도가 되기 쉬워, 보고 있기에 템포가 나빠지기 쉽다.
또한, 지뢰형 유닛 (Unit)은 실전 투입 시 적진으로 향하지 않기 때문에, 플레이어의 조작 유닛 (Unit)으로서도 다루기 어렵다.
그래서 시간 종료 시의 판정 조건은 다음 조건 중에서 플레이어가 선택할 수 있도록 했다.
- 유닛 (Unit) 수의 판정만
- 유닛 (Unit)이 동수라면 영토 지배율의 판정을 포함
- 승리 조건이 충족되지 않았다면 무승부로 처리
유전 알고리즘 (Genetic Algorithm)의 하이퍼파라미터 (Hyperparameter)를 조작하는 게임, 이라는 설정이다.
소스 코드와 게임에 대하여
Autonomous Warfare Evolution의 소스 코드는 MIT 라이세스 (License)로 공개하고 있다.
게임은 Steam에서 공개 중.
GitHub:
Steam: