Example #1
0
        public void UsageExample_Success()
        {
            //Arrange
            LinguisticVariable water = new LinguisticVariable("Water");
            var cold = water.MembershipFunctions.AddTrapezoid("Cold", 0, 0, 20, 40);
            var warm = water.MembershipFunctions.AddTriangle("Warm", 30, 50, 70);
            var hot  = water.MembershipFunctions.AddTrapezoid("Hot", 50, 80, 100, 100);

            LinguisticVariable power = new LinguisticVariable("Power");
            var low  = power.MembershipFunctions.AddTriangle("Low", 0, 25, 50);
            var high = power.MembershipFunctions.AddTriangle("High", 25, 50, 75);

            IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Default();

            var rule1 = Rule.If(water.Is(cold).Or(water.Is(warm))).Then(power.Is(high));
            var rule2 = Rule.If(water.Is(hot)).Then(power.Is(low));

            fuzzyEngine.Rules.Add(rule1, rule2);

            //Act
            var result = fuzzyEngine.Defuzzify(new { water = 60 });

            //Assert
            Assert.That(Math.Floor(result), Is.EqualTo(Math.Floor(40.0)));

            //Extra
            System.Diagnostics.Debug.WriteLine(result);
        }
Example #2
0
        public void Factory_EngineType_Success(FuzzyEngineType engineType, Type defuzzType)
        {
            //Arrange
            var factory = new FuzzyEngineFactory();

            //Act
            var engine = factory.Create(engineType);

            //Assert
            Assert.That(engine, Is.InstanceOf <FuzzyEngine>());
            Assert.That(engine.Defuzzification, Is.InstanceOf(defuzzType));
        }
Example #3
0
        private static void Zad1()
        {
            var insolationDictionary = new Dictionary <string, double>()
            {
                { "Warszawa", 0.6 },
                { "Kraków", 1.0 },
                { "Gdańsk", 0.9 },
                { "Wrocław", 0.8 },
                { "Katowice", 0.3 },
                { "Poznań", 0.7 },
                { "Gliwice", 0.3 },
            };

            var pollutionDictionary = new Dictionary <string, double>
            {
                { "Warszawa", 0.3 },
                { "Kraków", 0.1 },
                { "Gdańsk", 0.9 },
                { "Wrocław", 0.7 },
                { "Katowice", 0.1 },
                { "Poznań", 0.6 },
                { "Gliwice", 0.1 },
            };

            var insolation     = new LinguisticVariable("insolation");
            var lowInsolation  = insolation.MembershipFunctions.AddTrapezoid("lowInsolation", 0, 0.1, 0.6, 0.8);
            var highInsolation = insolation.MembershipFunctions.AddTrapezoid("highInsolation", 0.6, 0.8, 0.9, 1);

            var pollution     = new LinguisticVariable("pollution");
            var lowPollution  = pollution.MembershipFunctions.AddTrapezoid("lowPollution", 0, 0.1, 0.3, 0.5);
            var highPollution = pollution.MembershipFunctions.AddTrapezoid("highPollution", 0.3, 0.5, 0.9, 1);

            var humanFriendly    = new LinguisticVariable("humanFriendly");
            var isHumanFriendly  = humanFriendly.MembershipFunctions.AddTrapezoid("isHumanFriendly", 0, 0.1, 0.4, 0.6);
            var notHumanFriendly = humanFriendly.MembershipFunctions.AddTrapezoid("notHumanFriendly", 0.4, 0.6, 0.9, 1);

            IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Default();

            var rule1 = Rule.If(insolation.Is(highInsolation).And(pollution.Is(lowPollution))).Then(humanFriendly.Is(isHumanFriendly));
            var rule2 = Rule.If(insolation.Is(lowInsolation).And(pollution.Is(highPollution))).Then(humanFriendly.Is(notHumanFriendly));

            fuzzyEngine.Rules.Add(rule1, rule2);

            foreach (var city in insolationDictionary.Keys)
            {
                Console.WriteLine($"{city}: {fuzzyEngine.Defuzzify(new { insolation = insolationDictionary[city], pollution = pollutionDictionary[city] })}");
            }
        }
