Exemplo n.º 1
0
        /// <summary>
        /// Maps a binary operation on two fuzzy numbers
        /// (Performs the operation over each pair of corresponding alpha-cuts)
        /// </summary>
        public static FuzzyNumber Map(FuzzyNumber X, FuzzyNumber Y, Func <Interval, Interval, Interval> operation)
        {
            if (X.AlphaCuts.Count == Y.AlphaCuts.Count)
            {
                return(new FuzzyNumber(X.AlphaCuts.Zip(Y.AlphaCuts, operation)));
            }

            throw new NotImplementedException();
        }
Exemplo n.º 2
0
        /// <summary>
        /// How much is greater than other fuzzy number?
        /// </summary>
        /// <param name="other"></param>
        /// <returns>A Presumption (0 - 1) that the fuzzy number is greater</returns>
        public double GreaterThan(FuzzyNumber other)
        {
            if (other.AlphaCuts.Count == AlphaCuts.Count)
            {
                var sum = 0d;
                for (var i = 0; i < AlphaCuts.Count; i++)
                {
                    sum += AlphaCuts[i].GreaterThan(other.AlphaCuts[i]);
                }

                return(sum / AlphaCuts.Count);
            }

            throw new NotImplementedException();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Calculates a cosine of the fuzzy angle.
 /// </summary>
 /// <param name="X">A fuzzy number represents the angle in radians.</param>
 public static FuzzyNumber Cos(FuzzyNumber X)
 {
     return FuzzyNumber.Map(X, x => Cos(x));
 }
Exemplo n.º 4
0
 /// <summary>
 /// Calculates a value of the fuzzy number raised to the specified power.
 /// </summary>
 /// <param name="X">Base</param>
 /// <param name="y">Exponent</param>
 public static FuzzyNumber Pow(FuzzyNumber X, double y)
 {
     return(FuzzyNumber.Map(X, x => Pow(x, y)));
 }
Exemplo n.º 5
0
 /// <summary>
 /// Returns the smaller of two fuzzy numbers.
 /// </summary>
 public static FuzzyNumber Min(FuzzyNumber X, FuzzyNumber Y)
 {
     return(FuzzyNumber.Map(X, Y, (x, y) => Min(x, y)));
 }
Exemplo n.º 6
0
        public static FuzzyNumber Atan2(FuzzyNumber Y, FuzzyNumber X)
        {
            var rotated = Y.Support.Contains(0) && !X.Support.Contains(0);

            return(FuzzyNumber.Map(Y, X, (y, x) => Atan2(y, x, rotated)));
        }
Exemplo n.º 7
0
 /// <summary>
 /// Returns the smaller of two fuzzy numbers.
 /// </summary>
 public static FuzzyNumber Min(FuzzyNumber X, FuzzyNumber Y)
 {
     return FuzzyNumber.Map(X, Y, (x, y) => Min(x, y));
 }
Exemplo n.º 8
0
 /// <summary>
 /// Calculates a sine of the fuzzy angle.
 /// </summary>
 /// <param name="X">A fuzzy number represents the angle in radians.</param>
 public static FuzzyNumber Sin(FuzzyNumber X)
 {
     return(FuzzyNumber.Map(X, x => Sin(x)));
 }
Exemplo n.º 9
0
        /// <summary>
        /// How much is greater than other fuzzy number?
        /// </summary>
        /// <param name="other"></param>
        /// <returns>A Presumption (0 - 1) that the fuzzy number is greater</returns>
        public double GreaterThan(FuzzyNumber other)
        {
            if (other.AlphaCuts.Count == AlphaCuts.Count)
            {
                var sum = 0d;
                for (var i = 0; i < AlphaCuts.Count; i++)
                {
                    sum += AlphaCuts[i].GreaterThan(other.AlphaCuts[i]);
                }

                return sum / AlphaCuts.Count;
            }

            throw new NotImplementedException();
        }
Exemplo n.º 10
0
 /// <summary>
 /// Calculates e raised to the specified fuzzy number.
 /// </summary>
 /// <param name="X">Exponent</param>
 public static FuzzyNumber Exp(FuzzyNumber X)
 {
     return FuzzyNumber.Map(X, x => Exp(x));
 }
Exemplo n.º 11
0
 /// <summary>
 /// Maps an unary operation on a fuzzy number
 /// </summary>
 public static FuzzyNumber Map(FuzzyNumber X, Func <Interval, Interval> operation)
 {
     return(new FuzzyNumber(X.AlphaCuts.Select(operation)));
 }
Exemplo n.º 12
0
 /// <summary>
 /// Calculates a value of the fuzzy number raised to the specified power.
 /// </summary>
 /// <param name="X">Base</param>
 /// <param name="y">Exponent</param>
 public static FuzzyNumber Pow(FuzzyNumber X, double y)
 {
     return FuzzyNumber.Map(X, x => Pow(x, y));
 }
Exemplo n.º 13
0
        /// <summary>
        /// Maps a binary operation on two fuzzy numbers
        /// (Performs the operation over each pair of corresponding alpha-cuts)
        /// </summary>
        public static FuzzyNumber Map(FuzzyNumber X, FuzzyNumber Y, Func<Interval, Interval, Interval> operation)
        {
            if (X.AlphaCuts.Count == Y.AlphaCuts.Count)
            {
                return new FuzzyNumber(X.AlphaCuts.Zip(Y.AlphaCuts, operation));

            }

            throw new NotImplementedException();
        }
Exemplo n.º 14
0
 /// <summary>
 /// Maps an unary operation on a fuzzy number
 /// </summary>
 public static FuzzyNumber Map(FuzzyNumber X, Func<Interval, Interval> operation)
 {
     return new FuzzyNumber(X.AlphaCuts.Select(operation));
 }
Exemplo n.º 15
0
 /// <summary>
 /// Calculates a cosine of the fuzzy angle.
 /// </summary>
 /// <param name="X">A fuzzy number represents the angle in radians.</param>
 public static FuzzyNumber Cos(FuzzyNumber X)
 {
     return(FuzzyNumber.Map(X, x => Cos(x)));
 }
Exemplo n.º 16
0
 /// <summary>
 /// Calculates e raised to the specified fuzzy number.
 /// </summary>
 /// <param name="X">Exponent</param>
 public static FuzzyNumber Exp(FuzzyNumber X)
 {
     return(FuzzyNumber.Map(X, x => Exp(x)));
 }
Exemplo n.º 17
0
 /// <summary>
 /// Calculates a sine of the fuzzy angle.
 /// </summary>
 /// <param name="X">A fuzzy number represents the angle in radians.</param>
 public static FuzzyNumber Sin(FuzzyNumber X)
 {
     return FuzzyNumber.Map(X, x => Sin(x));
 }
Exemplo n.º 18
0
        public static FuzzyNumber Atan2(FuzzyNumber Y, FuzzyNumber X)
        {
            var rotated = Y.Support.Contains(0) && !X.Support.Contains(0);

            return FuzzyNumber.Map(Y, X, (y, x) => Atan2(y, x, rotated));
        }