Files
neuroevolution/README.md
2026-02-21 10:58:05 +01:00

108 lines
2.6 KiB
Markdown

# Neuroevolution
`mathema` ist ein experimentelles Neuroevolutions-Framework in Python, das agentenbasierte Architekturen mit evolutiven Mechanismen kombiniert und sich dabei
architektonisch am DXNN-System von Gene Sher orientiert.
Das Projekt ist modular aufgebaut und erlaubt die Evaluation evolvierender Agenten in verschiedenen Scapes (einer angepassten CarRacing-Umgebung).
Der Fokus liegt auf:
- evolutionären Lernprozessen
- populationsbasierten Trainingsläufen
- reproduzierbarer Evaluation
- klarer Trennung von Genotyp, Phänotyp und Umgebung
---
## Projektüberblick
Das Framework besteht aus mehreren logisch getrennten Komponenten:
- **core/**
Zentrale Evolutionslogik (Agenten, Genotypen, Mutationen, Selektion, Populationen)
- **scape/**
Umgebungen, in denen Agenten agieren (z. B. CarRacing)
- **eval / main-Skripte**
Training, Evaluation, Vergleich mehrerer Runs
- **utils/**
Hilfsfunktionen (Logging, Konfiguration, Seed-Handling, I/O)
- **archive/**
Ältere oder experimentelle Implementationen (nicht aktiv genutzt)
---
## Verzeichnisstruktur
mathema/
├── core/ # Evolutionskern (Agent, Genotyp, Population, Mutation)
├── scape/ # Umgebungen / Aufgabenräume
├── utils/ # Hilfsfunktionen
├── archive/ # Alte / experimentelle Module
├── eval_main.py # Evaluations- & Benchmark-Skript
├── car_racing_main.py # Einstiegspunkt für CarRacing-Experimente
---
## Zentrale Konzepte
### Agent
Ein Agent repräsentiert eine evolvierbare Einheit, die:
- einen Genotyp besitzt
- daraus einen Phänotyp (z. B. neuronales Netz) ableitet
- in einer Scape Aktionen ausführt
### Genotyp / Phänotyp
- Der Genotyp beschreibt die Struktur (z. B. Neuronen, Kanten, Parameter)
- Der Phänotyp ist die ausführbare Repräsentation (z. B. Policy / Controller)
### Neuroevolution
- Populationen mehrerer Agenten
- Mutation (Topologie & Parameter)
- Selektion auf Basis von Fitness
- optional populationsbasierte Strategien
### Scapes
Eine Scape definiert:
- Zustandsraum
- Aktionsraum
- Reward-/Fitness-Berechnung
- Episodenlogik
---
## Installation
### Virtuelle Umgebung und Neo4j DB
```bash
docker compose up -d # starte neo4j db
python -m venv .venv
source .venv/bin/activate
```
Requirements installieren:
```bash
pip install -r requirements.txt
```
## Quickstart
### CarRacing-Experiment starten
```bash
python mathema/car_racing_main.py
```
startet eine Evolutionsrunde mit Agenten in der CarRacing-Umgebung.
### Mehrere Runs (Thesis-Tests)
```bash
python mathema/eval_main.py
````
Führt mehrere unabhängige Läufe aus und aggregiert Fitness-Statistiken.