-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
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
Labels
No labels