private EnvironmentOf <Cycle> GetEnvironment() { Cycle foreFather = new Cycle(fitnessFunction.VerticiesCount); for (int i = 0; i < foreFather.Verticies.Length; i++) { foreFather.Verticies[i] = i; } StartingInfo <Cycle> startingInfo = new StartingInfo <Cycle>(fitnessFunction.Evaluate, foreFather); startingInfo.NumberOfRunningThreads = Environment.ProcessorCount; startingInfo.MutationRate = 0.10; startingInfo.NewBestCreture = NewBestFound; startingInfo.SizeOfPopulation = 10_000; startingInfo.NumberOfSurvivals = 1_000; Random rnd = new Random(42); //todo remove seed EnvironmentOf <Cycle> environment = new EnvironmentOf <Cycle>(startingInfo); environment.AddMutationProvider(() => new SwichingMutation(environment, rnd.Next())); environment.AddMutationProvider(() => new SwichStrings(environment, rnd.Next())); environment.DisposedCreatures.SetStoreCreatures(); return(environment); }
public void RunEvolution() { EnvironmentOf <Cycle> environment = GetEnvironment(); while (true) { environment.RunEvolution(1000); } }
public SwichStrings(EnvironmentOf <Cycle> environment, int rndSeed) { myEnvironment = environment; rnd = new Random(rndSeed); }
public SwichingMutation(EnvironmentOf <Cycle> environment, int seed) { myEnvironment = environment; rnd = new Random(seed); }