Dieses Projekt simuliert ein dynamisches Predator-Prey-Szenario zur Untersuchung lernfähiger Agenten mit Hilfe von Reinforcement Learning. Die Agenten agieren in einer physikalisch plausiblen 2D-Umgebung mit Hindernissen, Futterquellen und einem jagenden Gegenspieler. Das Trainingsverfahren basiert auf PPO (Proximal Policy Optimization) mit LSTM zur Verarbeitung sequentieller Beobachtungen.
Ziel ist es, die Lernfähigkeit und Generalisierbarkeit von Agentenverhalten in verschiedenen Subtasks wie Navigation, Flucht und Nahrungssuche zu analysieren. Die Umgebung ist vollständig modular und nutzt die PettingZoo-Schnittstelle.
Die folgenden GIFs zeigen exemplarische Durchläufe trainierter Agenten in verschiedenen Szenarien. Alle Clips sind im Repository unter animated_runs/ verfügbar:
-
circle_field: Ein Agent leert effizient ein Futterfeld und weicht dabei gleichzeitig dem Jäger aus

-
flee_river: Der Agent nutzt einen engen Pfad mit Fluss als Deckung und entkommt dem Jäger

-
flee_rocks: Der Agent verwendet große Felsen zur Flucht und Sichtblockade gegenüber dem Jäger

-
spinning_navigate: Navigation durch ein komplexes Feld mit Hindernissen zur Erreichung eines Ziels

# Virtuelle Umgebung erstellen
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
# Abhängigkeiten installieren
pip install -r requirements.txtAlle konfigurierbaren Parameter zur Umgebungsstruktur und Trainingsstrategie befinden sich in:
config.json– grundlegende Einstellungen zur Map, Sichtfeld, Belohnungsstruktur etc.algorithms.py– Trainingsarchitektur und PPO-Hyperparameter
python main.pyTrainingsdaten werden automatisch unter logs/<timestamp>/ gespeichert.
python analyze_run.pyGeneriert in graphs/ verschiedene Plots zur Reward-Entwicklung, Episodenlängen etc.
python visualize_run.pyErzeugt ein .avi-Video der Simulation basierend auf Umgebungsdaten und Agentenpfaden.
python evaluate.pyDas Evaluationsskript erlaubt eine systematische Bewertung von trainierten Modellen. Dabei werden je nach Szenario spezifische Metriken wie „Zeit bis Ziel“, „Überlebenszeit“ oder „gesammeltes Futter“ extrahiert. Die besten 5 Durchläufe werden unter evaluate_log/ gespeichert.