コード例 #1
0
ファイル: WeaponsExample.cs プロジェクト: gtjeffw/FuzzyLogic
        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]);
        }
コード例 #2
0
ファイル: WeaponsExample.cs プロジェクト: gtjeffw/FuzzyLogic
        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));
        }