summaryrefslogtreecommitdiff
path: root/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl')
-rw-r--r--examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl67
1 files changed, 67 insertions, 0 deletions
diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl
new file mode 100644
index 0000000..ad98f68
--- /dev/null
+++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl
@@ -0,0 +1,67 @@
+FUNCTION_BLOCK Sugeno-Tip-Calculator
+
+VAR_INPUT
+ FoodQuality: REAL;
+ Service: REAL;
+END_VAR
+
+VAR_OUTPUT
+ CheapTip: REAL;
+ AverageTip: REAL;
+ GenerousTip: REAL;
+END_VAR
+
+FUZZIFY FoodQuality
+ RANGE := (1.000 .. 10.000);
+ TERM Bad := Trapezoid 0.000 1.000 3.000 7.000;
+ TERM Good := Trapezoid 3.000 7.000 10.000 11.000;
+END_FUZZIFY
+
+FUZZIFY Service
+ RANGE := (1.000 .. 10.000);
+ TERM Bad := Trapezoid 0.000 1.000 3.000 7.000;
+ TERM Good := Trapezoid 3.000 7.000 10.000 11.000;
+END_FUZZIFY
+
+DEFUZZIFY CheapTip
+ RANGE := (5.000 .. 25.000);
+ TERM Low := 10.000;
+ TERM Medium := 15.000;
+ TERM High := 20.000;
+ METHOD : COGS;
+ DEFAULT := nan;
+END_DEFUZZIFY
+
+DEFUZZIFY AverageTip
+ RANGE := (5.000 .. 25.000);
+ TERM Low := 10.000;
+ TERM Medium := 15.000;
+ TERM High := 20.000;
+ METHOD : COGS;
+ DEFAULT := nan;
+END_DEFUZZIFY
+
+DEFUZZIFY GenerousTip
+ RANGE := (5.000 .. 25.000);
+ TERM Low := 10.000;
+ TERM Medium := 15.000;
+ TERM High := 20.000;
+ METHOD : COGS;
+ DEFAULT := nan;
+END_DEFUZZIFY
+
+RULEBLOCK
+ AND : EPROD;
+ RULE 1 : if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low
+ RULE 2 : if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium
+ RULE 3 : if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High
+ RULE 4 : if FoodQuality is Bad and Service is Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium
+ RULE 5 : if FoodQuality is Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High
+ RULE 6 : if FoodQuality is extremely Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is very High
+ RULE 7 : if FoodQuality is Bad and Service is Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High
+ RULE 8 : if FoodQuality is Good and Service is Good then CheapTip is Medium and AverageTip is Medium and GenerousTip is very High
+ RULE 9 : if FoodQuality is very Bad and Service is very Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High
+ RULE 10 : if FoodQuality is very very Good and Service is very very Good then CheapTip is High and AverageTip is very High and GenerousTip is extremely High
+END_RULEBLOCK
+
+END_FUNCTION_BLOCK