public static ResultPoint CreateResultPoint(GroupDietIndividual individual) { return(new ResultPoint { Cost = individual.Evaluations.Single(e => e.Type == ObjectiveType.Cost).Score, Preferences = individual.Evaluations.Single(e => e.Type == ObjectiveType.Preferences).Score, PreparationTime = individual.Evaluations.Single(e => e.Type == ObjectiveType.PreparationTime).Score, Macro = individual.Evaluations.Single(e => e.Type == ObjectiveType.Macro).Score //Diet = CreateDietData(individual) }); }
//public static double Euclidian(GroupDietIndividual individual, double[] referencePoint) //{ // var summarizedScores = SummarizeScores(individual); // //macro, cost, time, preferences // return Math.Sqrt( // Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Macro).Score / summarizedScores - referencePoint[0], 2) - // Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Cost).Score / summarizedScores - referencePoint[1], 2) - // Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.PreparationTime).Score / summarizedScores - referencePoint[2], 2) - // Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Preferences).Score / summarizedScores - referencePoint[3], 2)); //} public static double Euclidian(GroupDietIndividual individual, WeightsModel weights) { var summarizedScores = SummarizeScores(individual); var normalziedWeights = NormalizeWeights(weights); //macro, cost, time, preferences return(Math.Sqrt( Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Macro).Score / summarizedScores - 1 + normalziedWeights.MacroWeight, 2) + Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Cost).Score / summarizedScores - 1 + normalziedWeights.CostWeight, 2) + Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.PreparationTime).Score / summarizedScores - 1 + normalziedWeights.PreparationTimeWeight, 2) + Math.Pow(individual.Evaluations.Single(e => e.Type == ObjectiveType.Preferences).Score / summarizedScores - 1 + normalziedWeights.PreferncesWeight, 2))); }
public GroupDietViewModel CreateGroupDietViewModel(GroupDietIndividual individual, List <PersonalData> personalDataList) { var groupDietViewModel = new GroupDietViewModel(); var dietAnalizer = new GroupDietAnalyzer(); groupDietViewModel.Evaluations = individual.Evaluations; foreach (var personalData in personalDataList) { var personDiet = new PersonDietViewModel(); personDiet.DietSummary = dietAnalizer.SummarizeForPerson(individual.GroupDiet, personalData.Id); personDiet.Meals = GetMealsViewModel(personDiet.DietSummary, individual, personalData); groupDietViewModel.PersonDietViewModels.Add(personDiet); } return(groupDietViewModel); }
private List <MealViewModel> GetMealsViewModel(DietSummary dietSummary, GroupDietIndividual individual, PersonalData personalData) { var mealViewModels = new List <MealViewModel>(); foreach (var meal in individual.GroupDiet.Meals) { var mealVm = new MealViewModel(); var recipes = meal.GetRecipesForPerson(personalData.Id); var mealindex = individual.GroupDiet.Meals.IndexOf(meal); recipes.ForEach(r => mealVm.Recipes.Add(new RecipeViewModel { Amount = r.Item1 * r.Item2.NominalWeight, Name = r.Item2.Name })); mealVm.Calories = (int)dietSummary.CaloriesPerMeal[mealindex]; mealVm.IsInRange = personalData.Requirements.MealCaloriesSplit[mealindex].IsInRange(mealVm.Calories); mealVm.DistanceToRange = (int)personalData.Requirements.MealCaloriesSplit[mealindex].GetDistanceToRange(mealVm.Calories); mealViewModels.Add(mealVm); } return(mealViewModels); }
public void T1() { var groupDiet = GetDiet(); var pd = new List <PersonalData> { GetPersonalData(0), GetPersonalData(1) }; var individual = new GroupDietIndividual(groupDiet); var ev = new GroupDietEvaluator(pd, new GroupDietAnalyzer()); ev.Evaluate(individual); var builder = new GroupDietViewModelBuilder(); var nsgRes = new NsgaResult(); nsgRes.Fronts.Add(new List <Individual> { individual }); var vm = builder.Build(nsgRes, pd); vm.GroupDiets.First().Evaluations.First().Score.Should().Be(250); }
private static DietData CreateDietData(GroupDietIndividual individual) { return(new DietData { Meals = individual.GroupDiet.Meals.Select(CreateMealData).ToList() }); }
private static double SummarizeScores(GroupDietIndividual individual) { return(individual.Evaluations.Select(e => e.Score).Sum()); }