
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
D'une certaine façon...
D'une certaine façon...
Merci ! On voit tout de suite la main du maître ! Je vais l'essayer demain pour voir ce qui en ressort.
D'une certaine façon...
J'ai commencé à essayer le code, j'ai créé un exemple artificiel - j'ai rempli le tableau.
Je l'ai :
C'est-à-dire que nous avons reçu une variante, mais nous en attendons une autre.
Est-il possible d'apprendre à l'algorithme à le trouver aussi ?
J'ai commencé à essayer le code, j'ai créé un exemple artificiel - j'ai rempli le tableau.
Je l'ai :
En d'autres termes, nous avons obtenu une variante, mais nous en attendons une autre.
L'algorithme peut-il apprendre à le trouver aussi ?
Et la variante "0-1 3-6 7-9" n'est pas meilleure que la variante "0 - 0-1 2-5 7-9" - les deux vont de 0 à 1 et ont 2 sauts de longueur 1 chacun.
Deux options apparaissent dans ce cas :
1 - faire la même chose, mais à partir de la fin de la série de sauts.
2 - cherchez tout de suite non pas le segment le plus proche, mais avec une tolérance. Mais dans ce cas, il y en aura encore plus s'il y a beaucoup de données et beaucoup de séquences d'amarrage.
Cependant, après la variante 1, vous voudrez commencer à construire des chaînes à partir de toutes les positions de départ possibles. C'est correct, mais la quantité de travail pour l'algorithme augmente considérablement.
Oui ! Il est nécessaire de commencer la construction des variantes à partir de chacun des segments de l'ensemble initial et de poursuivre la construction jusqu'au début et à la fin.
Et l'option "0-1 3-6 7-9" n'est pas meilleure que l'option "0 - 0-1 2-5 7-9" - les deux vont de 0 à 1 et ont 2 sauts de longueur 1 chacun.
Dans ce cas, ils sont égaux, je suis d'accord, mais ils sont différents et selon les termes du problème, nous devrons estimer la somme de leurs scores, et jusqu'à ce que nous construisions une ligne, nous ne connaîtrons pas le score combiné de tous les segments.
Cependant, après l'option 1, il y aura un désir de commencer à construire des chaînes de caractères à partir de toutes les positions de départ possibles. C'est correct, mais la quantité de travail pour l'algorithme augmente considérablement.
Oui ! Il est nécessaire de commencer la construction des variantes à partir de chacun des segments de l'ensemble initial et de poursuivre la construction jusqu'au début et à la fin.
Cela me semble également être la stratégie la plus correcte ! Cependant, je pense qu'il peut y avoir des variantes en double.
Pouvez-vous nous aider en écrivant du code ?
Puisque chaque variante stocke maintenant les segments dans deux tableaux, pour plus de commodité, ils peuvent être combinés en un seul tableau en utilisant la méthodeCombine().
Je n'ai pas trié les doublons du tableau, je les ai seulement marqués. Puisque maintenant chaque variante stocke les segments dans deux tableaux, je peux les combiner en un seul tableau en utilisant la méthodeCombine() pour que ce soit plus pratique.
Dmitry, merci pour le nouvel algorithme !
Oui, il y a effectivement beaucoup de copies.
Si je comprends bien, ils ne peuvent pas être comptés. Je n'ai pas réussi à attendre la combinaison de 1000 éléments - mon netbook a commencé à manquer de mémoire :(
Et est-il possible de ne pas utiliser toutes les combinaisons lors de l'ajout d'un segment, mais seulement un certain nombre de possibles dans l'étape actuelle, disons les 10 meilleures ?
Dmitry, merci pour le nouvel algorithme !
Oui, il y a effectivement beaucoup de copies.
Si je comprends bien, vous ne pouvez pas les compter. Je n'ai pas pu attendre la combinaison de 1000 éléments - mon netbook a commencé à manquer de mémoire :(
Est-il possible de ne pas utiliser toutes les combinaisons lors de l'ajout d'un segment, mais seulement un certain nombre de combinaisons possibles dans l'étape actuelle, disons les 10 meilleures ?
Pour savoir qu'ils sont les meilleurs, vous devez les comparer aux autres, c'est-à-dire que vous devez d'abord les obtenir tous. Une autre chose est d'optimiser d'une manière ou d'une autre l'algorithme, mais je n'ai pas pour objectif de consacrer ma vie à cet algorithme).
On peut décider du critère de suffisance et obtenir d'abord toutes les options, en partant d'un seul segment, choisi au hasard, et ainsi de suite, jusqu'à ce qu'une option satisfaisante apparaisse.
Et la deuxième option peut être accélérée - pour mettre à l'échelle le tableau avec des variantes, non pas un élément à la fois, mais plusieurs dizaines d'éléments à la fois, et à la fin pour le découper.
Pour savoir qu'ils sont les meilleurs, vous devez les comparer aux autres, c'est-à-dire que vous devez d'abord les obtenir tous. Une autre chose est d'optimiser l'algorithme d'une manière ou d'une autre, mais je n'ai pas l'objectif de consacrer ma vie à cet algorithme).
Je parle d'un seul segment, disons qu'il a un coefficient pour évaluer sa qualité, puis après chaque itération nous nous ramifions, par exemple, seulement sur les 10 premiers de ces coefficients.
Peut-être décider du critère de suffisance et obtenir d'abord toutes les variantes, en partant d'un seul segment, choisi au hasard et ainsi de suite, jusqu'à ce qu'une variante satisfaisante apparaisse.
Malheureusement, la "suffisance" est difficile à estimer ici - il est nécessaire de connaître une norme, puis à partir de celle-ci il est possible de définir une tolérance, et je n'ai pas de norme.
Et la deuxième option peut être accélérée - pour mettre à l'échelle le tableau avec des options non pas un élément à la fois, mais plusieurs dizaines d'éléments, et à la fin de celui-ci pour l'aligner.
Je ne suis pas tout à fait sûr de ce que vous voulez dire par parallélisme en utilisant OpenCL ?
1. Je parle d'un seul segment, disons qu'il a un coefficient pour évaluer sa qualité, puis après chaque itération nous passons, par exemple, uniquement aux 10 premiers de ces coefficients.
2. Malheureusement, la "suffisance" est difficile à estimer ici - il faut connaître le point de référence, puis déterminer la tolérance à partir de celui-ci, et je n'ai pas de point de référence.
3. je ne suis pas tout à fait sûr de ce que vous voulez dire par parallélisme en utilisant OpenCL ?
1. où se trouve ce coefficient ?
2. qu'en est-il du point 1 ?
3. Non, c'est plus simple. Ok, je vais essayer de l'accélérer demain.