Campeonato de Otimização de Algoritmos. - página 40

 
Andrey Dik:
Obrigado.
Deixe-o participar em vez de mim, porque parece que eu não sou capaz de lidar com isso.
 
Реter Konow:
Deixe-o participar em vez de mim, porque parece que eu não sou capaz de fazer isso.
Acho que ele não tem mais chances do que você. Estou falando sério. Além disso, quanto mais participantes houver, mais perspectivas teremos.
 
Andrey Dik:
Acho que ele não tem mais chances do que você. Estou falando sério. Além disso, quanto mais participantes houver, mais perspectivas teremos.
Como você mesmo disse antes, eu tenho uma escalerose pior do que você. E eu não tenho imaginação suficiente para compreender a essência do problema. Não consigo me recompor na minha cabeça... Receio ter superestimado meus poderes.
 
Andrey Dik:

Determinado - em qualquer direção apartir da matriz. E quanto mais tempo não houver melhoria no pai, mais rápido a prole deve se espalhar para os lados.

Se ocorrer melhoria - ao contrário, a descendência aparece perto da mãe, ou seja, na direção -em direção à mãe.

Há sempre duas direções -de pai epara pai. Dependendo da dinâmica de mudança dos valores de FF, uma ou outra direção deve ser escolhida.

Mas para o autor do vídeo, as espécies sempre "andam" não muito longe dos pais, e as áreas inexploradas permanecem inexploradas.

É provável que o algoritmo converja muito rapidamente em funções contínuas e falhe em funções discretas complexas com picos acentuados. E mesmo as superfícies, a julgar pelo algoritmo de vídeo, é difícil.

Se alguém souber inglês a um nível decente para ter uma pequena conversa casual, por favor contate o autor, convide-o para o campeonato.

A propósito, alguém pode me dizer por que usei as palavras "de" e "para" em vez de usar uma direção específica no espaço?

E o que exatamente o fato de o espaço de busca ficar mais complicado mais rápido do que o aumento do número de parâmetros tem a ver com isso?

Se alguém responder estas perguntas corretamente, então a necessidade de operar no espaço multidimensional ficará clara, e qual seção específica da matemática (honestamente, nesta seção eu estou nadando, eu sou praticamente ignorante) seria muito útil no estudo das funções de muitas variáveis. Devo dizer imediatamente - em meu algoritmo pessoal, estes chips não se aplicam.

 

Fiz de mim mesmo um fotógrafo:

Bastante rápido para encontrar o máximo, mas depois apenas mutações, por precaução.

Para algumas das funções, foram revelados problemas. Ou melhor, eles eram, mas ficou claro com o que estavam relacionados. Atravessando apenas os bons com os bons, degenerando assim para o melhor indivíduo que estava no início da evolução. O movimento em direção ao máximo também está lá, mas não o suficiente. Não nesta animação, ela estará abaixo.

 

Aqui. Encontra-se muito rapidamente, mas com um deslocamento, depois desliza um pouco mais perto do centro, mas não até o final.

 
Dmitry Fedoseev:

Aqui. Muito rapidamente o encontra, mas com um deslocamento, depois desliza um pouco mais perto do centro, mas não até o fim.

Legal! Por que tudo é amarelo? - Não se pode ver a paisagem.

Aqui, por favor, pinte cada pixel de acordo com a altura da paisagem.

//——————————————————————————————————————————————————————————————————————————————
// 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, ótimo! Por que tudo é amarelo? - Não se pode ver a paisagem.
Eu era preguiçoso. Centavos, no máximo.
 
Dmitry Fedoseev:
Eu era muito preguiçoso. Maximo em centavos.

É uma parábola invertida?

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

 
Andrey Dik:

É uma parábola invertida?

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

No primeiro caso. O que há no segundo caso que não consigo lembrar)