private static void BenchmarkFitnessCall(
            TextWriter file,
            Func <IBitMutation <IBitIndividual> > mutationGenerator,
            long budget)
        {
            for (var n = 100; n <= 1000; n += 100)
            {
                for (var rounds = 0; rounds < 100; rounds++)
                {
                    var mutation   = CreateAlgo(mutationGenerator, n);
                    var individual = BitIndividual.Generate(2).Invoke(n);

                    var start = DateTime.Now;

                    for (var i = 0; i < budget; i++)
                    {
                        mutation.Mutate(0, individual);
                    }

                    var end = DateTime.Now;

                    file.WriteLine($"{n} {budget} {end - start}");
                }
            }
        }
        private static void BenchmarkTime(
            TextWriter file,
            Func <IBitMutation <IBitIndividual> > mutationGenerator,
            TimeSpan timeBudget)
        {
            for (var n = 100; n <= 1000; n += 100)
            {
                for (var rounds = 0; rounds < 100; rounds++)
                {
                    var mutation   = CreateAlgo(mutationGenerator, n);
                    var individual = BitIndividual.Generate(2).Invoke(n);

                    var      start = DateTime.Now;
                    TimeSpan runtime;

                    long mutations = 0;
                    do
                    {
                        mutation.Mutate(0, individual);
                        mutations++;
                        runtime = DateTime.Now - start;
                    } while (runtime < timeBudget);

                    file.WriteLine($"{n} {mutations} {runtime}");
                }
            }
        }
Exemplo n.º 3
0
 protected void NewAverageIndividualNotify(BitIndividual ind)
 {
     foreach (ISubscriber subscriber in subscribers)
     {
         subscriber.NewAverageIndividualNotification(ind);
     }
 }
Exemplo n.º 4
0
 public void NewAverageIndividualNotification(BitIndividual ind)
 {
     averageInds.Add(ind);
     averageIndsBackup.Add(ind);
 }
Exemplo n.º 5
0
 public void NewWorstIndividualNotification(BitIndividual ind)
 {
     worstInds.Add(ind);
     worstIndsBackup.Add(ind);
 }
Exemplo n.º 6
0
 public void NewBestIndividualNotification(BitIndividual ind)
 {
     bestInds.Add(ind);
     bestIndsBackup.Add(ind);
 }
Exemplo n.º 7
0
 public static IEvolutionaryAlgorithm <IBitIndividual, BitArray, bool> UsingRandomPopulation(
     this IEvolutionaryAlgorithm <IBitIndividual, BitArray, bool> algorithm,
     double mutationRate = 1) =>
 algorithm.UsingPopulation(BitIndividual.FromRandom(mutationRate));