public string Defuzzyfie(IFuzzySet set)
 {
     double sumNumerator = 0.0;
     double sumDenominator = 0.0;
     for (int i = 0; i < set.GetDomain().GetCardinality(); i++)
     {
         sumNumerator += (set.GetMembershipFor(set.GetDomain().ElementAt(i)) * (int)set.GetDomain().ElementAt(i)[0]);
         sumDenominator += set.GetMembershipFor(set.GetDomain().ElementAt(i));
     }
     return Convert.ToInt32(sumNumerator / sumDenominator).ToString();
 }
        public string Defuzzyfie(IFuzzySet set)
        {
            double sumNumerator   = 0.0;
            double sumDenominator = 0.0;

            for (int i = 0; i < set.GetDomain().GetCardinality(); i++)
            {
                sumNumerator   += (set.GetMembershipFor(set.GetDomain().ElementAt(i)) * (int)set.GetDomain().ElementAt(i)[0]);
                sumDenominator += set.GetMembershipFor(set.GetDomain().ElementAt(i));
            }
            return(Convert.ToInt32(sumNumerator / sumDenominator).ToString());
        }
Ejemplo n.º 3
0
 public IFuzzySet Calculate(IFuzzySet set)
 {
     IList<double> memberships = new List<double>();
     for (int i = 0; i < set.GetDomain().GetCardinality(); i++)
     {
         double value = set.GetMembershipFor(set.GetDomain().ElementAt(i));
         memberships.Add(1 - value);
     }
     return FuzzySetFactory.CreateFuzzySet(set.GetDomain(), memberships);
 }
Ejemplo n.º 4
0
        public IFuzzySet Calculate(IFuzzySet set)
        {
            IList <double> memberships = new List <double>();

            for (int i = 0; i < set.GetDomain().GetCardinality(); i++)
            {
                double value = set.GetMembershipFor(set.GetDomain().ElementAt(i));
                memberships.Add(1 - value);
            }
            return(FuzzySetFactory.CreateFuzzySet(set.GetDomain(), memberships));
        }
Ejemplo n.º 5
0
        public IFuzzySet Calculate(IFuzzySet first, IFuzzySet second)
        {
            IList <double> memberships = new List <double>();
            IDomain        domain      = DomainFactory.CreateDomain(new IDomain[] { first.GetDomain(), second.GetDomain() });
            IFuzzySet      firstCyl    = first.CylindricalExtension(domain);
            IFuzzySet      secondCyl   = second.CylindricalExtension(domain);

            for (int i = 0; i < domain.GetCardinality(); i++)
            {
                double value1 = firstCyl.GetMembershipFor(domain.ElementAt(i));
                double value2 = secondCyl.GetMembershipFor(domain.ElementAt(i));
                memberships.Add(value1 * value2);
            }
            return(FuzzySetFactory.CreateFuzzySet(domain, memberships));
        }
Ejemplo n.º 6
0
 public IFuzzySet Calculate(IFuzzySet first, IFuzzySet second)
 {
     if (!first.GetDomain().Equals(second.GetDomain()))
     {
         throw new ApplicationException("Domains are not the same.");
     }
     IList<double> memberships = new List<double>();
     IDomain domain = first.GetDomain();
     for (int i = 0; i < first.GetDomain().GetCardinality(); i++)
     {
         double value1 = first.GetMembershipFor(domain.ElementAt(i));
         double value2 = second.GetMembershipFor(domain.ElementAt(i));
         memberships.Add(Math.Min(value1, value2));
     }
     return FuzzySetFactory.CreateFuzzySet(domain, memberships);
 }
Ejemplo n.º 7
0
        public IFuzzySet Calculate(IFuzzySet first, IFuzzySet second)
        {
            if (!first.GetDomain().Equals(second.GetDomain()))
            {
                throw new ApplicationException("Domains are not the same.");
            }
            IList <double> memberships = new List <double>();
            IDomain        domain      = first.GetDomain();

            for (int i = 0; i < domain.GetCardinality(); i++)
            {
                double value1 = first.GetMembershipFor(domain.ElementAt(i));
                double value2 = second.GetMembershipFor(domain.ElementAt(i));
                memberships.Add(value1 + value2 - value1 * value2);
            }
            return(FuzzySetFactory.CreateFuzzySet(domain, memberships));
        }
Ejemplo n.º 8
0
        protected override IFuzzySet GetAcceleration(params string[][] variables)
        {
            IList <IFuzzySet> sets = new List <IFuzzySet>();
            IFuzzySet         set;

            foreach (var rule in accelerationRules)
            {
                IList <double> values = new List <double>();
                for (int i = 0; i < rule.Item1.Count; i++)
                {
                    IFuzzySet variable = rule.Item1[i];
                    double    value    = variable.GetMembershipFor(variable.GetDomain().FromStringRepresentation(variables[i]));
                    values.Add(value);
                }
                double min = values.Min();
                set = FuzzySetFactory.CreateFuzzySet(rule.Item2.GetDomain(), Enumerable.Repeat(min, rule.Item2.GetDomain().GetCardinality()));
                sets.Add(set.TNorm(rule.Item2, tNorm));
            }
            set = FuzzySetFactory.CreateFuzzySet(accelerationRules[0].Item2.GetDomain(), Enumerable.Repeat(0.0, accelerationRules[0].Item2.GetDomain().GetCardinality()));
            return(sets.Aggregate((current, next) => current.SNorm(next, sNorm)));
        }