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); }
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); }
public FuzzyRule(FuzzyValue[] Values, FuzzyResult Result) { this.Values = new HashSet <FuzzyValue>(Values); this.Result = Result; }
public FuzzyRule(ISet <FuzzyValue> Values, FuzzyResult Result) { this.Values = Values; this.Result = Result; }