Championnat d'optimisation des algorithmes. - page 40

 
Andrey Dik:
Merci.
Qu'il participe à la place de moi, parce que je ne semble pas être capable de faire face.
 
Реter Konow:
Laissez-le participer à ma place, car je ne semble pas pouvoir le faire.
Je ne pense pas qu'il ait plus de chance que toi. Je le pense vraiment. En outre, plus il y a de participants, plus nous aurons de perspectives.
 
Andrey Dik:
Je ne pense pas qu'il ait plus de chance que toi. Je le pense vraiment. En outre, plus il y a de participants, plus nous aurons de perspectives.
Comme tu l'as dit toi-même tout à l'heure, j'ai un scalerosis pire que le tien. Et je n'ai pas assez d'imagination pour saisir l'essence du problème. Je n'arrive pas à faire le point dans ma tête... J'ai peur d'avoir surestimé mes pouvoirs.
 
Andrey Dik:

Déterminé - dans l'une ou l'autre directionà partir du parent. Et plus longtemps il n'y a pas d'amélioration chez le parent, plus vite la progéniture doit se disperser sur les côtés.

Si l'amélioration se produit - au contraire, la progéniture apparaît proche du parent, c'est-à-dire la direction -vers le parent.

Il y a toujours deux directions -du parent etvers le parent. En fonction de la dynamique de changement des valeurs du FF, il faut choisir l'une ou l'autre direction.

Mais pour l'auteur de la vidéo, les espèces "traînent" toujours non loin du parent, et les zones inexplorées restent inexplorées.

L'algorithme est susceptible de converger très rapidement sur des fonctions continues et d'échouer sur des fonctions discrètes complexes avec des pics aigus. Et même les surfaces, juger par algorithme vidéo est difficile.

Si quelqu'un connaît l'anglais à un degré décent pour une conversation informelle, veuillez contacter l'auteur et l'inviter au champ.

Au fait, quelqu'un peut-il me dire pourquoi j'ai utilisé les mots "de" et "à" au lieu d'utiliser une direction spécifique dans l'espace ?

Et qu'est-ce que le fait que l'espace de recherche se complique plus vite que l'augmentation du nombre de paramètres a à voir avec cela ?

Si quelqu'un répond correctement à ces questions, alors la nécessité d'opérer dans un espace multidimensionnel deviendra claire, et quelle section particulière des mathématiques (honnêtement, dans cette section je nage, je suis pratiquement ignorant) serait très utile dans l'étude des fonctions de nombreuses variables. Je dois dire tout de suite - dans mon algorithme personnel, ces puces ne s'appliquent pas.

 

Je me suis fabriqué un appareil photo :

Assez rapide pour trouver le maximum, mais ensuite juste des mutations au cas où.

Pour certaines de ces fonctions, des problèmes ont été mis en évidence. Ou plutôt, ils l'étaient, mais on a compris à quoi ils étaient liés. Croiser seulement les bons avec les bons, dégénérant ainsi au meilleur individu qui était au début de l'évolution. Le mouvement vers le maximum est là aussi, mais pas assez. Pas sur cette animation, il y en aura en dessous.

 

Ici. Trouve très rapidement, mais avec un décalage, puis glisse un peu plus vers le centre, mais pas jusqu'au bout.

 
Dmitry Fedoseev:

Ici. Très vite, il le trouve, mais avec un décalage, puis il glisse un peu plus vers le centre, mais pas complètement.

Joli ! Pourquoi tout est jaune ? - On ne peut pas voir le paysage.

Ici, veuillez colorier chaque pixel en fonction de la hauteur du paysage.

//——————————————————————————————————————————————————————————————————————————————
// 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, génial ! Pourquoi tout est jaune ? - On ne peut pas voir le paysage.
J'étais paresseux. Des centimes tout au plus.
 
Dmitry Fedoseev:
J'étais trop paresseux. Je n'ai plus de centimes.

Est-ce une parabole inversée ?

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

 
Andrey Dik:

Est-ce une parabole inversée ?

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

Dans le premier cas. Je ne me souviens pas de ce qu'il y a dans le deuxième cas).