Exemplo n.º 1
0
        /**
        * Defuzzify a set using the Mean of Maximums aproximation function
        * if it fails it returns -1 (which may be a valid answer)
        */
        /// <summary>
        /// Defizzify a FuzzySet and get its MEAN OF MAXIMUMS
        /// </summary>
        /// <param name="fs"></param>
        /// <returns>Mean of Maximums</returns>
        public static double DeFuzzifyMOM(FuzzySet fs)
        {
            if (fs == null) { return -1; }
            if (fs.Invalid()) { fs.Err = 10; return -1; }
            double m = fs.GetMaxSetValue();
            double sumTop = 0;
            double sumBottom = 0;
            double w;
            int i;
            for (i = 0; i < fs.GetNumPoints(); i++)
            {
                if (AEqual(fs.SetValue[i], m))
                {
                    w = fs.WorldValue[i];

                    sumTop = sumTop + w;
                    sumBottom = sumBottom + 1;
                }
            }
            if (AEqual(0, sumBottom)) { fs.Err = 15; return -1; }

            return sumTop / sumBottom;
        }