-
Quel algorithme ?
Bonjour à tous,
Je suis entrain de réaliser un petit programme pour m’entrainer mais voila,
je ne sais pas trop quel algorithme utiliser ni comment :
Alors le but (dans un premier temps) c'est d'imaginer un organisme simple qui rencontre un autre organisme, 2 choix possible :
-Le manger
-Fuir.
-(plus tard : reproduction...)
Ces actions dépendrons à priori de conditions simple tel que la taille respective et sa réserve en énergie.
Je ne veux pas faire un programme bateau de type : if mySize > hisSize => eatHim() ....
Je souhaite plutôt passer par des algorithme génétique ou autre permettant au programme d'apprendre et évoluer suivant les conditions rencontrées.
J'ai pensé aux arbre aléatoire mais je maitrise encore très mal le sujet et je ne vois pas bien comment l'appliquer ni si cela convienne.
Un conseil ?
Merci
Ps : Mes petit organismes devront par la suite apprendre à se déplacer, évolueront en tailles/formes, apprendrons pleins de choses rigolote ect...
-
Bonjour,
Généralement, les algorithmes "évolutifs", reposent sur un principe d'optimisation. L'optimisation étant de dire, que pour une fonction déterminant un score, le score doit être amélioré à chaque itération. C'est cet aspect qui pousse l'algorithme à s'améliorer.
Bref, vous devez trouver un moyen de calculer un score, qui orientera votre algorithme vers ce qui est correct ou non (ce qui est bon ou non). Par exemple, cela peut être la taille de la population. Plus la population est grande, mieux c'est.
Mais cela peut aussi être le fait de manger le plus "d'ennemies".
Ensuite, il faudra trouver les paramètres à changer. Par exemple, dans un cas très simple, vous pouvez jouer sur une probabilité. Au tout début (itération 1), votre programme aura une probabilité de 50 % de manger, ou 50 % de fuir. Ensuite, suivant le score, vous allez modifier d'une façon à déterminer (cela peut être aléatoire), une nouvelle probabilité (par exemple 40%, 60%). Si vous avez un meilleur score après une telle itération, c'est que cette technique est "meilleure".
Pour un algorithme génétique, l'idée est la même, juste que la méthode de modification du comportement est particulière (croisement + 5 % mutation). Bref, à vous de chercher (il y a plein de ressources dessus) et de voir comment implémenter pour votre cas.
-
Bonjour LittleWhite,
Merci pour ta réponse,
Il y a bien des éléments déterministe de type : je mange, je récupère de l'énergie, je suis mangé, je perd des points.
Il y aura plus d'un organisme, donc la taille de la population est également un critère de sélection et chaque organisme fait son propre apprentissage (quid de la puissance de calcul/data...)
Le Random Forest nécessite un grand nombre d'apprentissage, hors mes organismes feront des rencontres ponctuelles (et non 1millions par second).
De plus, je vois mal encore comment se fait sont implantation (dois-je créer les nœuds et la fonction mathématique ?) bref faut que je me document mais je souhaitais avoir un avis pour savoir si ce type d’algorithme est adapté (arbre décisionnel => foret aléatoire...).
Je vais encore me documenté, si tu as une idée pour orienter mes recherches ?
Merci ;)
-
:salut:
C'est bien de balancer l'idée de forêt aléatoire… mais que veux-tu qu'elle résolve, comme problème ? Qu'aurais-tu comme entrées et comme sorties ?
Ton problème semble plutôt rentrer dans la case de l'apprentissage par renforcement : tu définis ce que ton/tes agents doivent atteindre comme but (avoir une espèce qui survit des millénaires ?), de manière numérique, puis tu leur donnes une récompense chaque fois qu'ils s'approchent de cet objectif.
-
Le problème que tu proposes peut se rapprocher naturellement d'un algorithme génétique.
Tu dois en plus des rencontres que tu proposes implémenter des rencontres amoureuses.
Lors de ces rencontres, tu croises les gènes des parents pour créer un certain nombre d'enfants qui iront à leur tour s'égayer dans la nature.
Les moins adaptés à l'environnement vont mourir et les mieux adaptés vont se reproduire.
Le tout va tendre vers un équilibre.
Tu dois cependant veiller à éviter la surpopulation sinon ça va ramer. Pour cela tu peux fixer une limite maximale que la population ne pourra pas dépasser.
Si la limite est atteinte, tu interdis le processus de reproduction jusqu'à ce que la population diminue.