Beispiel #1
0
        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());
        }
Beispiel #3
0
 public void Setup()
 {
     reader = new VrptwProblemReader();
 }
Beispiel #4
0
 public void SetUp()
 {
     reader  = new VrptwProblemReader();
     problem = reader.ReadFromFile(FILE_PATH);
 }
Beispiel #5
0
 public void SetUp()
 {
     reader  = new VrptwProblemReader();
     factory = new SolutionFactory();
     fitness = new FitnessFunction(5000, 1);
 }