using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Data; using HeuristicLab.Services.Optimization.ControllerService.Model; using HeuristicLab.Optimization; using HeuristicLab.Services.Optimization.ControllerService; using HeuristicLab.Algorithms.GeneticAlgorithm; using HeuristicLab.Problems.TravelingSalesman; namespace HeuristicLab.Mappers { public class TSPScenarioMapper : IScenarioMapper { public void MapScenario(OptimizationScenario scenario, out IAlgorithm algorithm) { Console.WriteLine("Mapping scenario!"); var ga = new GeneticAlgorithm(); var problem = new TravelingSalesmanProblem(); ga.Problem = problem; algorithm = ga; problem.BestKnownQuality = HLMapper.ConvertToDoubleValue(scenario.FirstAlgorithm.Problem.Parameters.FindByName("BestKnownQuality")); problem.BestKnownSolution = HLMapper.ConvertToPermutation(scenario.FirstAlgorithm.Problem.Parameters.FindByName("BestKnownSolution")); problem.Coordinates = HLMapper.ConvertToDoubleMatrix(scenario.FirstAlgorithm.Problem.Parameters.FindByName("Coordinates")); var evalParam = HLMapper.GetStringValue(scenario.FirstAlgorithm.Problem.Parameters.FindByName("EvaluatorParameter")); if (evalParam == "HeuristicLab.Problems.TravelingSalesman.TSPRoundedEuclideanPathEvaluator") { problem.EvaluatorParameter.Value = new TSPRoundedEuclideanPathEvaluator(); } else if (evalParam == "HeuristicLab.Problems.TravelingSalesman.TSPGeoPathEvaluator") { problem.EvaluatorParameter.Value = new TSPGeoPathEvaluator(); } else { problem.EvaluatorParameter.Value = new TSPEuclideanPathEvaluator(); } problem.UseDistanceMatrix = HLMapper.ConvertToBoolValue(scenario.FirstAlgorithm.Problem.Parameters.FindByName("UseDistanceMatrix")); Console.WriteLine("Mapping algorithm..."); ga.Mutator = HLMapper.FindInItemSet(ga.MutatorParameter.ValidValues, scenario.FirstAlgorithm.Parameters.FindByName("Mutator")); ga.CrossoverParameter.Value = HLMapper.FindOperator(problem, scenario.FirstAlgorithm.Parameters.FindByName("CrossoverParameter")); ga.Elites = HLMapper.ConvertToIntValue(scenario.FirstAlgorithm.Parameters.FindByName("Elites")); ga.MaximumGenerations = HLMapper.ConvertToIntValue(scenario.FirstAlgorithm.Parameters.FindByName("MaximumGenerations")); ga.MutationProbability = HLMapper.ConvertToPercentValue(scenario.FirstAlgorithm.Parameters.FindByName("MutationProbability")); ga.PopulationSize = HLMapper.ConvertToIntValue(scenario.FirstAlgorithm.Parameters.FindByName("PopulationSize")); ga.Seed = HLMapper.ConvertToIntValue(scenario.FirstAlgorithm.Parameters.FindByName("Seed")); ga.Selector = HLMapper.FindInItemSet(ga.SelectorParameter.ValidValues, scenario.FirstAlgorithm.Parameters.FindByName("Selector")); ga.SetSeedRandomly = HLMapper.ConvertToBoolValue(scenario.FirstAlgorithm.Parameters.FindByName("SetSeedRandomly")); } } }