Пример #1
0
        public FuzzyResult Build()
        {
            var result = new FuzzyResult();

            result.Name     = name;
            result.Category = category;

            result.Index = index;

            result.Center     = center;
            result.UpperWidth = upperWidth;
            result.LowerWidth = lowerWidth;

            result.LeftModifier  = leftModifier;
            result.RightModifier = rightModifier;

            result.GetArea = areaFunction;

            if (autoIncrement)
            {
                index++;
            }

            return(result);
        }
Пример #2
0
        private double Linear(FuzzyResult result, double Membership)
        {
            var upperDistance  = result.UpperWidth / 2;
            var lowerDistance  = result.LowerWidth / 2;
            var medianDistance = lowerDistance - upperDistance;

            var value = Membership;
            //var trueValue = value * 100;

            double leftArea  = 0;
            double rightArea = 0;

            // TODO: Optimize

            // find area of left side
            if (result.LeftModifier != FLOOR)
            {
                var rectangle = value * ((medianDistance * (1 - value)) + upperDistance);
                var triangle  = (value * (medianDistance * value)) / 2;

                leftArea = rectangle + triangle;
            }

            // find area of right side
            if (result.RightModifier != FLOOR)
            {
                var rectangle = value * ((medianDistance * (1 - value)) + upperDistance);
                var triangle  = (value * (medianDistance * value)) / 2;

                rightArea = rectangle + triangle;
            }

            return(leftArea + rightArea);
        }
Пример #3
0
 public FuzzyRule(FuzzyValue[] Values, FuzzyResult Result)
 {
     this.Values = new HashSet <FuzzyValue>(Values);
     this.Result = Result;
 }
Пример #4
0
 public FuzzyRule(ISet <FuzzyValue> Values, FuzzyResult Result)
 {
     this.Values = Values;
     this.Result = Result;
 }