Example #4
0
    public double KillerFuzzy(double killAmount, double killQuest)
    {
        //Killer Fuzzy Set
        LinguisticVariable killer = new LinguisticVariable("Killer");
        var novice     = killer.MembershipFunctions.AddTriangle("Novice", 0, 3, 3);
        var advance    = killer.MembershipFunctions.AddTriangle("Advance", 2, 5, 5);
        var proficient = killer.MembershipFunctions.AddTriangle("Proficient", 4, 8, 8);
        var expert     = killer.MembershipFunctions.AddTrapezoid("Expert", 7, 8, 10, 10);

        //Support Fuzzy Set
        LinguisticVariable amount = new LinguisticVariable("Amount");
        var low    = amount.MembershipFunctions.AddTriangle("Low", 1, 50, 50);
        var medium = amount.MembershipFunctions.AddTriangle("Medium", 40, 80, 80);
        var high   = amount.MembershipFunctions.AddTrapezoid("High", 70, 80, 1000, 1000);

        LinguisticVariable quest = new LinguisticVariable("Quest");
        var little  = quest.MembershipFunctions.AddTriangle("Little", 1, 3, 3);
        var average = quest.MembershipFunctions.AddTriangle("Average", 2, 5, 5);
        var lot     = quest.MembershipFunctions.AddTrapezoid("Lot", 7, 8, 10, 10);

        //time

        /*LinguisticVariable time = new LinguisticVariable("Time");
         * var slow = kill.MembershipFunctions.AddTrapezoid("Slow", 0, 0.006, 0.008, 0.008);
         * var normal = kill.MembershipFunctions.AddTriangle("Normal", 0.007 , 0.16, 0.16);
         * var fast = kill.MembershipFunctions.AddTriangle("Fast", 0.15, 1, 1);*/

        IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Create(new MoMDefuzzification());


        var rule1 = Rule.If(amount.Is(low).And(quest.Is(little))).Then(killer.Is(novice));
        var rule2 = Rule.If(amount.Is(low).And(quest.Is(average))).Then(killer.Is(advance));
        var rule3 = Rule.If(amount.Is(low).And(quest.Is(lot))).Then(killer.Is(advance));
        var rule4 = Rule.If(amount.Is(medium).And(quest.Is(little))).Then(killer.Is(novice));
        var rule5 = Rule.If(amount.Is(medium).And(quest.Is(average))).Then(killer.Is(advance));
        var rule6 = Rule.If(amount.Is(medium).And(quest.Is(lot))).Then(killer.Is(proficient));
        var rule7 = Rule.If(amount.Is(high).And(quest.Is(little))).Then(killer.Is(advance));
        var rule8 = Rule.If(amount.Is(high).And(quest.Is(average))).Then(killer.Is(proficient));
        var rule9 = Rule.If(amount.Is(high).And(quest.Is(lot))).Then(killer.Is(expert));

        fuzzyEngine.Rules.Add(rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9);

        var result = fuzzyEngine.Defuzzify(new { amount = killAmount, quest = killQuest });


        return(result);
    }
Example #5
0
        public void Test1()
        {
            LinguisticVariable water = new LinguisticVariable("Water");
            var cold = water.MembershipFunctions.AddTrapezoid("Cold", 0, 0, 20, 40);
            var warm = water.MembershipFunctions.AddTriangle("Warm", 30, 50, 70);
            var hot = water.MembershipFunctions.AddTrapezoid("Hot", 50, 80, 100, 100);

            LinguisticVariable power = new LinguisticVariable("Power");
            var low = power.MembershipFunctions.AddTriangle("Low", 0, 25, 50);
            var high = power.MembershipFunctions.AddTriangle("High", 25, 50, 75);

            IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Default();

            fuzzyEngine.Rules.If(water.Is(cold).Or(water.Is(warm))).Then(power.Is(high));
            fuzzyEngine.Rules.If(water.Is(hot)).Then(power.Is(low));

            var result = fuzzyEngine.Defuzzify(new { water = 60 });
        }
