Beispiel #1
0
        private TFuzzySet CreatSpeedFuzzySet()
        {
            TFuzzySet Result = new TFuzzySet();

            Result.Add(new Graphic(LowSpeed, "низкая"));
            Result.Add(new Graphic(MediumSpeed, "средняя"));
            Result.Add(new Graphic(FastSpeed, "высокая"));

            return(Result);
        }
Beispiel #2
0
        private TFuzzySet CreatDistanceFuzzySet()
        {
            TFuzzySet Result = new TFuzzySet();

            Result.Add(new Graphic(DistanceSmall, "близко"));
            Result.Add(new Graphic(DistanceMiddle, "средне"));
            Result.Add(new Graphic(DistanceLarge, "далеко"));

            return(Result);
        }
Beispiel #3
0
    public Vector GiveSpeed(int MinSpeed, int MaxSpeed, List <Car> Cars,
                            TFuzzySet SpeedSet, TFuzzySet DistanceSet, List <Rule> Rules)
    {
        double NormalizedDist;

        // Определяем расстояние до ближайшего автомобиля
        double Distance = DistanceBeforeNextCar();

        // Преобразуем расстояние
        if (Distance == int.MaxValue)
        {
            NormalizedDist = 90.0;
        }
        else
        {
            NormalizedDist = NormalizeDistance(Distance);
            if (NormalizedDist > 90.0)
            {
                NormalizedDist = 90.0;
            }
        }

        // Фаззифицируем расстояние
        Parameter[] Parameters = DistanceSet.Fuzzy(NormalizedDist);

        // Выводим скорость по правилам
        OutWithRules(Rules, Parameters);

        // Получаем скорость
        double NormalizedSpeed = SpeedSet.Defuzzy(Parameters);

        // Преобразуем скорость
        double Result = UnnormalizedSpeed(NormalizedSpeed, MinSpeed, MaxSpeed);

        if (Result > Speed)
        {
            Result = Speed;
        }

        Reorganize();

        // Возвращаем скорость
        return(new Vector(Result, 0));
    }