예제 #1
0
        public ControladorDifuso()
        {
            //Variables Linguisticas
            // Edad
            var vyoung = Age.MembershipFunctions.AddTriangle("muy joven", 15, 15, 18);
            var young  = Age.MembershipFunctions.AddTriangle("joven", 15, 18, 30);
            var adult  = Age.MembershipFunctions.AddTriangle("adulto", 18, 30, 50);
            var mature = Age.MembershipFunctions.AddTriangle("mayor", 30, 50, 100);
            // Presupuesto
            var low    = Budget.MembershipFunctions.AddTriangle("bajo", 1000, 1000, 10000);
            var medium = Budget.MembershipFunctions.AddTriangle("medio", 7000, 10000, 35000);
            var high   = Budget.MembershipFunctions.AddTriangle("alto", 28000, 35000, 70000);
            var vhigh  = Budget.MembershipFunctions.AddTriangle("muy alto", 60000, 70000, 1000000);
            // Alcance
            var national      = Reach.MembershipFunctions.AddTriangle("nacional", 0, 50, 100);
            var latin         = Reach.MembershipFunctions.AddTriangle("latino", 50, 100, 150);
            var international = Reach.MembershipFunctions.AddTriangle("internacional", 100, 150, 200);


            //Reglas
            // Edad/Presupuesto = Alcance
            // Muy joven
            // Base de conocimiento
            Rules.Add(Rule.If(Age.Is(vyoung).And(Budget.Is(low))).Then(Reach.Is(national)));                    //rule1
            Rules.Add(Rule.If(Age.Is(vyoung).And(Budget.Is(medium))).Then(Reach.Is(national)));                 //rule2
            Rules.Add(Rule.If(Age.Is(vyoung).And(Budget.Is(high))).Then(Reach.Is(latin)));                      //rule3
            Rules.Add(Rule.If(Age.Is(vyoung).And(Budget.Is(vhigh))).Then(Reach.Is(international)));             //rule4
            // Joven
            Rules.Add(Rule.If(Age.Is(young).And(Budget.Is(low))).Then(Reach.Is(national)));                     //rule5
            Rules.Add(Rule.If(Age.Is(young).And(Budget.Is(medium))).Then(Reach.Is(latin)));                     //rule6
            Rules.Add(Rule.If(Age.Is(young).And(Budget.Is(high))).Then(Reach.Is(latin)));                       //rule7
            Rules.Add(Rule.If(Age.Is(young).And(Budget.Is(vhigh))).Then(Reach.Is(international)));              //rule8
            // Adulto
            Rules.Add(Rule.If(Age.Is(adult).And(Budget.Is(low))).Then(Reach.Is(national)));                     //rule9
            Rules.Add(Rule.If(Age.Is(adult).And(Budget.Is(medium))).Then(Reach.Is(latin)));                     //rule10
            Rules.Add(Rule.If(Age.Is(adult).And(Budget.Is(high))).Then(Reach.Is(international)));               //rule11
            Rules.Add(Rule.If(Age.Is(adult).And(Budget.Is(vhigh))).Then(Reach.Is(international)));              //rule12
            // Mayor
            Rules.Add(Rule.If(Age.Is(mature).And(Budget.Is(low))).Then(Reach.Is(national)));                    //rule13
            Rules.Add(Rule.If(Age.Is(mature).And(Budget.Is(medium))).Then(Reach.Is(latin)));                    //rule14
            Rules.Add(Rule.If(Age.Is(mature).And(Budget.Is(high))).Then(Reach.Is(international)));              //rule15
            Rules.Add(Rule.If(Age.Is(mature).And(Budget.Is(vhigh))).Then(Reach.Is(international)));             //rule16


            //Agrega las reglas al motor de fusificaación
            foreach (FuzzyRule rule in Rules)
            {
                FuzzyEngine.Rules.Add(rule);
            }
        }
예제 #2
0
        public ControladorDifuso2()
        {
            //Variables Linguisticas
            // Proposito
            var familiar = Purpose.MembershipFunctions.AddTriangle("familiar", 0, 50, 100);
            var romantic = Purpose.MembershipFunctions.AddTriangle("romantico", 50, 100, 150);
            var friends  = Purpose.MembershipFunctions.AddTriangle("amigos", 100, 150, 200);
            // Subconjuntos
            var conjunto1 = Sublist.MembershipFunctions.AddTriangle("conjunto 1", 0, 50, 100);
            var conjunto2 = Sublist.MembershipFunctions.AddTriangle("conjunto 2", 50, 100, 150);
            var conjunto3 = Sublist.MembershipFunctions.AddTriangle("conjunto 3", 100, 150, 200);
            var conjunto4 = Sublist.MembershipFunctions.AddTriangle("conjunto 4", 150, 200, 250);
            var conjunto5 = Sublist.MembershipFunctions.AddTriangle("conjunto 5", 200, 250, 300);
            var conjunto6 = Sublist.MembershipFunctions.AddTriangle("conjunto 6", 250, 300, 350);
            var conjunto7 = Sublist.MembershipFunctions.AddTriangle("conjunto 7", 300, 350, 400);
            var conjunto8 = Sublist.MembershipFunctions.AddTriangle("conjunto 8", 350, 400, 450);
            var conjunto9 = Sublist.MembershipFunctions.AddTriangle("conjunto 9", 400, 450, 500);
            // Alcance
            var national      = Reach.MembershipFunctions.AddTriangle("nacional", 0, 50, 100);
            var latin         = Reach.MembershipFunctions.AddTriangle("latino", 50, 100, 150);
            var international = Reach.MembershipFunctions.AddTriangle("internacional", 100, 150, 200);

            //Reglas
            //Proposito/Alcance = Subconjuntos
            // Reglas que proporcionan la inferencia para los resultados
            Rules.Add(Rule.If(Purpose.Is(familiar).And(Reach.Is(national))).Then(Sublist.Is(conjunto1)));       //rule17
            Rules.Add(Rule.If(Purpose.Is(familiar).And(Reach.Is(latin))).Then(Sublist.Is(conjunto2)));          //rule18
            Rules.Add(Rule.If(Purpose.Is(familiar).And(Reach.Is(international))).Then(Sublist.Is(conjunto3)));  //rule19
            Rules.Add(Rule.If(Purpose.Is(romantic).And(Reach.Is(national))).Then(Sublist.Is(conjunto4)));       //rule20
            Rules.Add(Rule.If(Purpose.Is(romantic).And(Reach.Is(latin))).Then(Sublist.Is(conjunto5)));          //rule21
            Rules.Add(Rule.If(Purpose.Is(romantic).And(Reach.Is(international))).Then(Sublist.Is(conjunto6)));  //rule22
            Rules.Add(Rule.If(Purpose.Is(friends).And(Reach.Is(national))).Then(Sublist.Is(conjunto7)));        //rule23
            Rules.Add(Rule.If(Purpose.Is(friends).And(Reach.Is(latin))).Then(Sublist.Is(conjunto8)));           //rule24
            Rules.Add(Rule.If(Purpose.Is(friends).And(Reach.Is(international))).Then(Sublist.Is(conjunto9)));   //rule25

            //Adding the rules to the Fuzzy Engine
            foreach (FuzzyRule rule in Rules)
            {
                FuzzyEngine.Rules.Add(rule);
            }
        }