i. m., christian lange, u. p. rescue team simulation multiagentensystem
TRANSCRIPT
I. M., Christian Lange, U. P.
Rescue team simulation
Multiagentensystem
Gliederung
1) Aufgabe Agenten Unterschiede/Funktion
2) Umsetzung3) Entity-Package4) Control-Package5) GUI-Package
Gliederung
5) (No)CollisionNoCoordination Agenten
6) search-Algorithmus7) (No)CollisionCoordination Agenten8) Erweiterungen, Verbesserungen9) Programmvorstellung10) Ergebnisse der Simulation
Aufgabe MAS zum Retten von Unfallopfern Survivor
Verschlechtert seinen Gesundheitszustand mit einer Wahrscheinlichkeit von 60% je Zeiteinheit
Ausgangsgesundheit globaler Parameter Agent
Random NoCollisionNoCoordination CollisionNoCoordination NoCollisionCoordination CollisionCoordination
Agenten RandomRandom
Bewegen sich zufällig Strafversetzung beim Kollidieren mit
anderen Agenten Survivor gerettet durch Betreten des
Feldes
AA S
Agenten NoCollisionNoCoordination / NoCollisionNoCoordination /
CollisionNoCoordinationCollisionNoCoordination Bewegen sich mittels intelligente
Algorithmen Kollisionen
Vermeiden Strafversetzung
Survivor werden gerettet durch Betreten des Survivor-Feldes
AA S
Agenten NoCollisionCoordination / NoCollisionCoordination /
CollisionCoordinationCollisionCoordination Bewegen sich mittels intelligente
Algorithmen Kollisionen
Vermeiden Strafversetzung
Rettet den Survivor durch Umkreisen dieses
A A
A S
A A
A A A
A S A
A A A
A A A
S A
A A
Aufgabe Einstellungen
Anzahl der Agenten Anzahl der Survivor Größe des Feldes Episoden
Eine Episode beendet, wenn alle Survivor gerettet worden sind
StatistikStatistik Durchschnittliche Rettungszeit Durchschnittliche gerettete Survivor je
Agentenart
Umsetzung Erarbeiten der Agentenfunktionalität Recherche nach ähnlichen Projekten
Sehr komplexe Algorithmen Klassendiagramm erstellt
- Implementierung des Simulators
Aufgabenverteilung
Aufgabenverteilung
I. M.I. M. U. P.U. P. Christian Christian LangeLange
Erstellen des CollisionManagerErstellen der NoCollisionNoCoordination/ CollisionNoCoordination AgentenImplementieren der abstracten Agenten, Teams
Team Agenten (NoCollisionCoordination/ CollisionCoordination Agenten)Erweiterung Rescued Manager
Grafische Darstellung der Welt und der AgentenGrafische Auswertung der ErgebnisseImplementieren der abstracten Agenten, Welt, Surviors, Random Agenten, Rescued Manager
Entwicklungsumgebung Java 1.5 Update 9
Plattformunabhängig Eclipse 3.2.1
Freeware Bibliotheken
JFreeChart
Entity-Package
World Klasse, welche die Welt repräsentiert
kapselt Teams und Survivor Enthält das „Spielfeld“
Field-Objekte Was befindet sich auf dem Feld? Was ist der Zustand des Feldes?
explored?
Team
Ein Team für jede Agentenart Enthält die Agenten Besitzt die „TeamWorld“ Steuert Agenten und gibt Anweisungen
des Systems weiter Stellt globale Teamvariablen bereit Kommunikation innerhalb des Teams Teams konkurrieren
Agent & Survivor Agent
ID Aktuelle Position Zielpositon nearestSurvivor
Survivor ID Gesundheitszustand rescued
Control-Package
Control-Klassen „RescueSystem“
steuert den Ablauf in einem Zeitschritt & in den Episoden
ruft die Manager auf Manager
„CollisionManager“ Prüft, ob Kollisionen und löst diese
„RescuedManager“ Prüft, ob Survivors gerettet wurden
„RescueSystem“ steuert den Ablauf
Nachricht an die Teams Agenten „sollen sich umschauen“ & ihre „Wunschposition“
Aufruf „CollisionManager“ Nachricht an die Teams
Agenten auf nächste Position updaten der World/TeamWorld
Felder setzen (durch Teams) „RescuedManager“ Gesundheitszustand der Survivors verändern GUI neu zeichnen
GUI-Package
GUI Swing JMenuBar JToolBar JTabbedPane JPanel
Einstellungen Anzahl der Agenten Sichtweite Wahrscheinlichkeit Gesundheitszustand Anzahl der Survivor Anzahl der Episode und die Pausenzeit
Statistiken 3 Arten Implementiert
Ø gerettete Survivors je Agent pro Episode je Team pro Episode
Ø Zeit für das Retten eines Survivors Exportieren und Drucken der
Diagramme
Ines Moosdorf, Christian Lange, Ulrike Plötner
(No)CollisionNoCoordinationAgent
I. M.
AA S
Einleitung
NoCollisionNoCoordination &CollisionNoCoordination
Beide gleiche Art, um Survivor zu befreien
haben beide gleiche Algorithmen Unterschied nur bei Kollisionskonfliktlösen Sind keine Individualisten, sondern
kommunizieren
Ablauf Agent
Sensorik
Überlegung
Aktorik
Sensorik
Agent: lookAround()
schaut sich x Kästchen weit um trägt Entdeckungen in TeamWorld ein
Überlegung
Team: findDestinations() kürzeste Wege für alle Agenten zu
allen Survivors ermittelt Utilities übergibt diese Daten dem Agenten
Agent: berechnet daraus „Expected Utilities“und bestimmt damit seinen optimalen Survivor
Berechnung „Expected Utility“
= Probability x UtilityP.. ProbabilityS.. Summe aller kürzesten Wege eines Agentenk.. Kürzester Weg zum aktuellen Survivor
Utility.. Kehrwert des Gesundheitszustand des
Survivors
S
kSP
health
1
Kommunikation zwischen den Agenten wird vom Team angestoßen klären, wer welchen Survivor bekommt für jeden Survivor ein Agent (s=a) wenn weniger Survivor als Agenten
die besten laufen zu den Survivors & die restlichen durchsuchen andere Felder (search())
wenn noch kein Survivor Agent ruft search()-Methode auf
Kommunikation zwischen den Agenten - Details
Nächster Schritt Agenten, die einen Survivor
festzugeordnet bekommen haben: Nächste Position: Feld, welches näher
am Survivor dran ist als ihr aktuelles Feld
Agenten, die keinen Survivor haben: search()-Algorithmus:
solange in eine Richtung gerade aus laufen, bis sie gegen eine Wand laufen
Kollisionsprüfung
CollisionManager Control-Klasse solveCollisions()
Aktorik Team: moveAllAgents()
Ruft move() der Agenten auf ändert Status der Felder in der
TeamWorld und in der „echten“ Welt Änderung in der Umgebung
Agent: move() Gewünschte Position wird zur
aktuellen Position Änderung im Agenten
TODO – (No)CollisionNoCoordination
search()-Algorithmus nicht optimal NoCollision-Agenten
Kollisionsalgorithmus
Ines Moosdorf, Christian Lange, Ulrike Plötner
(No)CollisionCoordinationAgent
U. P.
A A
A S
A A
A A A
A S A
A A A
A A A
S A
A A
Ablauf
lookAround
findDestinations
move
findDestination
findDestination
search
if no survivor found
else
coordinateRescue
search
definiere geradeaus
laufe geradeaus
while possible
not possible
Grundgedanken
Einteilung der Agenten in Rettungsteams
ANIM – AgentsNotInMission SNIM – SurvivorsNotInMission SIM – SurvivorsInMission
findDestinations()
findDestinations() {
checkDisappearedSurvivors();
checkNewSurvivors();
coordinateRescue();
}
coordinateRescue()
SIM: calcNextPositionRescueTeam() Bildung der Rettungsteams aus ANIM
wenn es SNIM gibt: calcAgentsForRescue() calcShortestWays() putPrioritySurviovrInMission()
Erweiterungen
CollisionManager Sichtweite der Agenten
momentan können sie hinter Mauern sehen
Erweiterungen
Verbesserungen
search-Algorithmus Coordination-Agents:
flexiblere Teams prioritySurvivor
Programmvorstellung
Ergebnisse der Simulation
Ergebnisse der Simulation
Ergebnisse der Simulation Größe 30x30 2 RandomAgents 1 CollisionNoCoordinationAgent 3 CollisionCoordinationAgent Sichtweite 2 Survivors 30 Episoden 10