Questions sur la POO dans MQL5 - page 94

 
Igor Makanu:

Je peux faire des bits significatifs à partir de int avec une solution "frontale", mais je ne peux pas faire une solution universelle... Je ne peux pas ! (((

Il est très probable que je n'ai pas expliqué comment et où je veux aller.

il y a 4 octets int / uint, et il y a mon jeu de données, que je veux décompresser dans l'optimiseur.

supposons que j'ai réussi à l'emballer de cette façon :

0-8 9-16 17-24 25-32
int_11 int_9 int_12

quels types j'ai besoin int_XXX, je n'ai pas encore estimé

mais je veux avoir une facilité d'utilisation sous la forme de ce code

en général, il fonctionne comme je le veux

//+------------------------------------------------------------------+
// value - значение
// pos - бит начала числа
// cnt_bits - общее количество занимаемых бит
//+------------------------------------------------------------------+
int BitsToInt(const uint value, const uint pos, const uint cnt_bits)
{
   uint mask_value = (0x7FFFFFFF >> (sizeof(uint) * 8 - cnt_bits)) << pos;
   uint mask_sign = 1 << (pos + cnt_bits - 1);
   int sign = (bool)(value & mask_sign) ? -1 : 1;
   return(sign * (int)((value & mask_value) >> pos));
}
//+------------------------------------------------------------------+
void OnStart()
{
   uint v = 0x7F << 12;
   Print(BitsToInt(v, 12, 8));   // 127
   v = 0xFF << 12;
   Print(BitsToInt(v, 12, 8));   // -127
}
//+------------------------------------------------------------------+

... Tant pis, si j'ai encore mal compté les bits ((()

 
Igor Makanu:

en général, il fonctionne aussi bien que je le voudrais.

... mauvais si les bits sont encore mal comptés (((

Question immodeste, quel est le but de la chasse aux bits ?

 
Alexandr Andreev:

Question immodeste, quel est le but de chasser les chauves-souris ?

a écrit dans le premier post de cette pièce

nous devons réduire le nombre de paramètres optimisables - non critique

et je veux appliquer le code de Gray à un nouveau paramètre optimisé "int", afin que l'AG de l'optimiseur ne converge pas aussi rapidement - Wiki

 
Igor Makanu:

en général, il fonctionne aussi bien que je le voudrais.

... mauvais si les bits sont encore mal comptés (((

Si c'est 5, les ints 32 bits ont rarement un sens, presque jamais (seulement comme compteurs de boucles et unités de taille, et c'est par habitude).

Et tout rentre dans le 64 sans décalage de bits .

D'ailleurs, même si vous avez un 4, vous devriez quand même intégrer des valeurs 64 bits, par exemple en double - c'est très demandé.

 
Maxim Kuznetsov:

Et 64 s'adaptera à tout sans décalage de bits ...

Pas du tout, les longitudes ne sont pas optimisées dans le testeur. Il y a quelques mois, j'ai demandé pourquoi - pas de réponse.

uint - Je pense qu'il y avait un problème aussi... il semble que la valeur maximale n'ait pas été autorisée à être utilisée pendant l'optimisation

donc seulement int et il (très probablement) ne fonctionnera pas correctement dans les nouvelles builds

 
Igor Makanu:

Pas du tout, les longs ne sont pas optimisés dans le testeur, je leur ai demandé il y a quelques mois - ils ne m'ont pas donné de réponse.

uint - Je pense qu'il y avait un problème aussi... il semble que la valeur maximale n'ait pas été autorisée à être utilisée pendant l'optimisation

donc seulement int et il (très probablement) ne fonctionnera pas dans les nouvelles constructions

il vous faudra plus d'un mois pour chevaucher une boucle vide avec la journalisation

Vous feriez mieux de créer votre propre format, où les premiers bits sont la taille, puis un enregistrement. Et vous devriez tout écrire dans un tableau d'octets.

Un tableau d'octets peut facilement être copié dans n'importe quel autre tableau.

 
Alexandr Andreev:

il faut plus d'un mois pour parcourir une boucle vide avec un long parcours

C'est ainsi, mais depuis longtemps je ne cours pas après un TS idéal - ce que l'optimiseur trouve, je l'écris dans la base de données, mais le problème est dans la convergence de GA autour d'un groupe de paramètres, donc j'ai décidé d'essayer de remonter le moral de GA avec une approche scientifique )))).


Alexandr Andreev:

Il est plus facile de créer son propre format, où les premiers bits sont la taille, puis un enregistrement. Et écrire tout dans un tableau d'octets.

Je dois tester, mais pour l'instant j'espère, que le code de Gray et mes manipulations avec le regroupement des paramètres optimisables en int aideront à résoudre le problème de convergence de l'AG.... nous verrons, tout n'est pas aussi rapide que nous le voudrions

 
Igor Makanu:

Pas du tout, les longs ne sont pas optimisés dans le testeur, je leur ai demandé il y a quelques mois - ils ne m'ont pas donné de réponse.

uint - Je pense qu'il y avait un problème aussi... Il semble que la valeur maximale n'ait pas été autorisée à être utilisée pendant l'optimisation.

donc seulement int et il (très probablement) ne fonctionnera pas correctement dans les nouvelles builds

avez-vous défini ce paramètre dans l'optimiseur ?

D'une part, vous pouvez définir le double, il a une mante plus de 32, mais vous pouvez être coincé avec des conversions double<->chaîne dans le profil

 
Maxim Kuznetsov:

Réglez-vous le paramètre de l'optimiseur comme ceci ?

pas de

j'ai plus de 10 paramètres optimisables, j'ai fixé les limites d'optimisation, tout fonctionne rapidement, mais GA peut tourner autour de 2 paramètres et c'est tout - inutile d'optimiser davantage

je dois soit grouper les paramètres et les exécuter par groupes, soit redémarrer l'optimisation et vider les caches.

J'aimerais faire une expérience et vérifier si Wiki a raison à propos de GA.

Les codes de Gray sont largement utilisés dans la théorie des algorithmes génétiques [3] pour coder les caractéristiques génétiques représentées par des entiers.

 
Igor Makanu:

pas de

J'ai plus de 10 paramètres optimisés, j'ai fixé des limites, tout fonctionne rapidement, mais GA peut rassembler environ 2 paramètres et aucune autre optimisation n'est nécessaire.

je dois soit grouper les paramètres et les exécuter par groupes, soit redémarrer l'optimisation et vider les caches.

J'aimerais faire une expérience et vérifier si Wiki a raison à propos de GA.

Les codes de Gray sont parfois utilisés dans les protocoles de transfert de données, juste parce que... En fait, ils ont été conçus pour eux :-)

GA est plutôt un "mot à la mode". Comment le code de Gray peut-il aider à la convergence ? Juste en théorie...

tu pourrais aussi bien mélanger au hasard