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}"); } } }
protected void NewAverageIndividualNotify(BitIndividual ind) { foreach (ISubscriber subscriber in subscribers) { subscriber.NewAverageIndividualNotification(ind); } }
public void NewAverageIndividualNotification(BitIndividual ind) { averageInds.Add(ind); averageIndsBackup.Add(ind); }
public void NewWorstIndividualNotification(BitIndividual ind) { worstInds.Add(ind); worstIndsBackup.Add(ind); }
public void NewBestIndividualNotification(BitIndividual ind) { bestInds.Add(ind); bestIndsBackup.Add(ind); }
public static IEvolutionaryAlgorithm <IBitIndividual, BitArray, bool> UsingRandomPopulation( this IEvolutionaryAlgorithm <IBitIndividual, BitArray, bool> algorithm, double mutationRate = 1) => algorithm.UsingPopulation(BitIndividual.FromRandom(mutationRate));