Beispiel #1
0
    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);
        }
    }