Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graph 35+USB/75(+E)/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 :
AlexotHors ligneMembrePoints: 539 Défis: 18 Message
Planète Casio - Jeu Casio - Neural Bird - alexot - Calculatrices
Nombre de visites sur cette page : 6164
Score au progrank : 51
Note actuelle : 10/10 noté 2 fois
Vous devez être connecté(e) pour noter (inscription).
494 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
10Le programme a tourné pendant 4 jours continus. Au bout de 2 jours, l'oiseau passait tous les obstacles avec succès. Bravo pour la prouesse !Le 02.09.2018 à 21:05
10programme impressionant au vue des limitations du basic. (Suruq Game)Le 27.05.2018 à 20:51

Commentaires :

Pages: 1, 2, 3 | Suivante

DrakHors ligneRédacteurPoints: 1925 Défis: 40 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 !
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1243 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 gameHors ligneMembre de CreativeCalcPoints: 621 Défis: 20 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
AlexotHors ligneMembrePoints: 539 Défis: 18 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.
NinestarsHors ligneMembrePoints: 2462 Défis: 24 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
LephenixnoirEn ligneAdministrateurPoints: 24581 Défis: 170 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 stormEn ligneLabélisateurPoints: 11641 Défis: 176 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é
AlexotHors ligneMembrePoints: 539 Défis: 18 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 stormEn ligneLabélisateurPoints: 11641 Défis: 176 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.
AlexotHors ligneMembrePoints: 539 Défis: 18 Message
Posté le 28-05-2018 à 21:06 | #
Ok.

Pages: 1, 2, 3 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 182 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd