public static async Task <Chromosome> DoMa(string filename, CrossoverOperator crossOp, MutationOperator mutOp) { var problem = new VrptwProblemReader().ReadFromFile(filename); var parameters = new Parameters() { ChromosomeFactory = new SolutionFactory(), ConvergenceLimit = 0.15f, CrossoverOperators = new List <CrossoverOperator> { crossOp }, CrossoverProbability = 0.9f, EliteChildrenCount = 4, Fitness = new FitnessFunction(200000, 1), FitnessStrategy = FitnessStrategy.MINIMIZE, GeneCount = problem.GeneCount(), Heuristics = new SimulatedAnnealing(), HeuristicsParameters = new float[] { 100, 0.90f, 50 }, MaxIterations = 300, MutationOperators = new List <MutationOperator> { mutOp }, MutationProbability = 0.15f, PopulationSize = 200, PreservedChromosomesNumber = 4, Selection = new TournamentSelection() }; MemeticAlgorithm ma = new MemeticAlgorithm(); Chromosome sol = await ma.Run(problem, parameters, CallBackMa, crossOp.GetId() + "-" + mutOp.GetId()); return(sol); }
public void RegisterAlgorithm(string problemName, ParametersWebsite webParameters) { string filePath = HttpContext.Current.Server.MapPath("~/Data/Homberger/" + problemName.ToUpper() + @".txt"); VrptwProblem problem = new VrptwProblemReader().ReadFromFile(filePath); string connecionId = Context.ConnectionId; Register(); MemeticAlgorithm ma; if (algorithms.ContainsKey(connecionId)) { ma = algorithms[connecionId]; ma.Stop(); } else { ma = new MemeticAlgorithm(); } Parameters parameters = new Parameters { Heuristics = HeuristicsFactory.Create(webParameters.Heuristics), PopulationSize = webParameters.PopulationSize, Selection = SelectionFactory.Create(webParameters.Selection), CrossoverOperators = new List <CrossoverOperator>(), MutationOperators = new List <MutationOperator>(), CrossoverProbability = webParameters.CrossoverProbability, MutationProbability = webParameters.MutationProbability, Fitness = new FitnessFunction(webParameters.FitnessRoutes, webParameters.FitnesDistance), EliteChildrenCount = webParameters.EliteChildrenCount, GeneCount = problem.Customers.Count, FitnessStrategy = FitnessStrategy.MINIMIZE, ConvergenceLimit = webParameters.ConvergenceLimit, PreservedChromosomesNumber = webParameters.PreservedChromosomeNumber, MaxIterations = webParameters.Iterations, ChromosomeFactory = new SolutionFactory(), HeuristicsParameters = webParameters.HeuristicsParameters }; parameters.CrossoverOperators.Add(CrossoverOperatorFactory.Create(webParameters.Crossover)); parameters.MutationOperators.Add(MutationOperatorFactory.Create(webParameters.Mutation)); algorithms.TryAdd(connecionId, ma); var result = ma.Run(problem, parameters, UpdateSolution, connecionId); var solution = result.Result as Solution; string outputPath = HttpContext.Current.Server.MapPath("~/Results/Memetic"); string outputFilePath = outputPath + @"/" + problem.Name + ".txt"; File.WriteAllText(outputFilePath, solution.ToFileText()); }
public void Setup() { reader = new VrptwProblemReader(); }
public void SetUp() { reader = new VrptwProblemReader(); problem = reader.ReadFromFile(FILE_PATH); }
public void SetUp() { reader = new VrptwProblemReader(); factory = new SolutionFactory(); fitness = new FitnessFunction(5000, 1); }