Bonjour tout le monde.
Je pense qu'il était temps que je vous présente ce projet,
il se nomme : Les Bibites.
Le concept de base est simple,
les bibites sont des créatures qui peuvent manger des pastilles de nourriture pour obtenir de l’énergie.
Ils utilisent ensuite l’énergie pour vivre, bouger, réfléchir, pondre des œufs, et transmettre leur gènes.
Ce qui est particulièrement intéressant, c'est que leur comportement n'est PAS programmé.
N'importe qu'elle action, même le fait d'avancer, doit d’abord être évoluée.
Donc, comment est-ce que ça marche?
C'est simple. Ils commencent avec une quantité fixe de sens et d'actions possibles.
Au début, il n'y a aucune connections qui les relient,
ils ne feront donc rien.
Cependant, par pur hasard, ils pourraient naître avec mutation aléatoire.
Comme par exemple: avancer.
S'ils sont chanceux, ils réussiront à toucher une pastille et à la manger.
Ils auront ainsi assez d'énergie pour pondre quelques œufs et transmettre leur gènes.
Avec assez de temps, grâce à la sélection naturelle,
des comportements plus complexes devraient apparaître.
Comme chercher la nourriture,
attraper les pastilles pour plus tard,
ou même Développer de la mémoire.
Ils possèdent aussi des gènes de bases, qui n'influencent pas directement leur comportement, mais leur traits physiques.
Comme
la taille,
la vitesse,
la couleur,
les facteurs de mutation (à quel point les enfants seront différents des parents),
et de nombreux autres.
La plupart des gènes ont d'autres impacts.
Comme leur coût de métabolisme (l'énergie nécessaire pour rester vivant à chaque seconde)
qui est calculé à partir de leur taille et de leur vitesse.
Leur gènes sont tous conservé dans une table de nombres.
Quand une mutation se produit, chacun des gènes à une
chance d'être modifié, affectant la bibite et ses descendants.
Leur cerveau est un peu plus complexe que leur gènes.
Au début, leur actions étaient programmées.
J'avais codé leur comportement pour se diriger vers la nourriture,
vouloir se reproduire, pondre des œufs, etc.
À un certain point, j'ai fait un cours en ligne sur l'apprentissage machine (intelligence artificielle).
Après en avoir appris sur les réseaux de neurones,
j'ai trouvé que ce serait un bonne idée de l'appliquer ici.
Après un peu de recherche, j'ai trouvé l'algorithme évolutionnaire NEAT,
pour Evolution Neuronale à Topologie Croissante.
Même le nom semblait adapté.
C'est un algorithme évolutionnaire spécifiquement adapté à la sélection génétique.
J'ai inspiré mon algorithme, d'une variante, appelée rt-NEAT, rt signifiant "temps réel".
Cela signifie que, contrairement à la plupart des algorithmes génétiques,
la simulation roule continuellement et qu'il
n'y a pas d'étape d'évaluation où on calcule la performance de chacun afin de
décider qui survivra et transmettra ses gènes, ou qui mourra.
Au lieu de cela, tout est laissé à une "vraie" sélection naturelle.
Leur performance est simplement représentée par leur capacité à produire une lignée.
Sous cet algorithme, comme dit précédemment,
Ils apparaissent initialement avec un cerveaux vide de connections,
différentes choses peuvent ensuite se produire par mutation.
Ils peuvent :
développer un synapse qui connectera deux neurones (exemple : avancer quand ils ont faim),
modifier la force d'une connection, la rendant plus forte ou plus faible,
désactiver un synapse, rendant la connection nulle,
évoluer un nouveau neurone à partir d'un synapse déjà existant,
modifier la fonction d'un neurone (Exemple: devenir un neurone de mémoire).
Et finalement, de supprimer un synapse ou un neurone,
supprimant aussi n'importe quelle structure flottante.
Pour calculer leur comportement, nous avons seulement
à propager la valeur de chaque connection vers l'avant.
Même avec des modules aussi simples,
il est facile de voir que des comportements complexes peuvent facilement émerger.
Comme mon ordi n'est pas si performant et assez vieux,
je dois les réguler un peu. Sinon, ils deviennent trop
bon et nombreux et la simulation ralentit drastiquement.
Un bon nombre où tout semble stable est
autour de 200 bibite dans la simulation.
Le fait est qu'ils deviennent progressivement plus
performants. Si je continues de les nourrir avec la même quantité de nourriture,
ils continueront de se multiplier exponentiellement
Pour prévenir leur multiplication infinie,
je peux réduire la quantité de nourriture
proportionnellement au nombre de bibites à plus de 200
Cela mènerait à l'établissement d'un équilibre,
mais qui ne situera pas nécessairement à 200,
et pourrait tout de même être trop demandant.
Pour s'assurer de toujours avoir ~200 bibites,
il faut progressivement réduire la quantité de nourriture,
aussi longtemps qu'ils sont trop nombreux.
Ainsi, la quantité de pastille est continuellement
ajustée afin de garantir la stabilité.
C'est un peu comme tricher,
mais j'ai quelques idées sur comment arranger cela dans un futur proche.
Donc. Quels sont mes prochains plans ?
En premier lieu, de nombreux commentaires me font
remarquer que ce qui se passe n'est pas assez évident.
Nous devrions être capable d'interpreter beaucoup plus
depuis la visualisation, au lieu de ne rien comprendre.
Nombreux ont suggéré que leur couleurs représentent
des caractéristiques au lieu d'être indépendants.
Exemple: que la couleur bleu représente la vitesse.
Mais j'aime beaucoup le fait que la couleur
est un témoin de leur dérive génétique et qu'elle peut
être utilisée pour différentier les espèces distinctes.
Donner moi votre opinion dans les commentaires.
Une des choses qui n'est pas du tout claire, c'est qu'ils
ont la capacité de produire et de sentir des phéromones.
Mon idée était qu'ils pourraient ainsi communiquer.
Cependant, ce phénomène est invisible pour l'instant.
Il n'y a donc pas de moyen de le voir en regardant la simulation.
Pour l'instant, cela marche comme
une tour de transmission.
Quand une bibite produit des phéromones,
ce sera détecté par toutes les bibites aux environs.
Je voudrait remplacer cela par une piste qu'ils laisseraient derrière eux,
ou peut-être en plus de ce qui se produit présentement.
Mais ce qui est sur, c'est que ce devra être apparent,
probablement sous forme de nuages ou de particules.
Encore une fois, partager votre moi opinion dans les
commentaires si vous avez une idée ou êtes plus inspiré que je le suis.
Un autre chose que je voudrait ajouter serait
la prédation.
Avoir certaines bibites qui pourraient en manger
d'autres créerait un écosystème plus intéressant.
Cela forcerait aussi la simulation à atteindre un
équilibre entre les prédateurs, les proies, et la nourriture,
ce qui aiderait avec mon problème initial de population.
Je pensais implémenter cela à travers un gradient,
où une valeur représenterait leur position sur une
échelle déterminant si ils sont carnivore ou herbivores.
Cela voudrait dire qu'ils pourraient aussi être omnivores,
et avoir accès à la viande comme au pastilles.
Il faudrait donc évidement qu'ils soient moins
efficaces à consommer chaque sources
Pour aider avec ça, ce serait une bonne idée de
retravailler le système d'énergie pour
qu'il soit plus réaliste et stable.
Pour l'instant, je dois continuellement générer de la
nourriture pour que la simulation fonctionne.
Si j'arrête, aucune n’apparaîtra d'elle même
et toutes les bibites mourraient de faim.
La principale raison que cela se produit est que
tout se produit à perte, l’énergie n'est pas conservée.
Nous pouvons régler cela avec l'aide du dicton d'Antoine Lavoisier (1743-1794) :
Rien ne se pert, rien ne se crée, tout n'est que transformation.
J'ai fait un diagramme pour illustrer mon idée,
mais je l'expliquerai en détail dans la prochaine vidéo.
Je partagerais des mise à jours sur le développement
et le progrès du projet, si vous voulez être tenu au
courant vous pouvez vous abonner (toujours apprécié),
mais je ne peut pas promettre des vidéos régulières,
comme c'est juste un hobby.
Comme toujours je suis ouvert à n'importe quelle idée,
je vous promet que je suis du genre à lire 100% des commentaires.
Merci d'avoir écouté et regardé cette vidéo.
