Example #1
0
TEST(Fuzzy, addFuzzyRule){
  Fuzzy* fuzzy = new Fuzzy();

  FuzzyRuleAntecedent* seTemperatureLowOrpressureSmall = new FuzzyRuleAntecedent();
  FuzzySet* temperatureLow = new FuzzySet(0, 10, 10, 20);
  temperatureLow->setPertinence(0.5);
  FuzzySet* pressureSmall = new FuzzySet(0, 10, 10, 20);
  pressureSmall->setPertinence(0.5);
  seTemperatureLowOrpressureSmall->joinWithOR(temperatureLow, pressureSmall);

  FuzzyRuleAntecedent* andRiskMinimum = new FuzzyRuleAntecedent();
  FuzzySet* riskMinimum = new FuzzySet(0, 10, 10, 20);
  riskMinimum->setPertinence(0.7);
  andRiskMinimum->joinSingle(riskMinimum);

  FuzzyRuleAntecedent* seTemperatureLowOrpressureSmallandRiskMinimum = new FuzzyRuleAntecedent();
  seTemperatureLowOrpressureSmallandRiskMinimum->joinWithAND(seTemperatureLowOrpressureSmall, andRiskMinimum);

  FuzzyRuleConsequent* thenDangerLow = new FuzzyRuleConsequent();

  FuzzySet* dangerLow = new FuzzySet(0, 10, 10, 20);

  thenDangerLow->addOutput(dangerLow);

  FuzzyRule* fuzzyRule = new FuzzyRule(1, seTemperatureLowOrpressureSmallandRiskMinimum, thenDangerLow);
  
  bool result = fuzzy->addFuzzyRule(fuzzyRule);

  EXPECT_TRUE(result);
}
Example #2
0
TEST(FuzzyRule, evaluateExpressionAndIsFired){
  FuzzyRuleAntecedent* fuzzyRuleAntecedent2 = new FuzzyRuleAntecedent();
  FuzzySet* temperatureLow = new FuzzySet(0, 10, 10, 20);
  temperatureLow->setPertinence(0.5);
  FuzzySet* pressureSmall = new FuzzySet(0, 10, 10, 20);
  pressureSmall->setPertinence(0.5);
  fuzzyRuleAntecedent2->joinWithOR(temperatureLow, pressureSmall);

  FuzzyRuleAntecedent* fuzzyRuleAntecedent1 = new FuzzyRuleAntecedent();
  FuzzySet* riskMinimum = new FuzzySet(0, 10, 10, 20);
  riskMinimum->setPertinence(0.7);
  fuzzyRuleAntecedent1->joinSingle(riskMinimum);

  FuzzyRuleAntecedent* fuzzyRuleAntecedent3 = new FuzzyRuleAntecedent();
  fuzzyRuleAntecedent3->joinWithAND(fuzzyRuleAntecedent2, fuzzyRuleAntecedent1);

  FuzzyRuleConsequent* fuzzyRuleConsequent = new FuzzyRuleConsequent();

  FuzzySet* dangerLow = new FuzzySet(0, 10, 10, 20);

  fuzzyRuleConsequent->addOutput(dangerLow);

  FuzzyRule* fuzzyRule = new FuzzyRule(1, fuzzyRuleAntecedent3, fuzzyRuleConsequent);
  
  bool result1 = fuzzyRule->evaluateExpression();

  bool result2 = fuzzyRule->isFired();

  EXPECT_TRUE(result1);
  EXPECT_TRUE(result2);
}
Example #3
0
TEST(FuzzySet, setPertinenceAndgetPertinence){
  FuzzySet* fuzzySet = new FuzzySet(0, 10, 10, 20);

  fuzzySet->setPertinence(0.5);

  float result = fuzzySet->getPertinence();

  EXPECT_EQ(result, 0.5);
}
Example #4
0
TEST(FuzzyRuleAntecedent, evaluate){
  FuzzyRuleAntecedent* fuzzyRuleAntecedent1 = new FuzzyRuleAntecedent();

  FuzzySet* riskMinimum = new FuzzySet(0, 10, 10, 20);
  riskMinimum->setPertinence(0.5);
  fuzzyRuleAntecedent1->joinSingle(riskMinimum);

  FuzzyRuleAntecedent* fuzzyRuleAntecedent2 = new FuzzyRuleAntecedent();
  FuzzySet* temperatureLow = new FuzzySet(0, 10, 10, 20);
  temperatureLow->setPertinence(0.0);
  FuzzySet* pressureSmall = new FuzzySet(0, 10, 10, 20);
  pressureSmall->setPertinence(0.5);
  fuzzyRuleAntecedent2->joinWithOR(temperatureLow, pressureSmall);

  FuzzyRuleAntecedent* fuzzyRuleAntecedent3 = new FuzzyRuleAntecedent();
  fuzzyRuleAntecedent3->joinWithAND(fuzzyRuleAntecedent1, fuzzyRuleAntecedent2);

  float result = fuzzyRuleAntecedent3->evaluate();

  EXPECT_GT(result, 0.0);
}