/// <summary> /// Mamdani Min Implication Operator /// </summary> /// <param name="elementA">FuzzyElement A</param> /// <param name="elementB">FuzzyElement B</param> /// <returns>FuzzyElement</returns> public static IFuzzyElement MamdaniMinImplication(this IFuzzyElement elementA, IFuzzyElement elementB) { var fuzzy = elementA.Clone(); fuzzy.Value = elementA.Min(elementB).Value; return fuzzy; }
/// <summary> /// Zadeh Max Min Implication Operator /// </summary> /// <param name="elementA">FuzzyElement A</param> /// <param name="elementB">FuzzyElement B</param> /// <returns>FuzzyElement</returns> public static IFuzzyElement ZadehMaxMinImplication(this IFuzzyElement elementA, IFuzzyElement elementB) { var fuzzy = elementA.Clone(); fuzzy.Value = elementA.Min(elementB).Max(elementA.Clone(x => x.Value = 1 - elementA.Value)).Value; return fuzzy; }
/// <summary> /// Larsen Product Implication Operator /// </summary> /// <param name="elementA">FuzzyElement A</param> /// <param name="elementB">FuzzyElement B</param> /// <returns>FuzzyElement</returns> public static IFuzzyElement LarsenProductImplication(this IFuzzyElement elementA, IFuzzyElement elementB) { var fuzzy = elementA.Clone(); fuzzy.Value = elementA.Value * elementB.Value; return fuzzy; }
/// <summary> /// Degree of fulfillment /// </summary> /// <param name="fuzzySet">FuzzySet</param> /// <param name="fuzzyElement">FuzzyElement</param> /// <returns>FuzzySet</returns> private static IFuzzySet DegreeOfFulfillment(IFuzzySet fuzzySet, IFuzzyElement fuzzyElement) { var result = fuzzySet.GetNewEmpty(); foreach (var element in fuzzySet) { result.AddElement(element.Min(fuzzyElement)); } return result; }
/// <summary> /// Add element in the fuzzy set /// </summary> /// <param name="element">Elements to add</param> public void AddElement(IFuzzyElement element) { this.Elements.Add(element.X, element); }