Discussion de l'article "Algorithmes Génétiques - C'est Facile !" - page 16
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
Andrew, une dernière question.
Peut-on dire que les valeurs de ces variables conviennent à la plupart des problèmes d'optimisation ?
Oui.
Les paramètres sont pris avec une certaine "réserve" afin d'augmenter la facilité de recherche (couverture du champ de recherche). Pour obtenir des valeurs plus précises (mais la probabilité de trouver un extremum global est réduite), vous pouvez réduire les paramètres de mutation et le coefficient de déplacement des limites de l'intervalle.
Andrew, une dernière question.
Peut-on dire que de telles valeurs de ces variables conviennent à la plupart des problèmes d'optimisation ? Comme on peut le lire dans certaines sources "... 90% des problèmes peuvent être résolus à l'aide d'un perceptron conventionnel".
ZAGASTE GA :)
L'algorithme est unitaire, il peut être facilement intégré dans un Expert Advisor, l'exécuter dans un testeur et organiser des compétitions entre GAs boo-gah-gah.
Merveilleux.
Andrei, tu sais, je suis surpris de mon impudence, mais je dois exprimer quelques "critiques" ))
La fonction ServiceFunction() est appelée à trois endroits dans le code de l'UGA. Mais cela ne sert à rien. Bien sûr, vous pouvez voir la dynamique à l'écran, mais elle est si rapide que vous ne pouvez pas la voir et l'évaluer de toute façon. Vous pouvez supprimer son appel dans le corps de UGA(). Il suffit de l'appeler une fois après avoir appelé UGA().
"... et le violoniste n'est pas nécessaire, il ne fait que consommer du carburant supplémentaire" (kin dza dza (c))
J'ai fait une expérience. J'ai fait une somme de trois sinusoïdes avec des "fréquences" 47, 81, 187. J'ai obtenu ceci
J'ai ensuite lancé la recherche par énumération directe (3 cycles, 2 imbriqués), mais avec interruption lorsque la valeur du coefficient de corrélation = 1,0. Sans cette condition, toutes ces absurdités auraient pris beaucoup plus de temps. Mais de cette manière, cela a été fait en 375 secondes (un peu plus de 6 minutes).
L'AG l'a fait en 2 secondes. ))
Mais il y a une question. Voici le résultat.
Les deux derniers chiffres : 2747 - nombre d'appels à FF ; 506 - nombre d'"états" lorsque le coefficient de corrélation r était égal à 1,0. Il s'avère que l'algorithme aurait pu fonctionner encore plus rapidement, car r ne peut pas être supérieur à 1,0 et après la première atteinte de r=1, la tâche est considérée comme terminée. Mais l'algorithme a atteint l'état r=1,0 506 fois.
Voici les paramètres
Et cette FF.
Question : existe-t-il un moyen d'expliquer à l'algorithme que (parfois) il est possible (nécessaire) de terminer plus tôt ? Ou ne devrions-nous pas le faire catégoriquement et attendre que la convergence soit atteinte ?
Cela fait longtemps que j'aimerais connaître la réponse à la question "combien". Cette fois, j'ai pris un élan et j'y ai placé 50 sinusoïdes. La plage de valeurs est de 1 à 500. Donc, si je ne me trompe pas, la recherche directe donne 500^50, soit 8,881784197001212523233890533447266e+134 itérations (si ma calculatrice ne m'a pas menti). Il est clair qu'il n'est pas possible de convertir en secondes (minutes, heures, jours, années). Seuls les descendants éloignés verraient le résultat. L'AG l'a fait en 1 heure. 20 minutes. C'est impressionnant. En outre, il s'est avéré que le coefficient de corrélation de la somme de 50 sinusoïdes avec l'élan est de 0,5275. Pourquoi"en plus" ? Parce que je n'ai jamais eu l'occasion de vérifier ce point auparavant. Et dans certains cas, cela suggère des réflexions.....
Je n'ai pas fait une fixation sur les sinusoïdes, c'est juste que je connais tout ça sur le bout des doigts. D'ailleurs, puisque le but est d'obtenir une similarité maximale des signaux continus, le résultat est cette similarité même, c'est-à-dire que le résultat est sans ambiguïté, d'ailleurs facilement vérifiable.
Andrey, merci beaucoup pour votre produit. J'aimerais lire un autre de vos articles dans un avenir proche. GA avec sélection d'élite. ))
...
Question - Existe-t-il un moyen d'expliquer à l'algorithme qu'il est (parfois) possible de terminer plus tôt. Ou qu'il ne faut pas le faire catégoriquement et qu'il faut attendre que la convergence soit atteinte ?
C'est possible. Et même nécessaire. Si vous savez quelque chose sur la fonction étudiée (comme dans votre tâche : FF<=1), vous devriez utiliser activement cette information pour éviter les calculs inutiles et réduire ainsi le temps de recherche.
Dans cette implémentation, il n'y a pas de leviers pour contrôler l'algorithme de l'extérieur, mais il suffit d'ajouter une fonction pour contrôler le drapeau d'arrêt forcé.
Dans la prochaine génération de l'algorithme, au sujet de laquelle un article est en cours de préparation, il y aura beaucoup plus de possibilités de contrôler l'algorithme de l'extérieur (il fonctionne généralement sur initiation et sous contrôle de l'extérieur, et non pas comme c'est le cas actuellement - FF est lancé par l'algorithme lui-même, il n'y a donc aucune possibilité de l'utiliser dans les hiboux auto-optimisants sans modification).
....
Andrew, je vous remercie encore une fois pour votre produit. J'aimerais que vous me créditiez un autre article dans un avenir proche. GA avec sélection d'élite. ))
Merci pour les remerciements. :)
Il y aura une suite, c'est certain.
Et bonne chance pour trouver l'optimum ! Dans la vie, dans le travail, dans l... Tout.