public double distance(BaseFuzzyObject bFuzzy, Word straight) { var fuzzy = bFuzzy as FuzzyObject; var res = 0.0; var type = straight.GetType(); if (!fuzzy.Belongings["type"].ContainsKey(type.Name)) { res += typePenalty; } else { res += Math.Abs(fuzzy.Belongings["type"][type.Name] * typePenalty - typePenalty); } foreach (var field in type.GetFields()) { if (!fuzzy.Belongings.ContainsKey(field.Name)) { res += propertyPenalty; } else if (!fuzzy.Belongings[field.Name].ContainsKey(field.GetValue(straight).ToString())) { res += propertyValuePenalty; } else { res += (1 - fuzzy.Belongings[field.Name][field.GetValue(straight).ToString()]) * propertyValuePenalty; } } return(res); }
public double distance(Triplet <T> straight, BaseFuzzyObject fuzzy) { return(this.distance(fuzzy, straight)); }
public double distance(BaseFuzzyObject fuzzy, Triplet <T> straight) { var triplet = fuzzy as FuzzyTriplet; return(baseMetrica.distance(triplet.triplet.first, straight.first) + baseMetrica.distance(triplet.triplet.third, straight.third)); }
public double distance(Word straight, BaseFuzzyObject fuzzy) { return(this.distance(fuzzy, straight)); }