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

 
Andrey Dik:
Gracias.
Que participe él en vez de yo, porque parece que no soy capaz de afrontarlo.
 
Реter Konow:
Que participe él en vez de yo, porque parece que no soy capaz de hacerlo.
No creo que tenga más posibilidades que tú. Lo digo en serio. Además, cuantos más participantes haya, más perspectivas obtendremos.
 
Andrey Dik:
No creo que tenga más posibilidades que tú. Lo digo en serio. Además, cuantos más participantes haya, más perspectivas obtendremos.
Como tú mismo has dicho antes, tengo peor escalerosis que tú. Y no tengo suficiente imaginación para captar la esencia del problema. No puedo juntarlo en mi cabeza... Me temo que he sobrestimado mis poderes.
 
Andrey Dik:

Determinado - en cualquier direccióndesde el padre. Y cuanto más tiempo no haya mejora en el progenitor, más rápido deberá dispersarse la descendencia hacia los lados.

Si se produce la mejora - por el contrario, la descendencia aparece cerca del padre, es decir, la dirección -hacia el padre.

Siempre hay dos direcciones:desde el padre yhacia el padre. Dependiendo de la dinámica de cambio de los valores de FF se debe elegir una u otra dirección.

Pero para el autor del vídeo las especies siempre "pasan el rato" no muy lejos del progenitor, y las zonas inexploradas quedan sin explorar.

Es probable que el algoritmo converja muy rápidamente en funciones continuas y falle en las discretas complejas con picos agudos. E incluso las superficies, juzgar por el algoritmo de vídeo es difícil.

Si alguien sabe inglés en un grado decente para una charla casual, por favor, póngase en contacto con el autor, e invítelo a la campeona.

Por cierto, ¿alguien puede decirme por qué he utilizado las palabras "desde" y "hasta" en lugar de utilizar una dirección específica en el espacio?

Y cuál es la relación exacta con el hecho de que el espacio de búsqueda se vuelve más complejo más rápido que el aumento del número de parámetros.

Si alguien responde correctamente a estas preguntas, entonces quedará clara la necesidad de operar en el espacio multidimensional, y qué apartado concreto de las matemáticas (sinceramente, en este apartado estoy nadando, soy prácticamente un ignorante) vendría muy bien para el estudio de las funciones de muchas variables. Debo decir de inmediato - en mi algoritmo personal estas fichas no se aplican.

 

Me he hecho con un creador de imágenes:

Bastante rápido para encontrar el máximo, pero luego sólo mutaciones por si acaso.

Para algunas de las funciones, se revelaron problemas. O más bien lo eran, pero quedó claro con qué estaban relacionados. Cruzando sólo a los buenos con los buenos, degenerando así al mejor individuo que había al principio de la evolución. El movimiento hacia el máximo también está ahí, pero no es suficiente. No en esta animación, habrá abajo.

 

Aquí. Encuentra muy rápidamente, pero con un desplazamiento, luego se desliza un poco más hacia el centro, pero no hasta el final.

 
Dmitry Fedoseev:

Aquí. Muy rápidamente lo encuentra, pero con un desplazamiento, luego se desliza un poco más hacia el centro, pero no hasta el final.

¡Bien! ¿Por qué todo es amarillo? - No puedes ver el paisaje.

Aquí, colorea cada píxel según la altura del paisaje.

//——————————————————————————————————————————————————————————————————————————————
// The translation of numerical value from range in color value of range of RGB
string GetCLRfromDouble (double in,       // input value
                         double min,      // minimum of input value
                         double max,      // maximum of input value
                         int    startCLR, // minimum of a color scale 0... 100
                         int    endCLR)   // maximum of a color scale 0... 100
{ 
  int sCLR = 0; 
  int eCLR = 0; 
  
  if(startCLR > endCLR) 
  {
    sCLR = endCLR; 
    eCLR = startCLR;
  }
  else 
  {
    sCLR = startCLR; 
    eCLR = endCLR;
  }
  
  if(sCLR < 0) 
    sCLR = 0; 
  
  if(eCLR > 100) 
    eCLR = 0; 
  
  if(in < min) 
    in = min; 
  if(in > max) 
    in = max; 
  
  string clr = ""; 
  double tempCLR = Scale (in, min, max, sCLR, eCLR, false); 
  
  //255,0,0 -> 255,255,0
  if(0.0 <= tempCLR && tempCLR <= 20.0) 
  {
    clr = (string)255 + ","; 
    clr += string ((int)Scale (tempCLR, 0.0, 20.0, 0.0, 255, false)) + ","; 
    clr += string (0); 
    return (clr);
  }
  
  //255,255,0 -> 0,255,0
  if(20.0 < tempCLR && tempCLR <= 40.0) 
  {
    clr = string ((int)Scale (tempCLR, 20.0, 40.0, 0.0, 255, true)) + ","; 
    clr += string (255) + ","; 
    clr += string (0); 
    return (clr);
  }
  
  //0,255,0 -> 0,255,255
  if(40.0 < tempCLR && tempCLR <= 60.0) 
  {
    clr = string (0) + ","; 
    clr += string (255) + ","; 
    clr += string ((int)Scale (tempCLR, 40.0, 60.0, 0.0, 255, false)); 
    return (clr);
  }
  
  //0,255,255 -> 0,0,255
  if(60.0 < tempCLR && tempCLR <= 80.0) 
  {
    clr = string (0) + ","; 
    clr += string ((int)Scale (tempCLR, 60.0, 80.0, 0.0, 255, true)) + ","; 
    clr += string (255); 
    return (clr);
  }
  
  //0,0,255 -> 255,0,255
  if(80.0 < tempCLR && tempCLR <= 100.0) 
  {
    clr = string ((int)Scale (tempCLR, 80.0, 100.0, 0.0, 255, false)) + ","; 
    clr += string (0) + ","; 
    clr += string (255); 
    return (clr);
  }
  
  return ("0,0,0");
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double Scale (double In, double InMIN, double InMAX, double OutMIN, double OutMAX, bool Revers = false) 
{ 
  if(OutMIN == OutMAX) 
    return (OutMIN); 
  if(InMIN == InMAX) 
    return ((OutMIN + OutMAX) / 2.0); 
  else 
  {
    if(Revers) 
    {
      if(In < InMIN) 
        return (OutMAX); 
      if(In > InMAX) 
        return (OutMIN); 
      return (((InMAX - In) * (OutMAX - OutMIN) / (InMAX - InMIN)) + OutMIN);
    }
    else 
    {
      if(In < InMIN) 
        return (OutMIN); 
      if(In > InMAX) 
        return (OutMAX); 
      return (((In - InMIN) * (OutMAX - OutMIN) / (InMAX - InMIN)) + OutMIN);
    }
  }
}
//——————————————————————————————————————————————————————————————————————————————
 
Andrey Dik:
¡Oh, genial! ¿Por qué todo es amarillo? - No puedes ver el paisaje.
Me dio pereza. Céntimos como mucho.
 
Dmitry Fedoseev:
Era demasiado perezoso. Se ha agotado la cantidad de centavos.

¿Es una parábola invertida?

z=-(x^2+y^2)

 
Andrey Dik:

¿Es una parábola invertida?

z=-(x^2+y^2)

En el primer caso. Lo que hay en el segundo caso no lo recuerdo)