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

 
Andrey Dik:
¡Eso es genial! Los enfoques no convencionales son, si no la clave del éxito, al menos una buena base para ello. Entonces, ¿competirá con sus colegas en el campeonato?
Me interesaba resolver el problema propuesto.
Hace tiempo que terminé el jardín de infancia :)
 
Andrey Dik:

"¡No lo puedo creer!" (с)

Bueno, puedes, por supuesto, pegar el diccionario de Dahl u Ozhegov en el algoritmo y compararlo con palabras conocidas, pero entonces si el texto del problema no tiene ninguna palabra significativa (por ejemplo - un conjunto aleatorio de letras), entonces el algoritmo seguramente se "volverá loco".

Yo no haría declaraciones sin fundamento.

Para esta cadena en particular, mi algoritmo necesita 904 accesos al FF.

Para la misma longitud de cadena (49 caracteres) pero con cualquier otro texto (incluso con un conjunto de letras completamente sin sentido y al azar) la cantidad de llamadas FF será ligeramente diferente.

En otras palabras, las propias letras determinan el número exacto de accesos.

La variación es de alrededor de ( +/- 40) llamadas dependiendo del conjunto particular de letras.

Al cambiar la longitud de la cadena, el número de aciertos aumenta, pero la proporción sigue siendo la misma. Es decir, para cada personaje, una media de 15 a 20 llamadas al FF.

Por lo tanto, se puede estimar que para una cadena de 100 caracteres se necesitan unas 2000 llamadas. Y así sucesivamente...

La precisión de la cadena será siempre del 100%.

Así es como funciona mi algoritmo.

 
Event:
Me interesaba resolver el problema propuesto.
Lucha - Terminé el jardín de infancia hace mucho tiempo :)
puede comprobar

//+------------------------------------------------------------------+
//|                                                  OptimFFtext.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

// тестовая фитнес функция чемпионата, не известна участникам
#import "FFtext.ex5"
int    GetParamCount();
void   GetParamProperties(double &min,double &max,double &step);
double FF(double &array[]);
int    GetCountRunsFF();
void   PrintCodeToFile(double &param[]);
#import

const int TextLen= 49;
const double EPS = 1 e-6;
double param[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Nparam=GetParamCount();
   ArrayResize(param,Nparam);
   ArrayInitialize(param,0.0);
   double temp[];
   ArrayResize(temp,Nparam);
   for(int n=0; n<Nparam;++n)
     {
      ArrayCopy(temp,param);
      double ffParam=FF(param);
      for(int k=1; k<TextLen;++k)
        {
         temp[n]=(double)k;
         double ffTemp=FF(temp);
         if(ffTemp<ffParam-EPS)
           {
            break;
           }
         if(ffTemp>ffParam+EPS)
           {
            ArrayCopy(param,temp);
            break;
           }
        }
     }
   Print("Количество вызовов FF = "+IntegerToString(GetCountRunsFF()));
   PrintCodeToFile(param);
  }
 
Event:
Puedes comprobarlo.

Lo he comprobado: tu algoritmo está unas cuantas llamadas por delante del mío con 49 caracteres, pero cuando aumentas el número de caracteres, el mío está claramente por delante del tuyo por un par de cientos.

Intenta poner esto: "Raramente, un trabajo académico combina, estos, dos, tipos". Tú recibes 1113 llamadas, yo 891.

Creo que si se sigue aumentando el número de caracteres en la línea, la diferencia sólo aumentará.

Lo comprobaré mañana.

 
Реter Konow:

Lo he comprobado: tu algoritmo está unas cuantas llamadas por delante del mío con 49 caracteres, pero cuando aumentas el número de caracteres, el mío está claramente por delante del tuyo por un par de cientos.

Intenta poner esto: "Rara vez, un artículo académico combina, estos, dos, tipos". Tú recibes 1113 llamadas, yo 891.

Creo que si se aumenta el número de caracteres de la cadena, la diferencia sólo aumentará.

Lo comprobaré mañana.

