public AOptimizer(AEvaluation <Element> evaluation, AStopCondition stopCondition) { Result = null; this.Evaluation = evaluation; this.StopCondition = stopCondition; bestSolutions = new List <double>(); }
public double Evaluate(AEvaluation <Element> evaluation) { if (!evaluated) { Fitness = evaluation.dEvaluate(Genotype); evaluated = true; } return(Fitness); }
public APopulationOptimizer(AEvaluation <Element> evaluation, AStopCondition stopCondition, AGenerator <Element> generator, ASelection selection, IMutation <Element> mutation, int populationSize) : base(evaluation, stopCondition) { this.generator = generator; this.selection = selection; this.mutation = mutation; this.populationSize = populationSize; population = new List <Individual <Element> >(); averageValues = new List <double>(); worstValues = new List <double>(); }
private static void TestGA(AEvaluation <int> problem, double probCrossover, double probMutation, int population, int iterations, double tournament) { List <String> results = new List <String>(); List <String> learningProgress = new List <String>(); int savedRun = new Random().Next(0, 10); for (int i = 0; i < 10; i++) { //var evaluation = new TspEvaluation(@"C:\Users\jbelter\source\repos\machine-learning-cvrp\data\A-n32-k5.vrp"); var evaluation = problem; var stopCondition = new IterationsStopCondition(iterations); //var optimizer = new TspRandomSearch(evaluation, stopCondition); var generator = new TspGenerator(new Random()); ASelection selection; if (tournament > 1 && tournament <= population) { selection = new TournamentSelection(Convert.ToInt32(tournament)); } else if (tournament > 0 && tournament <= 1) { selection = new TournamentSelection(tournament); } else { selection = new TournamentSelection(5); } var crossover = new OrderedCrossover(probCrossover); var mutation = new SwapMutation(probMutation); var optimizer = new GeneticAlgorithm <int>(evaluation, stopCondition, generator, selection, crossover, mutation, population); optimizer.Run(); if (i == savedRun) { learningProgress = formatLearning(optimizer.worstValues, optimizer.averageValues, optimizer.bestSolutions); } //ReportOptimizationResult(optimizer.Result); results.Add(String.Join(", ", problem.iSize.ToString(), optimizer.timeTaken.ToString(), optimizer.bestSolutions.Last().ToString(), optimizer.averageValues.Last().ToString(), optimizer.worstValues.Last().ToString(), probCrossover.ToString(), probMutation.ToString(), population.ToString(), iterations.ToString(), tournament.ToString() )); } SaveToFile(@"C:\Users\jbelter\source\repos\machine-learning-cvrp\resultsGA.txt", results); SaveToFile((@"C:\Users\jbelter\source\repos\machine-learning-cvrp\progress\GA" + "-" + problem.iSize.ToString() + "-" + probCrossover.ToString() + "-" + probMutation.ToString() + "-" + population.ToString() + "-" + iterations.ToString() + "-" + tournament.ToString()) .Replace(".", "") + ".txt", learningProgress); }
public SamplingOptimizer(AEvaluation <Element> evaluation, AStopCondition stopCondition, AGenerator <Element> generator) : base(evaluation, stopCondition) { this.generator = generator; }
public GeneticAlgorithm(AEvaluation <Element> evaluation, AStopCondition stopCondition, AGenerator <Element> generator, ASelection selection, ACrossover crossover, IMutation <Element> mutation, int populationSize) : base(evaluation, stopCondition, generator, selection, mutation, populationSize) { this.crossover = crossover; }