Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }