Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 35+USB/75/85/95 (SD)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400
Graph 90+E

Retour aux miniatures
Tri avancé
Liste des programmes
Nom Date
Neural Bird
Musée de Babel
Avast
Pac-Man
Tron
Pour 100
S-SEMPAI
Space tourist
Taptap Game
STR-Edit
Magie
Machine à sous
Finger
Up Up Up
Mini-jeux
SpeedSNK
Potion magique
R Russe
Graphique Casio
Memoire vive
Pages: 1,2,3 >>

¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graphs 75/85/95 (SD) >> Divers >> Neural Bird
Neural Bird
Version : 1.0 Taille : 2268 octets Ajouté le : 2018-05-27 20:22 Modifié le : 2018-05-27 21:29
Auteur et posteur :
Alexot
Hors ligne
Membre
Points: 239
Défis: 11
Message
Planète Casio - Jeu Casio - Neural Bird - alexot - Calculatrices
Nombre de visites sur cette page : 696
Score au progrank : 17
Note actuelle : 10/10 noté 1 fois

Vous devez être inscrit(e) et avoir 20 points ou plus pour noter.
44 téléchargements | Soumettre un test


Description :

Dans Neural Bird, regardez des réseaux de neurones artificiels évoluer grâce à un algorithme génétique pour apprendre à jouer à flappy bird.
Le réseau de neurones est composé de trois entrées (la distance horizontale jusqu'au prochain tuyau, la distance verticale entre l'oiseau et le trou, et la vitesse verticale de l'oiseau), deux neurones dans la couche cachée, et un neurone dans la couche de sortie. La fonction d'activaton utilisée pour chaque neurone est la fonction sigmoide.
A chaque génération, les scores des 10 membres de la population sont évalués, puis les deux moins bons sont éliminés et remplacés par un "mélange" du meilleur et d'un autre au hasard(par "mélange", je veux dire que je prend certains poids d'un réseau de neurones et d'autres d'un autre réseau pour en former un nouveau). Et enfin, je fais "muter" certains réseaux en modifiant aléatoirement les valeurs de certains poids.
Le graphique en bas à droite montre les moyennes des scores de chaque génération.
Le programme utilise toutes les variables de A à Z, la liste 1(que vous pouvez modifier/supprimer), et les listes 10 à 13(celles-ci sauvegardent les données du programme : 10: Le meilleur réseau de neurones,11: les scores de la génération actuelle et le meilleur score,12: tous les poids des 10 réseaux de neurones de la population, 13: le nombre de générations et les moyennes des scores à chaque générations).
Le programme à lancer est NRLBIRD, et si vous voulez voir jouer le meilleur réseau de neurones que votre calculatrice a fait évoluer, ajoutez "List 10->List 1" au début du programme NRLBIRD1(et n'oubliez pas de retirer ce bout de code si vous voulez continuer l'évolution).
J'ai mis le meilleur que j'ai fait évoluer dans le programme NRLBEST, il suffit de le lancer, puis de lancer le programme NRLBIRD1 pour le voir jouer.
Ça peux prendre assez longtemps pour arriver à un bon résultat, ainsi, je conseille d'overclocker la calculatrice pour aller plus rapidement.


Note sur 10 Commentaire Date de notation
10programme impressionant au vue des limitations du basic. (Suruq Game)Le 27.05.2018 à 20:51

Commentaires :

Pages: 1, 2, 3 | Suivante

Drak
Hors ligne
Rédacteur
Points: 1267
Défis: 38
Message
Posté le 27-05-2018 à 20:26 | #
Ce programme a l'air impressionnant ! Je l'essaierai surement lorsque j'aurais remis la main sur ma calculatrice. En tous cas, c'est la première fois que je vois un programme de ce genre sur PC !
Nemhardy
Hors ligne
Grand maître des Traits d'Esprit
Points: 1206
Défis: 54
Message
Posté le 27-05-2018 à 20:41 | #
Chouette de voir ça ici, surtout en Basic, je suis curieux de voir les performances que ça peut donner, et testerai dès que j'en aurai l'occasion, voir comment ça se présente !

