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()); }
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); }
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)); }
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)); }
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); }
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)); }
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))); }