Example #1
0
        public List <Diet> GetDiet(List <Food> foods, DietSummary targetDiet, Configuration configuration)
        {
            var currentPopulation           = _populationInitializer.InitializePopulation(foods, configuration);
            var numberOfIndividualsToSelect = (int)(configuration.PopulationSize * configuration.SelectionFactor);
            var iteration = 0;

            while (iteration < configuration.MaxIterations)
            {
                var ahpSolver      = new AhpSolver();
                var ahpEvaluations = ahpSolver.Evaluate(currentPopulation, targetDiet);

                var evaluations = Evaluate(currentPopulation, targetDiet);
                OutputEvaluation(evaluations, iteration);

                currentPopulation = _selector.Select(evaluations, numberOfIndividualsToSelect);
                CrossOver(configuration, currentPopulation, numberOfIndividualsToSelect);
                Mutate(currentPopulation, foods, configuration);

                iteration++;
            }

            var endEvaluations = Evaluate(currentPopulation, targetDiet);

            return(currentPopulation.OrderBy(diet => _evaluator.Evaluate(diet, targetDiet)).ToList());
        }
Example #2
0
        public void Test_CarSelection1()
        {
            IDecision tmp_project = TestFactory.CarSelectionProblem();

            System.Diagnostics.Debug.WriteLine(tmp_project.ToString());

            AhpSolver       tmp_solver     = new AhpSolver(tmp_project);
            IDecisionResult decisionResult = tmp_solver.Solve();

            Assert.IsNotNull(decisionResult, "success");
        }
Example #3
0
        public void Test_CarSelection2()
        {
            //http://en.wikipedia.org/wiki/Analytic_hierarchy_process_%E2%80%94_Car_example
            //https://rpubs.com/gluc/ahp

            IDecision tmp_project = TestFactory.ComplexCarSelectionProblem();

            System.Diagnostics.Debug.WriteLine(tmp_project.ToString());

            AhpSolver       tmp_solver     = new AhpSolver(tmp_project);
            IDecisionResult decisionResult = tmp_solver.Solve();

            Assert.IsNotNull(decisionResult, "success");
        }