Example #6
0
    public double ExplorerFuzzy(double placesTravel, double exploreQuest)
    {
        //Explorer Characteristic Fuzzy Set

        LinguisticVariable travel = new LinguisticVariable("Travel");
        var low    = travel.MembershipFunctions.AddTriangle("Low", 1, 10, 10);
        var medium = travel.MembershipFunctions.AddTriangle("Medium", 8, 16, 16);
        var high   = travel.MembershipFunctions.AddTrapezoid("High", 15, 30, 100, 100);

        LinguisticVariable explore = new LinguisticVariable("Explore");
        var little  = explore.MembershipFunctions.AddTriangle("Little", 1, 3, 3);
        var average = explore.MembershipFunctions.AddTriangle("Average", 2, 5, 5);
        var lot     = explore.MembershipFunctions.AddTrapezoid("Lot", 7, 8, 10, 10);

        LinguisticVariable explorer = new LinguisticVariable("Achiever");
        var novice     = explorer.MembershipFunctions.AddTriangle("Novice", 0, 3, 3);
        var advance    = explorer.MembershipFunctions.AddTriangle("Advance", 2, 5, 5);
        var proficient = explorer.MembershipFunctions.AddTriangle("Proficient", 4, 8, 8);
        var expert     = explorer.MembershipFunctions.AddTrapezoid("Expert", 7, 8, 10, 10);

        IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Create(new MoMDefuzzification());

        var rule1 = Rule.If(travel.Is(low).And(explore.Is(little))).Then(explorer.Is(novice));
        var rule2 = Rule.If(travel.Is(low).And(explore.Is(average))).Then(explorer.Is(advance));
        var rule3 = Rule.If(travel.Is(low).And(explore.Is(lot))).Then(explorer.Is(advance));
        var rule4 = Rule.If(travel.Is(medium).And(explore.Is(little))).Then(explorer.Is(novice));
        var rule5 = Rule.If(travel.Is(medium).And(explore.Is(average))).Then(explorer.Is(advance));
        var rule6 = Rule.If(travel.Is(medium).And(explore.Is(lot))).Then(explorer.Is(proficient));
        var rule7 = Rule.If(travel.Is(high).And(explore.Is(little))).Then(explorer.Is(advance));
        var rule8 = Rule.If(travel.Is(high).And(explore.Is(average))).Then(explorer.Is(proficient));
        var rule9 = Rule.If(travel.Is(high).And(explore.Is(lot))).Then(explorer.Is(expert));

        fuzzyEngine.Rules.Add(rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9);

        var result = fuzzyEngine.Defuzzify(new { travel = placesTravel, explore = exploreQuest });

        return(result);
    }
Example #7
0
    public double AchieverFuzzy(double questFinished, double avgDifficulty)
    {
        //Achiever Characteristic Fuzzy Set

        LinguisticVariable amount = new LinguisticVariable("Amount");
        var low    = amount.MembershipFunctions.AddTriangle("Low", 1, 10, 10);
        var medium = amount.MembershipFunctions.AddTriangle("Medium", 8, 16, 16);
        var high   = amount.MembershipFunctions.AddTrapezoid("High", 15, 30, 100, 100);

        LinguisticVariable difficulty = new LinguisticVariable("Difficulty");
        var easy   = amount.MembershipFunctions.AddTriangle("Low", 1, 2, 2);
        var normal = amount.MembershipFunctions.AddTriangle("Medium", 2, 3, 3);
        var hard   = amount.MembershipFunctions.AddTrapezoid("High", 3, 4, 5, 5);

        LinguisticVariable achiever = new LinguisticVariable("Achiever");
        var novice     = achiever.MembershipFunctions.AddTriangle("Novice", 0, 3, 3);
        var advance    = achiever.MembershipFunctions.AddTriangle("Advance", 2, 5, 5);
        var proficient = achiever.MembershipFunctions.AddTriangle("Proficient", 4, 8, 8);
        var expert     = achiever.MembershipFunctions.AddTrapezoid("Expert", 7, 8, 10, 10);

        IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Create(new MoMDefuzzification());

        var rule1 = Rule.If(amount.Is(low).And(difficulty.Is(easy))).Then(achiever.Is(novice));
        var rule2 = Rule.If(amount.Is(low).And(difficulty.Is(normal))).Then(achiever.Is(advance));
        var rule3 = Rule.If(amount.Is(low).And(difficulty.Is(hard))).Then(achiever.Is(advance));
        var rule4 = Rule.If(amount.Is(medium).And(difficulty.Is(easy))).Then(achiever.Is(novice));
        var rule5 = Rule.If(amount.Is(medium).And(difficulty.Is(normal))).Then(achiever.Is(advance));
        var rule6 = Rule.If(amount.Is(medium).And(difficulty.Is(hard))).Then(achiever.Is(proficient));
        var rule7 = Rule.If(amount.Is(high).And(difficulty.Is(easy))).Then(achiever.Is(advance));
        var rule8 = Rule.If(amount.Is(high).And(difficulty.Is(normal))).Then(achiever.Is(proficient));
        var rule9 = Rule.If(amount.Is(high).And(difficulty.Is(hard))).Then(achiever.Is(expert));

        fuzzyEngine.Rules.Add(rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9);

        var result = fuzzyEngine.Defuzzify(new { amount = questFinished, difficulty = avgDifficulty });

        return(result);
    }