Si j'ai bien compris la topologie de ton réseau de neurone reste fixe au cours du temps (je veux dire qu'il a toujours la même forme, seuls les coefficients évoluent), c'est bien ça ?
Je sais que sur des vidéos que l'on voit parfois d'IA apprenant à jouer à des jeux vidéo (je pense par exemple à cette vidéo sur Mario, assez connue), les algos utilisés pour faire évoluer le réseau sont parfois de type NEAT, c'est à dire qu'en plus des divers coefficients, la structure même du réseau évolue ; c'est peut être assez délicat à imaginer en Basic, mais ça peut être intéressant je trouve de pouvoir comparer les performances obtenues (et le temps pour les obtenir, le basic offrant une belle contrainte à ce niveau là !), si tu avais prévu à continuer à travailler sur ce programme.
Suruq game
Hors ligne
Membre de CreativeCalc
Points: 575
Défis: 18
Message
Posté le 27-05-2018 à 20:50 | #
j'ai testé et c'est fou de pouvoir faire un réseau neuronal en seulement une centaine de ligne

sinon au niveau perf...ben c'est du basic mais en overclockant ça va
j'en suis a 50 génération et je fais 2 de score en moyenne donc ça a l'air de fonctionner

un grand bravo

EDIT : le score augmente exponentiellement
Alexot
Hors ligne
Membre
Points: 239
Défis: 11
Message
Posté le 27-05-2018 à 21:22 | #
Merci pour les retours si rapides
Nemhardy, oui seuls les poids des connections évoluent. En effet ça pourrait être intéressant d'implémenter NEAT, par contre ça risque d'être difficile. Je vais y réfléchir.
D'ailleurs j'ai oublié de dire dans la description que je fais des mutations au hasard après avoir enlevé les moins bons. Je rajoute ça tout de suite.
Aussi le score utilisé pour déterminer les meilleurs et les moins bons n'est pas le nombre de tuyaux passés mais est en fonction de la distance verticale au trou et du nombre de tuyaux passés, ainsi, entre deux oiseaux étant morts au premier tuyau, le plus proche du trou sera la meilleur.
Ninestars
Hors ligne
Membre
Points: 1932
Défis: 22
Message
Posté le 27-05-2018 à 22:28 | #
Waw génial ! Belle prouesse. Je vais regarder ça demain, j'adore les réseaux de neurone, c'est trop bien
Lephenixnoir
Hors ligne
Administrateur
Points: 11624
Défis: 136
Message
Posté le 28-05-2018 à 09:05 | #
Très impressionnant ! Je l'ai fait jouer pendant environ 60 générations et le score a augmenté de façon consistante malgré des hauts et des bas... irréguliers comme sur l'exemple.

Le plus génial, c'est la quantité de code dont tu as eu besoin pour faire ça : quasiment rien. Respect !
Dark storm
Hors ligne
Administrateur
Points: 10319
Défis: 174
Message
Posté le 28-05-2018 à 20:29 | #
Ça me fait penser que j'en avait fait un pour jouer au Worms, mais il était un peu lent x)
J'avais 5 entrées (position (x, y) de la cible, position (x, y, length) d'un obstacle vertical) et deux sorties (theta, power), et deux couches cachées de 4 neurones.
Après quelques heures de calcul, je commençais à avoir des résultats, mais rien de bien intéressant pour être posté
Alexot
Hors ligne
Membre
Points: 239
Défis: 11
Message
Posté le 28-05-2018 à 20:47 | #
Wow c'est cool. Tu l'avais entrainé comment? Après, ce qui pourrait être intéressant serait d'utiliser un réseau de neurones préentrainé sur ordinateur.
Dark storm
Hors ligne
Administrateur
Points: 10319
Défis: 174
Message
Posté le 28-05-2018 à 20:54 | #
Au début, par un algo génétique (ce que tu fais ici). Mais c'était très lent et pas hyper efficace vu que j'ai 5×5 + 5×4 + 3×4 = 57 poids à ajuster.
Du coup j'ai fini par l'entrainer semi-automatiquement, couche par couche en remontant. Une sorte de backpropagation manuellement conduite et ajustée. Pas non plus très efficace, mais super intéressant.
Alexot
Hors ligne
Membre
Points: 239
Défis: 11
Message
Posté le 28-05-2018 à 21:06 | #
Ok.

Pages: 1, 2, 3 | Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 27 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd