StrangeWorld
Par: Chaplin
E-Mail: chaplin_hack@hotmail.com
Page Internet: http://www.angelfire.com/id/chaplincorp
StrangeWorld est un programme en java qui démontre comment l'évolution par sélection
naturelle peut améliorer des réseaux neuraux. StrangeWorld modèle un environnement
de carnivores/herbivores ou les herbivores
se nourrissent sur des plantes et les carnivores
se nourrissent d'herbivores et d'autres carnivores.
- Les plantes pour herbivores
sont représentées par des cercles verts. Elles apparaissent au hasard.
Elles ne possèdent pas de réseaux neuraux et ne se déplacent pas. Elles ne
sont la que pour nourrir les herbivores.
- Les herbivores sont représentés par un cercle bleu avec une
queue indiquant l'arrière de l'animal. Les herbivores
se nourrissent des plantes qui se régénèrent au hasard dans StrangeWorld.
Ils possèdent des réseaux neuraux.
- Les carnivores sont représentés de la même façons que les herbivores mais ont une couleur rouge. Ils se
nourrissent d'herbivores et d'autres carnivores. Ils possèdent aussi des réseaux
neuraux.
Les réseaux neuraux
Tout les carnivores et herbivores
ont une pair d'antennes. Chaque antenne calcule l'intensité Rouge/Vert/Bleu dans un certain radius. L'intensité croie
lorsqu'elle se rapproche de la créature. Ce sont ces valeurs que la créature
utilise pour prendre des décisions d'avancer, de reculer ou de tourner.
Les réseaux neuraux que les herbivores et
les carnivores utilisent dans StrangeWorld
sont de simples réseaux neuraux analogues dont les neurones peuvent avoir la
valeur entre -1000 et 1000. Il y a neuf neurones par couche et il y a cinq
couches (1 d'entré, 3 cachées, 1 de sortie)
Chaque neurone est connecté à toute les neurones de la couche supérieure. Chaque
connection inter-neurones peut avoir une importance entre -1000 et 1000. Les
connections pour chaque neurone sont multipliées par leur importance
correspondante et puis additionnée. Le total est ensuite divisé par la moyenne
de chaque valeur d'importance pour ce neurone et le résultat est arrondit pour être
entre –1000 et 1000. Cette valeur est maintenant la valeur de ces neurones.
Les neufs neurones d'entré de la première couche sont
- L'intensité rouge
de l'antenne de droite (0 – 1000)
- L'intensité verte
de l'antenne de droite (0 – 1000)
- L'intensité bleue
de l'antenne de droite (0 – 1000)
- L'intensité rouge
de l'antenne de gauche (0 – 1000)
- L'intensité verte
de l'antenne de gauche (0 – 1000)
- L'intensité bleue
de l'antenne de gauche (0 – 1000)
- Le niveau d'énergie de la créature (0
– 1000)
- La dernière rotation (-1000 – 1000)
- Le dernier déplacement (-1000 – 1000)
Les deux sorties des réseaux neuraux
- La rotation (-1000 – 1000) ou (-10 –
10 degrés)
- Le déplacement (-1000 – 1000) ou (-10
– 10 pixels)
Les lois de StrangeWorld
StrangeWorld
est synchronisé par une horloge globale. Chaque tick, le monde passe a travers
de la liste de toutes les créatures.
- Le niveau d'énergie de la créature
est diminué de 1. S'il atteint le niveau zéro, la créature meurt.
- Si la créature n'est pas morte,
StrangeWorld trouve l'intensité Rouge/Verte/Bleu
de ses deux antennes et donne leurs valeurs aux réseaux neuraux de la
créature. Ensuite fait de même avec le niveau d'énergie, la dernière
rotation et le dernier déplacement.
- Puis, il demande aux réseaux neuraux
de la créature de faire des décisions sur son prochain déplacement et sa
prochaine rotation.
- StrangeWorld ensuite prend les deux
valeurs de la dernière couche des réseaux neuraux de la créature et la déplacent
comme l'a décidé ses réseaux neuraux. La créature va donc faire une
rotation entre 10 et –10 degrés et vas avancer ou reculer d'une valeur
entre 10 et –10 pixels.
- Le niveau d'énergie de la créature
est diminué en proportion a son déplacement. Plus la créature se déplace,
plus grande est la perte d'énergie. Une rotation n'affecte pas son énergie.
- Si la créature rentre en contact avec
une autre créature et elle est de la nourriture, la créature tue et mange
la nourriture et son niveau d'énergie est augmenté.
- Si la créature est un carnivore et que c'est sa 10ieme
victime de suite, ce carnivore se
reproduit et crée trois enfants. Chaque enfant hérite les réseaux neuraux
de sa mère mais qui comprend aussi des petites mutations. Un herbivore se reproduit et crée deux enfants
chaque fois qu'il se nourrit d'une plante..
L'interface
Tout dans
StrangeWorld est manipulé avec la sourit. Ce programme a été conçu avec le SDK
Java version 1.4.0. Si votre JRE est plus vieux que cela, il se peut qu'il ne
puisse pas reconnaître les commandes de sourit et de clavier. Tout d'abord,
StrangeWorld doit recevoir le focus du clavier; C’est accomplit en cliquant
dans la fenêtre de StrangeWorld.
Une créature peut
être sélectionnée en cliquant dessus. Une créature sélectionnée est représenté
en jaune et est invincible.
Les
commandes de clavier.
- ‘h’ active/désactive la haute qualité
de l'image.
- ‘r’ active/désactive l'image, sans
image, l'exécution est beaucoup plus rapide.
- ‘b’ change la couleur de fond en noir
ou blanc.
- ‘g’ active/désactive l'impacte que le
niveau d'énergie de la créature a sur sa couleur.
- ‘l’ les créatures sont représentées
comme des lignes.
- ‘p’ arrête/recommence StrangeWorld.
- ‘v’ active/désactive la
représentation graphique du radius des antennes de chaque créature.
- ‘k’ Diminue le niveau d'énergie de la
créature sélectionnée a zéro. Pour tuer une créature, Faite pause,
sélectionnez cette créature, pesez ‘k’, désélectionné la et recommencez
StrangeWorld.
- ‘w’ active/désactive la
représentation des créatures pleine ou vide.
Sauvegarder le travaille
Quand
StrangeWorld est fermé, il écrit dans deux fichiers les réseaux neuraux de un carnivore et de un herbivore
choisis au hasard.
Ces réseaux
neuraux sont ensuite utilisés la prochaine fois que StrangeWorld est démarré.
Si StrangeWorld ne trouve aucun fichier, les créatures commencent tous avec des
réseaux neuraux créés au hasard. Les réseaux neuraux sont aussi sauvegardés à
chaque 5000 tick pour minimiser la perte travaille en cas de crash de système.
Extinctions
En cas
d'extinction, StrangeWorld vas créer trois nouvelles créatures de l'espèce qui
est disparue avec les réseaux neuraux de la dernière créature de cette espèce. Ceci
permet à StrangeWorld de continuer à travailler sans arrêts pour de très longues
périodes de temps.