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); } }
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); } }