Campeonato de optimización de algoritmos. - página 4

 
Dmitry Fedoseev:
Fíjate en el método universal expuesto anteriormente. Y si se trata de una llamada única a través de un intermediario, eso requeriría una adaptación muy seria de la función de búsqueda, eso es exactamente lo que nadie hará.
No exageres. Hay una solución. Piensa en cómo puedes deshacerte de la llamada interna FF de tu biblioteca de algoritmos.
 
Andrey Dik:
No exageres. Hay una solución. Piensa en cómo puedes deshacerte de la llamada interna FF de tu biblioteca de algoritmos.
Ni siquiera deberías pensar en ello, no hay razón para malgastar esfuerzos en ello.
 
Dmitry Fedoseev:

...

No hay otras opciones. A menos que uno pueda pasar un puntero a una función, si es posible (pero hasta ahora nadie ha sugerido dónde buscar en la ayuda). El miembro debe tener una capacidad completa para llamar a una función ff.

Se mencionó aquí con un ejemplo:Nueva versión de la plataforma MetaTrader 5 build 1325: Comercio con cobertura y pruebas por ticks reales >>>

Ejemplo:

MQL5: Para facilitar la organización de los modelos de eventos, se ha añadido soporte para punteros a funciones.

Para declarar un puntero a una función, defina el tipo "puntero a función", por ejemplo:

typedef int (*TFunc)(int,int);

TFunc es ahora un tipo y puedes declarar una variable puntero a función:

TFunc func_ptr;

Puedes almacenar la dirección de una función en la variable func_ptr para poder llamarla posteriormente:

int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x)       { return(~x);  }

func_ptr=sub;
Print(func_ptr(10,5));

func_ptr=add;
Print(func_ptr(10,5));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print(func_ptr(10));    // ошибка: должно быть два параметра

Los punteros a las funciones se pueden almacenar y pasar como parámetro. No se puede obtener un puntero a un método no estático de una clase.

 

Aquí está mi método de la clase, por ejemplo:

      void Evolution(){ 
         

         for(int c=0;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

¿Cómo podemos hacerlo? Y lo más importante, por qué pensar en ello cuando en realidad nunca es necesario. El campeonato de algoritmos de optimización se convierte en el campeonato de adaptación de la función para trabajar a través del gio.

Una función puede contar cuántas veces ha sido llamada. Si un concursante hace una importación, el número puede escribirse en el archivo y ponerse a cero antes de ejecutarlo.

Lo mejor es utilizar una clase, entonces la cantidad sólo estará disponible. Aquí se descarta el engaño.

 
Dmitry Fedoseev:
Ni siquiera deberías pensar en ello, no hay razón para malgastar esfuerzos en ello.

BIEN. No hay problema. A continuación, hay dos opciones para el campeonato para operar los algoritmos:

1. Con llamar a FF desde dentro del algoritmo (después de todo, el algoritmo no sabrá qué es FF dentro de una biblia cerrada con FF)

2. sin llamar al FF desde el algoritmo, simplemente pasando el resultado al algoritmo.

Supongo que estas dos opciones pueden cubrir todas las posibles variaciones en el uso de los algoritmos de optimización. Hay que conocer a los participantes, no todo el mundo tiene un alto nivel de conocimientos de programación (yo no soy un profesional, por ejemplo, me llevó varios meses ver el algoritmo en partes para la universalidad))))

 

Gracias.

No es más fácil que con una clase. Incluso diría que es más fácil con una clase.

 
Andrey Dik:

DE ACUERDO. No hay problemas. A continuación, hay dos opciones para el campeonato para operar los algoritmos:

1. Con llamar a FF desde dentro del algoritmo (después de todo, el algoritmo no sabrá qué es FF dentro de una biblia cerrada con FF)

2. sin llamar al FF desde el algoritmo, simplemente pasando el resultado al algoritmo.

Supongo que estas dos opciones pueden cubrir todas las posibles variaciones en el uso de los algoritmos de optimización. Hay que conocer a los participantes, no todo el mundo tiene un alto nivel de conocimientos de programación (yo no soy un profesional, por ejemplo, me llevó varios meses ver el algoritmo en partes para la universalidad))))

Si tienes tiempo extra, eres bienvenido. Sólo en. 2 no tendrá demanda.
 
Dmitry Fedoseev:
Si tienes tiempo extra, eres bienvenido. Sólo en. 2 no tendrá demanda.
Bueno, eso no nos corresponde a nosotros juzgarlo. Tú tienes la opción 1 y yo la 2. Y quién sabe lo que harán los demás participantes. ¿Y qué hora es? - El script de ejemplo anterior fue escrito en 5 minutos, vamos a llegar a las 2 opciones establecidas, supongo.
 
Andrey Dik:
Bueno, no se nos permite juzgar eso. Tú tienes la opción 1 y yo la 2. Y quién sabe cómo lo harán los demás participantes. ¿Y qué hora es? - ejemplo de un script escrito arriba en 5 minutos, así que llegaremos a las 2 opciones establecidas, supongo.
No se me ocurre nada para adivinar cómo podría ser la opción 2? No es natural.
 
Dmitry Fedoseev:
No se me ocurre nada que permita adivinar cómo podría ocurrir la variante 2. No es natural.

Un ejemplo sencillo. El algoritmo de optimización está colgado en un gráfico en alguna parte. El Asesor Experto se optimiza en el probador incorporado mediante una búsqueda completa. Así que puede utilizar su propio algoritmo de optimización en lugar del habitual.

Otro ejemplo. El Asesor Experto trabaja en el gráfico y las operaciones. Guarda los resultados de la operación después de algún tiempo al algoritmo (puede estar dentro o fuera del Asesor Experto) junto con sus parámetros y recibe los nuevos parámetros de vuelta y luego continúa el comercio (en su caso tendríamos que ejecutar un histórico, mientras que en mi caso podemos utilizar la optimización "en vivo").

Y así sucesivamente. Es decir, en estos ejemplos el algoritmo es completamente independiente de la tarea.

He aplicado deliberadamente estos ejemplos al comercio. Somos comerciantes.