public static FuzzyRule If(this FuzzyRuleCollection value, FuzzyRuleCondition condition) { var rule = Rule.If(condition); value.Add(rule); return(rule); }
public static FuzzyRule If(this FuzzyRule value, FuzzyRuleCondition condition) { if (null == value.Premise) { value.Premise = new Premise(condition); } return(value); }
public static FuzzyRuleCondition IsNot(this LinguisticVariable value, IMembershipFunction function) { if (null == function) { throw new ArgumentNullException("function"); } var @operator = new FuzzyRuleToken("NOT", FuzzyRuleTokenType.Not); var clause = new FuzzyRuleCondition(value, @operator, function); return(clause); }
public static List <FuzzyRuleCondition> And(this FuzzyRuleCondition value, FuzzyRuleCondition condition) { var conditions = new List <FuzzyRuleCondition>(); var conjunction = new FuzzyRuleConditionConjunction() { Conjunction = new FuzzyRuleToken("AND", FuzzyRuleTokenType.And), FirstCondition = value, SecondCondition = condition }; condition.Conjunction = conjunction; conditions.Add(value); conditions.Add(condition); return(conditions); }
[TestCase(0, 10, 20, true, false, 0, 10, 30, false, 15, .5)] // v1 IS f1 OR v2 NOT f2 public void RuleEvaluation_Double_Success(Double a1, Double b1, Double c1, Boolean IsOp1, Boolean And, Double a2, Double b2, Double c2, Boolean IsOp2, Double v, Double expectedResult) { //Arrange var conditions = new List <FuzzyRuleCondition>(); var variable1 = new LinguisticVariable("v1"); variable1.InputValue = v; var operatr1 = new FuzzyRuleToken("is", IsOp1 ? FuzzyRuleTokenType.Is : FuzzyRuleTokenType.Not); var function1 = new TriangleMembershipFunction("f1", a1, b1, c1); var con1 = new FuzzyRuleCondition(variable1, operatr1, function1); conditions.Add(con1); var variable2 = new LinguisticVariable("v2"); variable2.InputValue = v; var operatr2 = new FuzzyRuleToken("is", IsOp2 ? FuzzyRuleTokenType.Is : FuzzyRuleTokenType.Not); var function2 = new TriangleMembershipFunction("f2", a2, b2, c2); var con2 = new FuzzyRuleCondition(variable2, operatr2, function2); conditions.Add(con2); var conjToken = new FuzzyRuleToken("and", And ? FuzzyRuleTokenType.And : FuzzyRuleTokenType.Or); var conj = new FuzzyRuleConditionConjunction() { FirstCondition = con1, SecondCondition = con2, Conjunction = conjToken }; con2.Conjunction = conj; //Act var srv = new FuzzyRuleEvaluator(); var result = srv.Evaluate(conditions); //Assert Assert.That(result, Is.EqualTo(expectedResult)); }
public static List <FuzzyRuleCondition> Or(this FuzzyRuleCondition value, FuzzyRuleCondition condition) { if (null == condition) { throw new ArgumentNullException("condition"); } var conditions = new List <FuzzyRuleCondition>(); var conjunction = new FuzzyRuleConditionConjunction() { Conjunction = new FuzzyRuleToken("OR", FuzzyRuleTokenType.Or), FirstCondition = value, SecondCondition = condition }; condition.Conjunction = conjunction; conditions.Add(value); conditions.Add(condition); return(conditions); }
public static List <FuzzyRuleCondition> And(this List <FuzzyRuleCondition> value, FuzzyRuleCondition condition) { var firstCondition = value.Last(); var conjunction = new FuzzyRuleConditionConjunction() { Conjunction = new FuzzyRuleToken("AND", FuzzyRuleTokenType.And), FirstCondition = firstCondition, SecondCondition = condition }; condition.Conjunction = conjunction; value.Add(condition); return(value); }