Example #8
0
    public double SocializerFuzzy(double activity, double interaction)
    {
        //Socializer Characteristic Fuzzy Set

        LinguisticVariable amount = new LinguisticVariable("Amount");
        var low    = amount.MembershipFunctions.AddTriangle("Low", 1, 10, 10);
        var medium = amount.MembershipFunctions.AddTriangle("Medium", 8, 16, 16);
        var high   = amount.MembershipFunctions.AddTrapezoid("High", 15, 30, 100, 100);

        LinguisticVariable interact = new LinguisticVariable("Interact");
        var little  = interact.MembershipFunctions.AddTriangle("Little", 1, 3, 3);
        var average = interact.MembershipFunctions.AddTriangle("Average", 2, 5, 5);
        var lot     = interact.MembershipFunctions.AddTrapezoid("Lot", 7, 8, 10, 10);

        LinguisticVariable socializer = new LinguisticVariable("Socializer");
        var novice     = socializer.MembershipFunctions.AddTriangle("Novice", 0, 3, 3);
        var advance    = socializer.MembershipFunctions.AddTriangle("Advance", 2, 5, 5);
        var proficient = socializer.MembershipFunctions.AddTriangle("Proficient", 4, 8, 8);
        var expert     = socializer.MembershipFunctions.AddTrapezoid("Expert", 7, 8, 10, 10);

        IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Create(new MoMDefuzzification());

        var rule1 = Rule.If(amount.Is(low).And(interact.Is(little))).Then(socializer.Is(novice));
        var rule2 = Rule.If(amount.Is(low).And(interact.Is(average))).Then(socializer.Is(advance));
        var rule3 = Rule.If(amount.Is(low).And(interact.Is(lot))).Then(socializer.Is(advance));
        var rule4 = Rule.If(amount.Is(medium).And(interact.Is(little))).Then(socializer.Is(novice));
        var rule5 = Rule.If(amount.Is(medium).And(interact.Is(average))).Then(socializer.Is(advance));
        var rule6 = Rule.If(amount.Is(medium).And(interact.Is(lot))).Then(socializer.Is(proficient));
        var rule7 = Rule.If(amount.Is(high).And(interact.Is(little))).Then(socializer.Is(advance));
        var rule8 = Rule.If(amount.Is(high).And(interact.Is(average))).Then(socializer.Is(proficient));
        var rule9 = Rule.If(amount.Is(high).And(interact.Is(lot))).Then(socializer.Is(expert));

        fuzzyEngine.Rules.Add(rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9);

        var result = fuzzyEngine.Defuzzify(new { amount = activity, interact = interaction });

        return(result);
    }
        public static double CalcularPoliza(double inputEnfermedadesActuales, double inputEnfermedadesHistoricas, double inputEstiloDeVida, double inputOcupacion)
        {
            LinguisticVariable enfermedadesActuales = new LinguisticVariable("EnfermedadesActuales");
            var sano = enfermedadesActuales.MembershipFunctions.AddTrapezoid("Sano", 0, 0, 20, 40);
            var regular = enfermedadesActuales.MembershipFunctions.AddTriangle("Regular", 30, 50, 70);
            var malo = enfermedadesActuales.MembershipFunctions.AddTrapezoid("Malo", 60, 80, 100, 100);

            LinguisticVariable enfermedadesHistoricas = new LinguisticVariable("EnfermedadesHistoricas");
            var bajas = enfermedadesHistoricas.MembershipFunctions.AddTrapezoid("Bajas", 0, 0, 20, 40);
            var normales = enfermedadesHistoricas.MembershipFunctions.AddTriangle("Normales", 30, 50, 70);
            var altas = enfermedadesHistoricas.MembershipFunctions.AddTrapezoid("Altas", 60, 80, 100, 100);

            LinguisticVariable estiloVida = new LinguisticVariable("EstiloVida");
            var tranquilo = estiloVida.MembershipFunctions.AddTrapezoid("Tranquilo", 0, 0, 20, 40);
            var moderado = estiloVida.MembershipFunctions.AddTriangle("Moderado", 30, 50, 70);
            var reisgozo = estiloVida.MembershipFunctions.AddTrapezoid("Riesgozo", 60, 80, 100, 100);

            LinguisticVariable ocupacion = new LinguisticVariable("Ocupacion");
            var ocupacionNormal = ocupacion.MembershipFunctions.AddTrapezoid("Normal", 0, 0, 20, 40);
            var ocupacionBajoRiezgo = ocupacion.MembershipFunctions.AddTriangle("Riesgoza", 30, 50, 70);
            var ocupacionAltoRiezgo = ocupacion.MembershipFunctions.AddTrapezoid("AltoRiezgo", 60, 80, 100, 100);

            LinguisticVariable estadoAseguramiento = new LinguisticVariable("EstadoAseguramiento");
            var coberturaTotal = estadoAseguramiento.MembershipFunctions.AddTrapezoid("Total", 0, 0, 17.5, 30);
            var coberturaModerada = estadoAseguramiento.MembershipFunctions.AddTriangle("Moderada", 20, 37.5, 55);
            var coberturaBaja = estadoAseguramiento.MembershipFunctions.AddTriangle("Baja", 45, 62.5, 80);
            var coberturaNula = estadoAseguramiento.MembershipFunctions.AddTrapezoid("Nula", 70, 87.5, 100, 100);

            IFuzzyEngine fuzzyEngine = new FuzzyEngineFactory().Create(new CoGDefuzzification());

            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                .If(estiloVida.Is(reisgozo).Or(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaNula));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                .If(estiloVida.Is(reisgozo).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaNula));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                .If(estiloVida.Is(moderado).And(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaNula));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                .If(estiloVida.Is(moderado).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                .If(estiloVida.Is(moderado).And(ocupacion.Is(ocupacionNormal)))
                .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                  .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                  .If(estiloVida.Is(tranquilo).And(ocupacion.Is(ocupacionBajoRiezgo)))
                  .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                  .If(enfermedadesActuales.Is(malo).Or(enfermedadesHistoricas.Is(altas)))
                  .If(estiloVida.Is(tranquilo).And(ocupacion.Is(ocupacionNormal)))
                  .Then(estadoAseguramiento.Is(coberturaModerada));

            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(reisgozo)).And(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaNula));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(reisgozo)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaModerada));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(tranquilo)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaModerada));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionNormal)))
                .Then(estadoAseguramiento.Is(coberturaModerada));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(regular).Or(enfermedadesHistoricas.Is(normales)).And(estiloVida.Is(tranquilo)).And(ocupacion.Is(ocupacionNormal)))
                .Then(estadoAseguramiento.Is(coberturaTotal));

            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(reisgozo)).And(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaBaja));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionAltoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaModerada));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(reisgozo)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaModerada));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaTotal));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(tranquilo)).And(ocupacion.Is(ocupacionBajoRiezgo)))
                .Then(estadoAseguramiento.Is(coberturaTotal));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)).And(estiloVida.Is(moderado)).And(ocupacion.Is(ocupacionNormal)))
                .Then(estadoAseguramiento.Is(coberturaTotal));
            fuzzyEngine.Rules
                .If(enfermedadesActuales.Is(sano).Or(enfermedadesHistoricas.Is(bajas)))
                .If(estiloVida.Is(tranquilo).And(ocupacion.Is(ocupacionNormal)))
                .Then(estadoAseguramiento.Is(coberturaTotal));

            var result = fuzzyEngine.Defuzzify(new {
                enfermedadesActuales = inputEnfermedadesActuales,
                enfermedadesHistoricas = inputEnfermedadesHistoricas,
                estiloVida = inputEstiloDeVida,
                ocupacion = inputOcupacion
            });

            return result;
        }