예제 #1
0
        public void T6Implicate()
        {
            double axis = 0;

            LinguisticVariable =
                LinguisticVariable.fromJson(JsonLingVar);
            LinguisticVariable.RangeCalibration(1, 0.01);
            ExternalLVSetUp();
            string LogMsg = "[Implicate Test Result]\n==================================\n";
            string TmpLog;

            LinguisticVariable.ApplyRule(LingVars);
            LinguisticVariable.Implicate(1);
            foreach (LinguisticRule rule in LinguisticVariable.linguisticRules)
            {
                TmpLog  = "Linguistic : " + rule.membershipValue.linguistic + "\n";
                TmpLog += "Implication Method : " + FuzzyImplication.nameOf(rule.implicationM) + "\n";
                TmpLog += "Axis\t| Implication\n";
                axis    = rule.implData.StartAxis;
                foreach (double implRes in rule.implData.data)
                {
                    TmpLog += axis + "\t| " + implRes + "\n";
                    axis   += rule.implData.spacing;
                }
                LogMsg += TmpLog + "==================================\n";
                TmpLog  = "";
            }
            Debug.Log(LogMsg);
        }
예제 #2
0
        public void T3RangeCalibration()
        {
            LinguisticVariable =
                LinguisticVariable.fromJson(JsonLingVar);
            LinguisticVariable.RangeCalibration(1, 0.01);
            string LogMsg = "{Range Calibration Test Result]\n";

            LogMsg += string.Format(
                "{0,-15}\t| {1,-15}{2,-15}\t| {3,-15}{4,-15}\n",
                "Linguistic",
                "Start",
                "",
                "length",
                ""
                );
            LogMsg += "=============== <Before> / <After> ===============\n";
            foreach (MembershipFunction MF in LinguisticVariable.membershipFunctions)
            {
                MembershipFunction PreCalib = MFs.Find(
                    x =>
                    x.membershipValue.linguistic == MF.membershipValue.linguistic);
                LogMsg += string.Format(
                    "{0,-15}\t| {1,15} / {2,-15}\t| {3,15} / {4,-15}\n",
                    MF.membershipValue.linguistic,
                    PreCalib.start,
                    MF.start,
                    PreCalib.length,
                    MF.length
                    );
            }
            Debug.Log(LogMsg);
        }
예제 #3
0
 public void T8Defuzzify()
 {
     LinguisticVariable =
         LinguisticVariable.fromJson(JsonLingVar);
     LinguisticVariable.RangeCalibration(1, 0.01);
     ExternalLVSetUp();
     LinguisticVariable.ApplyRule(LingVars);
     LinguisticVariable.Implicate(1);
     Debug.Log(
         "[Defuzzification Test Result]\n" +
         "Method : " + Defuzzification.nameOf(dfuzz) +
         " | Result : " + dfuzz.defuzzify(LinguisticVariable.linguisticRules));
 }
예제 #4
0
 public void T4Fuzzification()
 {
     LinguisticVariable =
         LinguisticVariable.fromJson(JsonLingVar);
     LinguisticVariable.RangeCalibration(1, 0.01);
     LinguisticVariable.Fuzzification(15);
     Assert.AreEqual(
         1,
         LinguisticVariable.membershipFunctions.Find(
             mf => mf.membershipValue.linguistic.Equals("HardFight"))
         .membershipValue.fuzzy
         );
 }