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
Merci beaucoup pour cette clarification, la question sur la suppression des doublons a reçu une réponse satisfaisante. Je joins le code du script démontrant la fonction originale et la fonction optimisée, qui démontre la réduction du nombre de passages dans les boucles. Dans mon commentaire actuel, je ne signale PAS de bogue dans la fonction, mais je suggère son optimisation, et mon objectif principal était de découvrir le principe de la suppression des doublons, ce à quoi j'ai reçu une réponse complète. Encore une fois, merci beaucoup pour la bibliothèque et pour la clarification de la fonction.
110 et 160, c'est trop pour 20 chromosomes.... Vous avez placé le compteur au mauvais endroit.
C'est le bon endroit :
OK. Essayez maintenant la même population, avec les mêmes chromosomes, mais dans cette séquence :
Qu'observe-t-on ?
à shurick:
En effet. Le nombre de vérifications d'unicité, avec tous les chromosomes différents, peut être calculé par la formule suivante
(PopulChromosCount^2-PopulChromosCount)/2Dans notre exemple, qui comporte 20 chromosomes (en supposant que tous les chromosomes sont différents), le nombre de vérifications serait le suivant :
(20*20-20)/2=190Ceci est confirmé par cette vérification :
Si les doublons sont détectés, il y aura encore moins de vérifications.
Nous vous remercions de votre participation active au projet!
Des modifications appropriées seront apportées à la bibliothèque. Bien que ces changements n'affectent pas les capacités de recherche de l'algorithme, ils rendront son travail plus rationnel.
Que regardons-nous ?
Bien que les changements n'affecteront en rien les capacités de recherche de l'algorithme
Tout à fait exact, la qualité de l'algorithme ne changera pas, bien qu'au départ j'en doutais, mais maintenant vous me l'avez prouvé, mais ces doutes ont permis de trouver une méthode d'optimisation :)
J'ai étudié l'article et j'ai trouvé une incohérence dans le code : la même formule est utilisée dans deux fonctions pour obtenir des valeurs de plage:
C'est-à-dire que l'on obtient des données en dehors des valeurs de deux gènes, ce qui est caractéristique d'une "mutation artificielle". S'agit-il d'un bogue ou existe-t-il une autre explication ?
Il me semble que pour la méthode de réplication, il est nécessaire de changer les signes :
Minimum = C1+((C2-C1)*ReplicationOffset) ;
Maximum = C2-((C2-C1)*ReplicationOffset) ;
J'ai étudié l'article et j'ai trouvé cette incohérence dans le code, deux fonctions utilisent la même formule pour obtenir des valeurs de plage:
C'est-à-dire que l'on obtient des données en dehors des valeurs de deux gènes, ce qui est caractéristique d'une "mutation artificielle". S'agit-il d'un bogue ou existe-t-il une autre explication ?
Il me semble que pour la méthode de réplication, il est nécessaire de changer les signes :
Minimum = C1+((C2-C1)*ReplicationOffset) ;
Maximum = C2-((C2-C1)*ReplicationOffset) ;
Il n'y a pas d'erreur ou d'incohérence. Tant dans la réplication que dans la mutation artificielle, les limites de l'apparition probable d'un nouveau gène (les sections de code que vous avez citées) sont définies de la même manière.
Mais dans le cas de la réplication, la zone de probabilité se situe à l'intérieur de ces limites, et dans le cas de la mutation artificielle, au-delà de ces limites.
La réplication sert à transférer des traits caractéristiques des gènes des deux parents (à l'intérieur des limites).
La mutation artificielle sert à générer de nouveaux gènes différents de ceux des parents (en dehors des limites).
Il n'y a pas d'erreur ou d'incohérence. Tant dans la réplication que dans la mutation artificielle, les limites de l'apparition probable d'un nouveau gène (les sections de code que vous avez citées) sont définies de la même manière.
Mais pour la réplication, la zone de probabilité se situe à l'intérieur de ces limites, et pour la mutation artificielle, au-delà de ces limites.
La réplication sert à transférer des traits caractéristiques des gènes des deux parents (à l'intérieur des limites).
La mutation artificielle sert à générer de nouveaux gènes différents de ceux des parents (en dehors des limites).
Au fait, c'est très agréable d'être le destructeur de l'un des plus célèbres mythes de trader liés à ZZ (la deuxième tâche de l'article). :)
Apparemment, je n'ai pas compris la formulation de la tâche. Ma déclaration :
Les points d'entrée pour un profit maximum avec la condition que le trade min. soit de N pips, sont situés sur les sommets du ZigZag avec la condition du genou min. N + Spread pips.
J'ai posté quelques fonctions de test intéressantes dans le fil de discussion du forum MQL4 "Test Multivariable Multiextremal Function", l'une d'entre elles est présentée dans l'article.
Si vous le souhaitez, vous pouvez essayer de trouver les extrema des fonctions proposées en utilisant d'autres algorithmes d'optimisation que l'AG et poster les résultats ici. Vous êtes les bienvenus. Ce sera intéressant pour tout le monde et pour moi en premier lieu.
Je me rends compte qu'il est très important d'évaluer la validité de l'ajustement. L'une des méthodes consiste à ajouter du bruit aux données originales.
Les codes sources des méthodes d'optimisation alternatives se trouvent ici(http://alglib.sources.ru/optimization/) et ici(http://ool.sourceforge.net/).
Il est évident que chaque algorithme d'optimisation est plus performant avec ses propres classes de fonctions cibles.
Quelles fonctions cibles utilisez-vous dans la pratique ?