public double CheckAcceleration(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[ACCELERATION_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); double lowerRange; double lower; double upperRange; double upper; if (userInput == "Egal") { return(0.0); } else if (userInput == "<3") { lowerRange = 1.0; upperRange = 3.0; } else { String[] elements = userInput.Split('-'); lowerRange = Double.Parse(elements[0]); upperRange = Double.Parse(elements[1]); } lower = lowerRange - 1; upper = upperRange + 2; double x = car.Horsepower; if (x <= lower) { rating = 0; } else if (x > lower && x < lowerRange) { rating = 1 / (lowerRange - lower) * (x - lower); } else if (x >= lowerRange && x <= upperRange) { rating = 1; } else if (x > upperRange && x <= upper) { rating = -1 / (upper - upperRange) * (x - upperRange) + 1; } else { rating = 0; } return(rating * importance); }
public double CheckDrivingStyle(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[DRIVINGTYPE_INDEX] as Answer_1_String; double rating = 0.0; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (car.RideComfort == userInput) { rating = 1.0; } return(importance * rating); }
public double CheckFuelEconomy(Car car, Dictionary <int, Answer> answers) { if (!answers.ContainsKey(FUELECONOMY_INDEX)) { return(0.0); } Answer_1_String answer = answers[FUELECONOMY_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (userInput == "Egal") { return(0.0); } String[] elements = userInput.Split('-'); double lowerRange = Double.Parse(elements[0]); double lower = lowerRange - 1; double upperRange = Double.Parse(elements[1]); double upper = upperRange + 1; double x = car.FuelEconomy; if (x <= lower) { rating = 0; } else if (x > lower && x < lowerRange) { rating = 1 / (lowerRange - lower) * (x - lower); } else if (x >= lowerRange && x <= upperRange) { rating = 1; } else if (x > upperRange && x <= upper) { rating = -1 / (upper - upperRange) * (x - upperRange) + 1; } else { rating = 0; } return(rating * importance); }
public double CheckPrimaryUseCase(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[PRIMARYUSECASE_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (userInput == car.IntendedUsecase) { rating = 1; } else { rating = 0; } return(rating * importance); }
public double CheckPrimaryDrivingEnvirnoment(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[PRIMARYDRIVINGENVIRONMENT_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (userInput == car.IntendedEnvironment) { rating = 1.0; } else { rating = 0.0; } return(rating * importance); }
public double CheckBudget(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[BUGET_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (userInput == "Egal") { return(0.0); } double maxBudget = Double.Parse(userInput); double lowerPriceRange = maxBudget * 0.67; double upperPriceRange = maxBudget * 1.1; double x = car.AvgSpecPrice; if (x < lowerPriceRange) { rating = 0; } else if (x >= lowerPriceRange && x < maxBudget) { rating = (1 / (maxBudget - lowerPriceRange)) * ((double)(x - lowerPriceRange)); } else if (x >= maxBudget && x < upperPriceRange) { rating = (-1 / ((double)(upperPriceRange - maxBudget)) * ((double)(x - maxBudget))) + 1; } else { rating = 0; } return(rating * importance); }
public double CheckEnginTypeAndCylinder(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[PRIMARYDRIVINGENVIRONMENT_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); if (userInput == car.EngineType) { rating = 1.0; } else { rating = 0.0; } double currentRating = rating * importance; double possibleCylinderRating = 0.0; if (answers.ContainsKey(CYLINDERCOUNT_INDEX)) { Answer_List_String cylinderAnswer = answers[CYLINDERCOUNT_INDEX] as Answer_List_String; List <String> answerValue = cylinderAnswer.AnswerValue() as List <String>; rating = 0.0; importance = (double)cylinderAnswer.Importance() / 5.0; if (answerValue.Contains(car.EngineConstruction)) { rating = 1.0; } possibleCylinderRating = rating * importance; } return(currentRating + possibleCylinderRating); }
public double CheckTrunkSpace(Car car, Dictionary <int, Answer> answers) { Answer_1_String answer = answers[TRUNCSPACE_INDEX] as Answer_1_String; double rating; double importance = ((double)answer.Importance()) / 5.0; String userInput = answer.AnswerValue().ToString(); //Klein : x < 300 //Mittel: 300 <= x <= 430 //Groß: x > 430 double x = car.Trunksize; double lower; double lowerRange; double upper; double upperRange; if (userInput == "Klein") { lowerRange = 0; upperRange = 300; lower = lowerRange; upper = upperRange * 1.3; } else if (userInput == "Mittel") { lowerRange = 300; upperRange = 430; lower = lowerRange * 0.85; upper = upperRange * 1.3; } else { lowerRange = 430; upperRange = 700; lower = lowerRange * 0.85; upper = upperRange; } if (x <= lower) { rating = 0; } else if (x > lower && x < lowerRange) { rating = 1 / (lowerRange - lower) * (x - lower); } else if (x >= lowerRange && x <= upperRange) { rating = 1; } else if (x > upperRange && x <= upper) { rating = -1 / (upper - upperRange) * (x - upperRange) + 1; } else { rating = 0; } return(rating * importance); }
public double CheckPassenger(Car car, Dictionary <int, Answer> answers) { Answer_1_String passengerAnswer = answers[CHILDREN_INDEX] as Answer_1_String; Answer_1_String childSeatAnswer = null; if (answers.ContainsKey(CHILDSEAT_INDEX)) { childSeatAnswer = answers[CHILDSEAT_INDEX] as Answer_1_String; } String passengerAnswerValue = passengerAnswer.AnswerValue().ToString(); double passengerRating; double passengerImportance = ((double)passengerAnswer.Importance()) / 5.0; int wantedSeats; if (passengerAnswerValue == "Nein") { if (car.Seats <= 2) { passengerRating = 1.0; } else if (car.Seats > 2 && car.Seats <= 4) { passengerRating = -1.0 / 2.0 * ((double)(car.Seats - 2)) + 1.0; } else { passengerRating = 0; } return(passengerRating * passengerImportance); } else if (passengerAnswerValue == "3+") { wantedSeats = 5; } else { wantedSeats = Int16.Parse(passengerAnswerValue) + 1; } if (car.Seats < (wantedSeats - 1)) { passengerRating = 0; } else if (car.Seats == (wantedSeats - 1)) { passengerRating = 1 / 10; } else { passengerRating = 1; } double currentRating = passengerRating * passengerImportance; double possibleAttachedRating = 0; if (childSeatAnswer != null) { double childSeatRating; double childSeatImportance = ((double)childSeatAnswer.Importance()) / 5.0; String childSeatAnswerValue = childSeatAnswer.AnswerValue().ToString(); if (childSeatAnswerValue == "Nein") { childSeatRating = 0; } else { if (car.SeatsWithChildren > 1) { childSeatRating = 1; } else { childSeatRating = 0; } } possibleAttachedRating = childSeatRating * childSeatImportance; } return(currentRating + possibleAttachedRating); }
public double MaximumScore(Dictionary <int, Answer> answers) { Dictionary <int, double> tempAnswers = new Dictionary <int, double>(); foreach (KeyValuePair <int, Answer> kvp in answers) { double imp = (double)kvp.Value.Importance(); tempAnswers.Add(kvp.Key, imp); } if (!tempAnswers.ContainsKey(FUELECONOMY_INDEX)) { tempAnswers.Remove(FUELECONOMY_INDEX); } else { Answer_1_String ans = answers[FUELECONOMY_INDEX] as Answer_1_String; String ui = ans.AnswerValue().ToString(); if (ui == "Egal") { tempAnswers.Remove(FUELECONOMY_INDEX); } } if (!answers.ContainsKey(CYLINDERCOUNT_INDEX)) { tempAnswers.Remove(CYLINDERCOUNT_INDEX); } else { Answer_List_String cylinderAnswer = answers[CYLINDERCOUNT_INDEX] as Answer_List_String; List <String> answerValue = cylinderAnswer.AnswerValue() as List <String>; if (answerValue.Contains("Nein")) { tempAnswers.Remove(CYLINDERCOUNT_INDEX); } } if (!answers.ContainsKey(CHILDSEAT_INDEX)) { tempAnswers.Remove(CHILDSEAT_INDEX); } else { Answer_1_String childSeatAnswer = null; childSeatAnswer = answers[CHILDSEAT_INDEX] as Answer_1_String; String childSeatAnswerValue = childSeatAnswer.AnswerValue().ToString(); if (childSeatAnswerValue == "Nein") { tempAnswers.Remove(CHILDSEAT_INDEX); } } Answer_1_String answer = answers[BUGET_INDEX] as Answer_1_String; String userInput = answer.AnswerValue().ToString(); if (userInput == "Egal") { tempAnswers.Remove(BUGET_INDEX); } answer = answers[ACCELERATION_INDEX] as Answer_1_String; userInput = answer.AnswerValue().ToString(); if (userInput == "Egal") { tempAnswers.Remove(ACCELERATION_INDEX); } double temp = 0; foreach (double a in tempAnswers.Values) { double imp = (double)a / 5.0; temp += imp; } return(temp); }