Kolejna odsłona programu do modelowania zachowań tłumu z wykorzystaniem systemów multi agentowych.
Trochę informacji o wersji pierwszej.
MODELOWNIE ZACHOWAŃ TŁUMU Z WYKORZYSTANIEM SYSTEMÓW AGENTOWYCH
Modelowanie zachowań tłumu stało się ostatnimi laty bardzo popularne. Zapoczątkowane przez nowatorskie produkcje filmowe znalazło zastosowanie w wielu projektach badawczych analizujących na przykład zachowania cząsteczek, systemów złożonych.
Tworzony przez nas symulator ma umożliwić zaprogramowanie złożonych zachowań pojedynczych użytkowników, jak i całych grup. Wykorzystanie w nim systemu multi agentowego daje możliwość nadawania indywidualnych cech pojedynczym jednostkom, co pozwala na doświadczalne sprawdzanie zachowań całych mas w danych sytuacjach. Takich jak ucieczka z płonących budynków, ale również współdziałanie na polu walki.
Wykorzystanie grafiki trójwymiarowej do wizualizacji zachowań agentów daje możliwość wykorzystania aplikacji także do tworzenia animacji.
1. Konstrukcja programu
1.1 Agent cechy indywidualne.
Stworzeni przez nas agenci posiadają zdolność podejmowania autonomicznych decyzji bazujących na warunkach otoczenia w jakich się aktualnie znajdują. Komunikują się ze sobą oraz współdziałają w celu osiągnięcia z góry zaprogramowanych korzyści. Nieustannie monitorują otoczenie i starają się reagować na jego zmiany. Mają zaprogramowane liczne funkcje celu, których waga zmienia się w zależności od sytuacji ( chodź istnieje też pierwiastek losowości zachowań ).
Pełna animacja agentów:
1.2 Agent żołnierz – na potrzeby symulacji pola bitwy
Agent żołnierz posiada następujące atrybuty:
- wielkość obrażeń ( np. rodzaj broni )
- ilość życia i obrony ( definiuje jak długo agent może przetrwać w zwarciu lub pod ostrzałem )
- zręczność i wściekłość ( modyfikacja wielkości obrażeń oraz prędkości szarży / ucieczki )
- odwaga ( definiuje z iloma przeciwnikami naraz każdy z agentów może walczyć, a kiedy uzna za stosowne ratować życie )
- stan i szybkość poruszania się ( stan w jakim znajduje się agent, stan zgodny z diagramem stanów, szybkość poruszania się zależy od stanu jak i od nachylenia terenu )
- animacja ( odrębne zestawy animacji dla każdego ze stanów )
- zakres widzenia i walki ( rysunek po prawej przedstawia zakres widzenia, zasięg walki zależy od rodzaju broni )
- gromadzenie statystyk ( na potrzeby badawcze istnieje możliwość zapisywania statystyk, np. średnie obrażenia, droga poruszania się , wybrane cele oraz sposób realizacji )
Animacja agentów tworzona jest z wykorzystaniem 3DS Max, oraz funkcji szkieletowej lub biped’owej animacji postaci.
1.3 Poruszanie się
- Algorytm przemieszczania się agentów uodporniony jest na „zacinanie się” agentów np. w rogach budynku.
-
Dyskretyzacja przestrzeni, w której znajdują się agenci pozwala na optymalizację obliczeń.
- Przestrzeń agentowa jest wielopoziomowa, pozwala to na budowania np. wielopiętrowych budynków, schodów, zboczy gór, obszarów zadaszonych. Rysunek po prawej przedstawia roboczą przestrzeń agentową.
- Algorytmy przemieszczania się agentów pozwalają na skuteczne omijanie przeszkód.
- Dostosowane do potrzeb symulacji algorytmy wyszukiwania ścieżki pozwalają na znalezienie przez naszych agentów drogi ewakuacji nawet z labiryntu.
1.4 Scena
- Rzeźba terenu modelowana z wykorzystaniem programu Large 3D Terrain Generator.
- Na potrzeby animacji stworzyliśmy możliwość wczytywania poszczególnych warstw terenu z plików, ułatwiło i przyspieszyło to tworzenie bardziej zaawansowanych budynków takich jak widoczny po lewej zamek.
- Dokładność obiektów, którą udało nam się osiągnąć jest w granicach 20cm x 20 cm x 50 cm.
- Ilustracja po lewej przedstawia wygląd roboczy, na którym widoczne są dokładnie „klocki”, z których składany jest budynek . teren.
1.5 Wizualizacjia
Do wizualizacji terenu i agentów, wykorzystaliśmy silnik graficzny jMonkeyEngine v2 ( LWJGL ). Silnik jME wspiera również animację agentów, a także renderowanie grafiki w sekwencje filmowe.
1.6 Renderowanie
Na potrzeby symulacji stworzyliśmy też moduł odpowiedzialny za zapis animacji do pliku. Dodatkowe możliwości reżyserowania ruchów kamery oraz możliwość „reżyserowania” zachowań agentów, okazały się bardzo pomocne w czasie końcowych prac. Multi Agent Simulator v2 został wzbogacony również o moduły sterujące szybkością animacji agentów jak i ilością wyświetlanych klatek ( FPS ).
2. Algorytmy
System walki wzorowany jest na klasycznych zasadach gier RPG i uwzględnia następujące elementy: zręczność, szybkość, odległość, ilość obrony, ilość siły , wściekłość oraz możliwość kontr ataku. Agenci „sprawdzają” czy mogą zobaczyć swojego przeciwnika oraz jeżeli już go widzą to czy mogą do niego dojść w prosty sposób. W przypadku gdy dojście do przeciwnika nie jest możliwe agent stara się wycofać na bezpieczną odległość.
2.1 Prezentacja algorytmu poruszania się oraz grupowania.
Agenci zbierają się w grupę podążając za jednym z przywódców, którzy są w ich zakresie widzenia.
2.2 Prezentacja algorytmu ucieczki z labiryntu.
Symulacja ucieczki agentów z labiryntu. Film obrazuje umiejętność naszych agentów do znajdowania wyjścia z zamkniętych pomieszczeń np. z budynków, ewakuacji stadionów , ewakuacji płonących budynków.
2.3 Prezentacja algorytmu walki ( ucieczki i walki )
W pierwszej części filmu wyreżyserowaliśmy ucieczkę jednego z agentów, jak widać porusza się on przez chwilę znacznie szybciej od napastnika. W drugiej części filmu współczynnik odwagi obydwu wojaków został zrównany i doszło do starcia.
3. Animacje końcowe
Jednymi z efektów naszych prac są dwie animacje w pełni obrazujące możliwości MASv2.
Statyczna animacja walki o zamek, kamera umieszczona na murze.
Pełna animacja zdobywania zamku. Wyreżyserowany ruch kamery oraz częściowo wyreżyserowane działania agentów, którzy jednak nie do końca chcieli się nas słuchać 🙂
Pełna prezentacja projektu: MultiAgent 2010 v4