Apprentissage automatique de la marche pour robots virtuels.
- Python3
- Numpy
- Matplotlib
- Pygame
- Box2D
pip3 install numpy matplotlib pygame box2d
- Choisir une morphologie par la variable "ANIMATRONIC"
- Choisir le nombre de couches intermédiaires et le nombre de neurones par couche (hors biais) avec la variable "HIDDEN_LAYERS"
- Choisir la fonction d'activation globale avec la variable "ACTIVATION"
Usage:
$ python3 evolve.py -h
usage: evolve.py [-h] [-v] [-m MUTATE] [-f FILE] [-t TERRAIN_ROUGHNESS]
[-s SAVE_INTERVAL] [-l LIMIT_STEPS] [-p POOL_SIZE]
[-w WINNERS_PERCENT] [-e END_GENERATION]
optional arguments:
-h, --help show this help message and exit
-v, --view enable presentation mode
-m MUTATE, --mutate MUTATE
mutation frequency multiplier (defaults to 2)
-f FILE, --file FILE population file
-t TERRAIN_ROUGHNESS, --terrain_roughness TERRAIN_ROUGHNESS
terrain variation in elevation (in percent)
-s SAVE_INTERVAL, --save_interval SAVE_INTERVAL
save population to disk every X generations
-l LIMIT_STEPS, --limit_steps LIMIT_STEPS
max number of steps for each individual trial
(defaults to 500)
-p POOL_SIZE, --pool_size POOL_SIZE
size of creature population (defaults to 200)
-w WINNERS_PERCENT, --winners_percent WINNERS_PERCENT
percent of selected individuals per generation
-e END_GENERATION, --end_generation END_GENERATION
limit simulation to this number of generations
(defaults to 500)
Evolution d'une population d'après les paramètres par défaut
python3 evolve.py [-v]
Reprendre l'évolution d'une population depuis un fichier
python3 evolve.py -f genXXX.txt
Activer le mode présentation:
python3 evolve.py -f genXXX.txt -v
'n' Sélectionne la prochaine créature 'm' Mode miroir (inverse la symétrie des récepteurs) 'd' Affiche le réseau neuronal de la créature actuelle 'f' Centre l'affichage sur la créature actuelle 's' Slow motion 'p' Pause 'w' Affiche les connexions montantes ou descendantes du réseau neuronal 'q' ou Esc Quitter
python3 race.py -f genXXX.txt
Chaque exécution de la fonction Animatronic.mutate provoque la mutation de 2 gènes en moyenne. Une mutation peut définir une nouvelle valeur (entre -1 et 1) à un gène ou bien le désactiver (valeur définie à 0). Un gène désactivé ne subit plus de mutations et il ne peut donc pas être réactivé. Les désactivations représentent 2% des mutations.
- Entrainer à sauter
- Mode présentation : touche "screenshot", placer l'image dans le rép de la population
- Utiliser des scenarios d'entrainement
- Cumul du score pour chaque creature
- Curriculum learning
- Tester réseau neuronal qui s'actualise d'une couche à la fois (pour un RN de x couches intermédiaires, il faudra donc x+1 pas pour le traverser entièrement)