J'ai fait un peu de créatures qui vivaient dans ce petit monde. Ils avaient un réseau de neurones du cerveau qui a reçu certains apports de la monde et la sortie a été un vecteur de mouvement parmi d'autres actions. Leurs cerveaux ont été les "gènes".
Le programme a commencé par un hasard de la population de créatures aléatoires cerveaux. Les entrées et la sortie des neurones étaient statiques, mais ce qui était entre les deux n'était pas.
L'environnement contenait de la nourriture et des dangers. L'alimentation a augmenté d'énergie et quand vous avez assez d'énergie, vous pouvez mate. Les dangers permettrait de réduire la consommation d'énergie et si l'énergie était de 0, ils sont morts.
Finalement, les créatures ont évolué pour se déplacer dans le monde et trouver de la nourriture et éviter les dangers.
J'ai alors décidé de faire une petite expérience. J'ai donné à la créature le cerveau d'un neurone de sortie appelé "bouche", et un neurone d'entrée appelé "oreille". A démarré et a été surpris de trouver qu'ils ont évolué afin de maximiser l'espace et chaque créature de rester dans sa partie (de la nourriture a été placé au hasard). Ils ont appris à coopérer les uns avec les autres et non les uns les autres. Il y avait toujours des exceptions.
Ensuite, j'ai essayé quelque chose d'intéressant. J'morts, des créatures devenir de la nourriture. Essayez de deviner ce qui s'est passé! Deux types de créatures évolué, ceux qui ont attaqué comme en essaims, et ceux qui ont été élevés d'évitement.
Alors, quelle est la leçon à tirer ici? Les moyens de Communication de la coopération. Dès que vous introduisez un élément où blesser l'autre signifie que vous gagner quelque chose, la coopération est détruit.
Je me demande comment cela se reflète sur le système de libre marché et le capitalisme. Je veux dire, si les entreprises peuvent blesser leur concurrence et de sortir avec elle, puis son clair qu'ils vont faire tout en leur pouvoir pour nuire à la concurrence.
Edit:
Je l'ai écrit en C++ à l'aide de pas de cadres. Écrit mon propre réseau neuronal et GA code. Eric, merci de dire qu'il est tout à fait plausible. Habituellement, les gens ne croient pas dans les pouvoirs de la GA (même si les limites sont évidentes) jusqu'à ce qu'ils ont joué avec elle. GA est simple mais pas simpliste.
Pour les sceptiques, les réseaux de neurones ont été prouvé être capable de simuler n'importe quelle fonction de si ils ont plus d'une couche. GA est une manière assez simple de naviguer dans un espace de solution trouver un local et potentiellement minimum global. Combiner GA avec les réseaux de neurones et vous avez une assez bonne façon de trouver des fonctions qui permettent de trouver approximative des solutions à des problèmes génériques. Parce que nous sommes à l'aide de réseaux de neurones, alors nous sommes à l'optimisation de la fonction de certains intrants, ce n'est pas quelques entrées pour une fonction, comme d'autres le sont à l'aide de GA
Voici la démo de code pour la survie de l'exemple: http://www.mempko.com/darcs/neural/demos/eaters/
Les instructions:
- Installer darcs, libboost, liballegro, gcc, cmake, faire
darcs clone --lazy http://www.mempko.com/darcs/neural/
cd neural
cmake .
make
cd demos/eaters
./eaters