Exemplo n.º 1
0
        public void TestFuzzySet_Simple()
        {
            FuzzyValueSet            set   = new FuzzyValueSet();
            FuzzyValue <Temperature> value = new FuzzyValue <Temperature>()
            {
                linguisticVariable = Temperature.Hot, membershipDegree = 0.5f
            };

            set.Set(value);
            var result = set.Get(Temperature.Hot);

            Assert.AreEqual(Temperature.Hot, result.linguisticVariable);
            Assert.AreEqual(0.5f, result.membershipDegree);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        public void TestFuzzySet_DiffEnum_A()
        {
            FuzzyValueSet            set     = new FuzzyValueSet();
            FuzzyValue <Temperature> value01 = new FuzzyValue <Temperature>()
            {
                linguisticVariable = Temperature.Hot, membershipDegree = 0.5f
            };
            FuzzyValue <Command> value02 = new FuzzyValue <Command>()
            {
                linguisticVariable = Command.Heat, membershipDegree = 1f
            };

            set.Set(value02);
            set.Set(value01);
            var result = set.Get(Temperature.Hot);

            Assert.AreEqual(Temperature.Hot, result.linguisticVariable);
            Assert.AreEqual(0.5f, result.membershipDegree);
        }
Exemplo n.º 4
0
        public float Defuzze(FuzzySet <T> outputVariableSet, FuzzyValueSet fuzzyValues)
        {
            float             sumRepValConf = 0.0f;
            float             sumConf       = 0.0f;
            FuzzyVariable <T> fuzzyVar      = null;
            FuzzyValue <T>    value;

            for (int i = 0; i < this.outputEnumValues.Length; i++)
            {
                T linguisticVar = this.outputEnumValues[i];
                value = fuzzyValues.Get(linguisticVar);
                if (value.Confidence <= 0.0f)
                {
                    continue;
                }
                fuzzyVar       = outputVariableSet.Get(linguisticVar);
                sumRepValConf += (fuzzyVar.MembershipFunction.RepresentativeValue * value.Confidence);
                sumConf       += value.Confidence;
            }
            return(sumRepValConf / sumConf);
        }
Exemplo n.º 5
0
        public float Evaluate(FuzzyValueSet set)
        {
            var fuzzyVar = set.Get(this.LinguisticVariable);

            return(MathFz.Clamp01(fuzzyVar.membershipDegree));
        }