/// <summary> /// Configuration GA. /// </summary> /// <param name="problemConfig">Problem represention</param> /// <returns>GA</returns> public static IEVA[] SetGA(IProblemConfig[] problemConfig, bool parlelization) { Console.WriteLine("Custom Genetic algorithm."); var termination = ParameterSetter.SetTermination(problemConfig[0]); var crossover = ParameterSetter.SetXover(problemConfig[0]); var xoverProb = ParameterSetter.SetFloat("Xover Probability", 0, 1); var mutation = ParameterSetter.SetMutation(problemConfig[0]); var mutationProb = ParameterSetter.SetFloat("Mutation Probability", 0, 1); var selection = ParameterSetter.SetSelection(problemConfig[0]); var elitizmus = ParameterSetter.SetElite(problemConfig[0]); var executor = problemConfig[0].CreateExecutor(); var popSize = ParameterSetter.SetPositiveIntParameter("Pop size", 2); IEVA[] evas = new IEVA[problemConfig.Length]; int i = 0; foreach (var config in problemConfig) { // creates population with curr. popSize var population = new Population(popSize, config.CreateIndividual, config.CreateEmptyIndividual); // new operators var fitness = config.CreateFitness(); evas[i++] = new GeneticAlgorithm(population, fitness, selection, crossover, mutation, elitizmus, termination, executor, mutationProb, xoverProb); } return(evas); }
/// <summary> /// Notmal EA /// </summary> /// <param name="problemConfigName">Problem represention.</param> /// <param name="inputFileName">Input image</param> /// <param name="logRate">logger rate</param> public static void RunImage(Type problemConfigName, string inputFileName, int logRate, bool parallelization) { // Scale img var paramterScale = ParameterSetter.SetFloat("Scale", 0.01f, 1); var consoleProblemConfig = Activator.CreateInstance(problemConfigName) as IImageProblemConfig; consoleProblemConfig.Initialize(0); consoleProblemConfig.InitializeScale(paramterScale); consoleProblemConfig.Initialize(inputFileName); var eva = Configuration.SetEVA(new[] { consoleProblemConfig }, parallelization); var configuration = new Configuration(); configuration.SetGenerationInfoLog(eva[0], consoleProblemConfig, logRate); consoleProblemConfig.ConfigGATermination(eva[0]); eva[0].Run(); }