Skip to content

Error in membership function #4

@damiantestkonto

Description

@damiantestkonto

In submited example I added for loop to iterate through all water temperatures:

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

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

// ------------------------ my edit ------------------------
for (int i = 0; i <= 100; i++)
{
    var result = fuzzyEngine.Defuzzify(new { water = i });
    Console.WriteLine($"water = {i}    result= {result}");
}
// ------------------------ my edit ------------------------

Which give me:

water = 0      result = 50
water = 1      result = 50
water = 2      result = 50
water = 3      result = 50
water = 4      result = 50
water = 5      result = 50
water = 6      result = 50
water = 7      result = 50
water = 8      result = 50
water = 9      result = 50
water = 10     result = 50
water = 11     result = 50
water = 12     result = 50
water = 13     result = 50
water = 14     result = 50
water = 15     result = 50
water = 16     result = 50
water = 17     result = 50
water = 18     result = 50
water = 19     result = 50
water = 20     result = 50
water = 21     result = 50
water = 22     result = 50
water = 23     result = 50
water = 24     result = 50
water = 25     result = 50
water = 26     result = 50
water = 27     result = 50
water = 28     result = 50
water = 29     result = 50
water = 30     result = 50
water = 31     result = 50
water = 32     result = 50
water = 33     result = 50
water = 34     result = 50
water = 35     result = 50
water = 36     result = 50
water = 37     result = 50
water = 38     result = 50
water = 39     result = 50
water = 40     result = 50
water = 41     result = 50
water = 42     result = 50
water = 43     result = 50
water = 44     result = 50
water = 45     result = 50
water = 46     result = 50
water = 47     result = 50
water = 48     result = 50
water = 49     result = 50
water = 50     result = 50
water = 51     result = 49.193548387096776
water = 52     result = 48.4375
water = 53     result = 47.72727272727273
water = 54     result = 47.05882352941176
water = 55     result = 46.42857142857144
water = 56     result = 45.833333333333336
water = 57     result = 45.27027027027027
water = 58     result = 44.73684210526316
water = 59     result = 44.23076923076923
water = 60     result = 43.75000000000001
water = 61     result = 43.29268292682927
water = 62     result = 42.857142857142854
water = 63     result = 42.44186046511628
water = 64     result = 42.04545454545455
water = 65     result = 41.666666666666664
water = 66     result = 41.30434782608696
water = 67     result = 40.95744680851064
water = 68     result = 40.625
water = 69     result = 40.30612244897959
water = 70     result = 40
water = 71     result = 39.705882352941174
water = 72     result = 39.42307692307693
water = 73     result = 39.15094339622641
water = 74     result = 38.888888888888886
water = 75     result = 38.63636363636364
water = 76     result = 38.39285714285714
water = 77     result = 38.1578947368421
water = 78     result = 37.931034482758626
water = 79     result = 37.71186440677966
water = 80     result = 37.5
water = 81     result = 37.5
water = 82     result = 37.5
water = 83     result = 37.5
water = 84     result = 37.5
water = 85     result = 37.5
water = 86     result = 37.5
water = 87     result = 37.5
water = 88     result = 37.5
water = 89     result = 37.5
water = 90     result = 37.5
water = 91     result = 37.5
water = 92     result = 37.5
water = 93     result = 37.5
water = 94     result = 37.5
water = 95     result = 37.5
water = 96     result = 37.5
water = 97     result = 37.5
water = 98     result = 37.5
water = 99     result = 37.5
water = 100    result = 37.5

Why there are no result between 50 and 75? Also, there are no result between 25 and 50.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions