public void TestRuleEvaluation() { var desirability = this.GetDesirabilitySet(); var distance = this.GetDistanceToTargetSet(); var ammo = this.GetAmmoStatusSet(); var rocketLaucherRules = this.GetRocketLauncherRules(); FuzzyValueSet inputs = new FuzzyValueSet(); distance.Evaluate(200f, inputs); ammo.Evaluate(8f, inputs); IRuleEvaluator <Desirability> ruleEvaluator = new RuleEvaluator <Desirability>(); var result = ruleEvaluator.EvaluateRules(new List <FuzzyRule <Desirability> >(rocketLaucherRules), inputs); this.AssertFuzzyValue <Desirability>(Desirability.Desirable, 0.0f, result[0]); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.33f, result[1]); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.2f, result[2]); this.AssertFuzzyValue <Desirability>(Desirability.VeryDesirable, 0.0f, result[3]); this.AssertFuzzyValue <Desirability>(Desirability.VeryDesirable, 0.67f, result[4]); this.AssertFuzzyValue <Desirability>(Desirability.Desirable, 0.2f, result[5]); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.0f, result[6]); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.0f, result[7]); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.0f, result[8]); }
public void TestValueMergeByOr() { var desirability = this.GetDesirabilitySet(); var distance = this.GetDistanceToTargetSet(); var ammo = this.GetAmmoStatusSet(); var rocketLaucherRules = this.GetRocketLauncherRules(); FuzzyValueSet inputs = new FuzzyValueSet(); distance.Evaluate(200f, inputs); ammo.Evaluate(8f, inputs); IRuleEvaluator <Desirability> ruleEvaluator = new RuleEvaluator <Desirability>(); var ruleOutputs = ruleEvaluator.EvaluateRules(new List <FuzzyRule <Desirability> >(rocketLaucherRules), inputs); IFuzzyValuesMerger <Desirability> merger = new CachedOutputsFuzzyValuesMerger <Desirability>(); FuzzyValueSet mergedValues = new FuzzyValueSet(); merger.MergeValues(ruleOutputs, mergedValues); this.AssertFuzzyValue <Desirability>(Desirability.Undesirable, 0.33f, mergedValues.Get(Desirability.Undesirable)); this.AssertFuzzyValue <Desirability>(Desirability.Desirable, 0.2f, mergedValues.Get(Desirability.Desirable)); this.AssertFuzzyValue <Desirability>(Desirability.VeryDesirable, 0.67f, mergedValues.Get(Desirability.VeryDesirable)); }