No he afirmado que el mío sea mejor que el tuyo). (¡Felicidades!
 
Реter Konow:
Evento:

Ambos utilizan el conocimiento del FF del problema de optimización. Es decir, estás resolviendo el problema "de frente".

Pero el objetivo del campeonato es optimizar una FF desconocida. ¿Qué harán tus algoritmos si resulta que el problema tiene paso 0, o el rango resulta estar en la línea de números enteros? ¿O si la dependencia del valor de FF de los parámetros no es lineal?

Conociendo el tiempo medio por llamada de FF se puede calcular con precisión el tiempo que se tardará en resolver el problema en tal caso y es muy posible que se tarde más que el tiempo de existencia del universo.

Sus algoritmos no son universales y están ajustados a una tarea concreta; son buenos a su manera, pero no son adecuados ni siquiera para optimizar Asesores Expertos sencillos, por no hablar de la TS sobre redes neuronales e inteligencia artificial.

Piensa en la universalidad, piensa en lo que harías si no conocieras el contenido de la tarea con texto, de lo contrario la tarea del 11 de julio será un hueso demasiado duro de roer para tus algoritmos.

ZZYEvento, efectivamente, lo he comprobado, si el texto consiste en las primeras letras de una tecla como "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", el número de llamadas de FF es ridículamente bajo, y es totalmente comprensible el porqué.

ZZZY.Rettag,Evento, eres bueno de todos modos - has mostrado algo de ingenio.

 
Andrey Dik:

Ambos están utilizando el conocimiento del FF del problema de optimización. Es decir, estás resolviendo el problema "de frente".

Pero el objetivo del problema es optimizar un FF desconocido. ¿Qué harán tus algoritmos si resulta que el problema tiene paso 0, o el rango resulta estar en la línea de números enteros? ¿O si la dependencia del valor de FF de los parámetros no es lineal?

Conociendo el tiempo medio por llamada de FF se puede calcular con precisión el tiempo que se tardará en resolver el problema en tal caso y es muy posible que se tarde más que el tiempo de existencia del universo.

Sus algoritmos no son universales y están ajustados a una tarea concreta; son buenos a su manera, pero no son adecuados ni siquiera para optimizar Asesores Expertos sencillos, por no hablar de la TS sobre redes neuronales e inteligencia artificial.

Piensa en la universalidad, piensa en lo que harías si no conocieras el contenido de la tarea con texto, de lo contrario la tarea del 11 de julio será un hueso demasiado duro de roer para tus algoritmos.

No me agobies ni me des por sentado. No estoy involucrado en sus juegos.
Incluso me da miedo llamar a mi versión un algoritmo. Sólo unas líneas :)

P.D. Y no me trates con tanta condescendencia. Incluso derramé una lágrima ;)
 
Andrey Dik:

Ambos están utilizando el conocimiento del FF del problema de optimización. Es decir, estás resolviendo el problema "de frente".


Así que lo hice, resolví el problema de frente, pero dejé algo de potencial para el desarrollo de algoritmos. Creo que tengo la base para resolver problemas de texto similares y se puede mejorar aún más.

Para el 11 de julio, tendré lista la versión final de un problema textual similar de mayor complejidad.

 
Event:
No intentes agitarme y tomarme el pelo. No participo en sus juegos.
Me da miedo incluso llamarlo algoritmo. Sólo unas líneas :)

P.D. Y no me trates con tanta condescendencia. Incluso derramé una lágrima ;)

Vamos, ¿cómo podría? Tampoco.

No soy condescendiente, soy justo (en este caso concreto, al menos), además de maleducado y grosero. Si no quieres hacerlo, no participes, ¡no voy a arrastrar a nadie por las orejas!

;)

ZS. Puedo hacer malabares con 3 objetos de un par de kilos, y puedo ponerme de pie sobre mi cabeza, pero si vengo a mostrar mis habilidades en un circo, me dirán los artistas lo mismo que te he dicho.

 
Реter Konow:

Es cierto que resolví el problema de frente, pero dejé algo de potencial para desarrollar el algoritmo. Creo que tengo la base para resolver estos problemas de texto y puedo mejorarlos aún más.

Para el 11 de julio, tendré lista la versión final de la solución a problemas de texto similares de mayor complejidad.

Entonces prepárate para el problema del campeonato, ya has hecho el "calentamiento" con "excelente".