108 lines
2.6 KiB
Markdown
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.
|
|
|
|
|
|
|
|
|
|
|