51
I. M., Christian Lange, U. P. Rescue team simulation Multiagentensystem

Rescue team simulation

Embed Size (px)

DESCRIPTION

Rescue team simulation. Multiagentensystem. Gliederung. Aufgabe Agenten Unterschiede/Funktion Umsetzung Entity-Package Control-Package GUI-Package. Gliederung. (No)CollisionNoCoordination Agenten search-Algorithmus (No)CollisionCoordination Agenten Erweiterungen, Verbesserungen - PowerPoint PPT Presentation

Citation preview

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