Discussion de l'article "Algorithmes Génétiques - C'est Facile !" - page 9
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je suggère que la taille de la population soit calculée :
Merci beaucoup pour cet article ! Sans lui, je n'aurais jamais appris ce que sont les méthodes génétiques :)
Mais j'ai une question ! Lorsque nous vérifions les chromosomes de la base de données - en cas de correspondance - une unité sera soustraite de l'index du chromosome de la base de données. Pourquoi ? Et que se passe-t-il si l'index est nul ?
Où est-ce que je me trompe ?
Je suggère que la taille de la population soit calculée :
Je ne contesterai pas la compétence de la source citée, mais je ne suis pas d'accord.
La faisabilité de l'utilisation de l'AG dans les problèmes d'optimisation réside dans la réduction du nombre d'exécutions FF nécessaires pour déterminer l'optimum par rapport à la recherche directe.
Si nous suivons la recommandation
ChromosomeCount=GeneCount*11;le problème avec 1000 arguments nécessitera une population de 11000 individus ! Et il s'agit de 11 000 exécutions de FF à une seule époque ! Vous pouvez tout aussi bien utiliser la génération aléatoire de gènes et le résultat ne sera pas beaucoup moins bon pour trouver l'optimum. La source donnée fait le "pari" que dans une grande population, il y aura suffisamment de matériel génétique pour faire évoluer la population vers l'amélioration à chaque époque. J'essaie d'obtenir le même résultat, mais en jouant sur les probabilités avec les opérateurs génétiques sans augmenter le nombre total d'exécutions FF.
Merci beaucoup pour cet article ! Sans lui, je n'aurais jamais appris ce que sont les méthodes génétiques :)
Mais j'ai une question ! Lorsque nous vérifions les chromosomes de la base de données - en cas de correspondance - une unité sera soustraite de l'index du chromosome de la base de données. Pourquoi ? Et que se passe-t-il si l'index est nul ?
Où est-ce que je me trompe ?
La base de données n'est vérifiée que s'il y a au moins un chromosome dans la base de données. Vous n'avez pas cité toute la section du code de recherche de la base de données.
Par conséquent, le cas où il n'y a pas de chromosomes dans la base de données mais où le sillon est vérifié est impossible.
La vérification de la base de données n'est effectuée que lorsqu'il y a au moins un chromosome dans la base de données. Vous n'avez pas indiqué la section complète du code pour la recherche par base.
Par conséquent, le cas où il n'y a pas de chromosomes dans la base de données, mais où la vérification du sillon est effectuée est impossible.
Merci pour cette réponse si rapide ! Je ne voulais pas dire exactement ce que vous voulez dire !
1) Supposons qu'il y ait effectivement un chromosome dans la base de données (ChrCountInHistory = 1 - c'est-à-dire que la dimension du tableau est égale à un) - alors son index dans la base de données est zéro ! (ChrCountInHistory est égal à zéro par défaut - l'indice d'un élément du tableau est égal à zéro).
Et nous soustrayons un à cet indice :
en outre, la recherche commence à partir de Ch1=0.
2) On compare avec HistoryHromosomes[Ge][Ch1 ], et on affecte HistoryHromosomes[0][Ch1-1].
Vous avez raison, merci.
C'est ainsi qu'il faut procéder :
Vous avez raison, merci.
C'est la voie à suivre :
Hmm.
Maintenant"Array out of range" sur HistoryHromosomes[0][Ch1], bien que tout semble correct...
joo:
Vous avez raison, merci.
Il n'y a pas de quoi ! L'essentiel est que cela fonctionne encore mieux maintenant qu'avant :)
joo:
Hmm.
Maintenant "Array out of range" sur HistoryHromosomes[0][Ch1], bien que tout semble correct...
Il est difficile de dire pourquoi - nous avons des codes différents à analyser. Il s'agit peut-être de la variable "position" - son analogue dans l'article est "chromos". J'ai regardé le code de l'article probablement 10 fois - je n'ai pas pu comprendre où se trouve le bug :( Je vérifierai plus tard les exemples de l'article - peut-être que quelque chose deviendra plus clair.
P.S. : il est justifié d'utiliser une banque de mémoire si une variable est composée de ~150 valeurs. Et qu'il y a 100000 individus dans l'historique. Peut-être que dans ce cas, il serait plus rapide de calculer que de tout vérifier (rechercher) ? Vous n'avez pas vérifié?
P.S. : il est justifié d'utiliser une banque de mémoire si une variable comporte ~150 valeurs. Et qu'il y a 100000 individus dans l'historique. Peut-être que dans ce cas, il serait plus rapide de compter que de tout vérifier (re-vérifier) ? Vous n'avez pas vérifié?
Tout dépend du temps nécessaire pour calculer le FF. Si le FF n'est qu'une fonction mathématique, la banque n'est pas raisonnable. Mais si le FF utilise des historiques (apprentissage par neurones, etc.) et d'autres tâches à forte intensité de ressources, alors la banque est nécessaire et peut réduire de manière significative le temps d'optimisation.
Cela dépend également de la précision des gènes. Plus les gènes sont "grossiers", plus les répétitions sont fréquentes, et plus il est raisonnable d'utiliser une banque de chromosomes.
....
:)
Pourtant, il n'y a pas d'erreur, vous m'avez beaucoup embrouillé. Ici, j'ai fait un script de test, essayez-le, il deviendra plus clair.
Ici, bien que le chromosome soit comparé à la position de Ch1, mais sur la boucle supérieure il est assigné +1, donc je soustrais -1 après.
Je suis d'accord, c'est un peu tordu, ça pourrait être mieux fait.
Voici un script pour le vérifier :