lu4kedr

Evoluton Strategy

Dec 3rd, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.62 KB | None | 0 0
  1.  public void ES()
  2.         {
  3.             double sigma = 0.5;
  4.             double c = 0.817;
  5.             // loop na pocet generaci
  6.             for (int i = 0; i < _numOfGens; i++)
  7.             {
  8.                 // vytvoreni potomku
  9.                  List<Specimen> new_pop = new List<Specimen>();
  10.                 int numOfBetterOffsprings = 0;
  11.  
  12.                 foreach (var s in _population)
  13.                 {
  14.                     var news = s.Clone();
  15.                     for (int d = 0; d < news.Dimension; d++)
  16.                     {
  17.                         news.Data[d] += (float)MathNet.Numerics.Distributions.Normal.Sample(0, sigma);
  18.                     }
  19.                   // porovnani fitness a pridani + hlidani lepsich
  20.                     if(news.GetFitness()<s.GetFitness())
  21.                     {
  22.                         new_pop.Add(news);
  23.                         numOfBetterOffsprings++;
  24.                     }
  25.                     else
  26.                     {
  27.                         new_pop.Add(s);
  28.                     }
  29.                 }
  30.                 var div = (double)numOfBetterOffsprings / _population.Count;
  31.                 if (div < 1 / 5 || numOfBetterOffsprings==0)
  32.                 {
  33.                     sigma *= c;
  34.                 }
  35.                 if (div > 1 / 5)
  36.                 {
  37.                     sigma /= c;
  38.  
  39.                 }
  40.  
  41.                 var united = _population.Concat(new_pop);
  42.                 united = united.OrderBy(x => x.GetFitness());
  43.                 _population = united.Take(populationSize).ToList();
  44.                 Populations.Add(_population.ToList());
  45.             }
  46.         }
Advertisement
Add Comment
Please, Sign In to add comment