Beispiel #1
0
        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);
        }
Beispiel #2
0
 public double distance(Triplet <T> straight, BaseFuzzyObject fuzzy)
 {
     return(this.distance(fuzzy, straight));
 }
Beispiel #3
0
        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));
        }
Beispiel #4
0
 public double distance(Word straight, BaseFuzzyObject fuzzy)
 {
     return(this.distance(fuzzy, straight));
 }