public void vibration_generation(double attenuation_rate) { vibrations.Clear(); foreach (var t in population) { vibrations.Add(new Vibration(t.position)); } double sum = 0.0; List <double> data = new List <double>(); data.Resize(population.Count); for (int i = 0; i < dimension; ++i) { for (int j = 0; j < population.Count; ++j) { data[j] = population[j].position.solution[i]; } sum += GlobalMembers.std_dev(data); } attenuation_base = sum / dimension; for (int i = 0; i < population.Count; ++i) { population[i].choose_vibration(vibrations, distances[i], attenuation_base * attenuation_rate); } }