Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void ES()
- {
- double sigma = 0.5;
- double c = 0.817;
- // loop na pocet generaci
- for (int i = 0; i < _numOfGens; i++)
- {
- // vytvoreni potomku
- List<Specimen> new_pop = new List<Specimen>();
- int numOfBetterOffsprings = 0;
- foreach (var s in _population)
- {
- var news = s.Clone();
- for (int d = 0; d < news.Dimension; d++)
- {
- news.Data[d] += (float)MathNet.Numerics.Distributions.Normal.Sample(0, sigma);
- }
- // porovnani fitness a pridani + hlidani lepsich
- if(news.GetFitness()<s.GetFitness())
- {
- new_pop.Add(news);
- numOfBetterOffsprings++;
- }
- else
- {
- new_pop.Add(s);
- }
- }
- var div = (double)numOfBetterOffsprings / _population.Count;
- if (div < 1 / 5 || numOfBetterOffsprings==0)
- {
- sigma *= c;
- }
- if (div > 1 / 5)
- {
- sigma /= c;
- }
- var united = _population.Concat(new_pop);
- united = united.OrderBy(x => x.GetFitness());
- _population = united.Take(populationSize).ToList();
- Populations.Add(_population.ToList());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment