Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. FUNCTION_BLOCK disease
  2.  
  3. VAR_INPUT
  4. temperature: REAL;
  5. sneezing: REAL;
  6. cough: REAL;
  7. sore_throat: REAL;
  8. heavy_breathing: REAL;
  9. headache: REAL;
  10. chest_pain: REAL;
  11. runny_nose: REAL;
  12. bloody_cough: REAL;
  13. END_VAR
  14.  
  15. VAR_OUTPUT
  16. decision: REAL;
  17. END_VAR
  18.  
  19. FUZZIFY temperature
  20. TERM low := TRAPE 0 28 32 36;
  21. TERM normal := TRAPE 35.8 36.5 36.9 37;
  22. TERM high := TRAPE 36.5 40 40 43.5;
  23. END_FUZZIFY
  24.  
  25. FUZZIFY sneezing
  26. TERM barely := (0, 1.0) (3, 0.0);
  27. TERM little := (2, 0.0) (3, 1.0) (4, 1.0) (5, 0.0);
  28. TERM often := (4, 0.0) (7, 1.0) (8, 1.0) (10, 0.0);
  29. END_FUZZIFY
  30.  
  31. FUZZIFY cough
  32. TERM little := (2, 0.0) (3, 1.0) (4, 1.0) (5, 0.0);
  33. TERM often := (4, 0.0) (6, 1.0) (7, 1.0) (8, 0.0);
  34. TERM all_the_time := (7, 0.0) (8, 1.0) (9, 1.0) (10, 0.0);
  35. END_FUZZIFY
  36.  
  37. FUZZIFY sore_throat
  38. TERM not_at_all := TRAPE 0 2 3 4;
  39. TERM little := TRAPE 3 4 6 7;
  40. TERM very := TRAPE 6 7 9 10;
  41. END_FUZZIFY
  42.  
  43. FUZZIFY heavy_breathing
  44. TERM not_at_all := GBELL 2 3 2;
  45. TERM slight := GBELL 2 3 5;
  46. TERM very := GBELL 2 3 8;
  47. END_FUZZIFY
  48.  
  49. FUZZIFY headache
  50. TERM not_at_all := TRIAN 0 2.5 5;
  51. TERM little := TRIAN 2.5 5 7.5;
  52. TERM very := TRIAN 6 9 10;
  53. END_FUZZIFY
  54.  
  55. FUZZIFY chest_pain
  56. TERM not_at_all := TRIAN 0 2.5 5;
  57. TERM little := TRIAN 2.5 5 7.5;
  58. TERM very := TRIAN 6 9 10;
  59. END_FUZZIFY
  60.  
  61. FUZZIFY runny_nose
  62. TERM not_at_all := TRAPE 0 1 2 3;
  63. TERM little := TRAPE 2 3 4 5;
  64. TERM often := TRAPE 4 5 6 7;
  65. TERM constant := TRAPE 6 7 8 10;
  66. END_FUZZIFY
  67.  
  68. FUZZIFY bloody_cough
  69. TERM not_at_all := TRIAN 0 2.5 5;
  70. TERM little := TRIAN 2.5 5 7.5;
  71. TERM very := TRIAN 6 9 10;
  72. END_FUZZIFY
  73.  
  74. DEFUZZIFY decision
  75. TERM cold := GBELL 2 2 2;
  76. TERM flu := GBELL 2 2 5;
  77. TERM allergy := GBELL 2 2 8;
  78. TERM bronhitis := GBELL 2 2 11;
  79. TERM pneumonia := GBELL 2 2 14;
  80. TERM lung_cancer := GBELL 2 2 17;
  81. TERM tuberculosis := GBELL 2 2 20;
  82. TERM laryngitis := GBELL 2 2 23;
  83. TERM heartAttack := GBELL 2 2 26;
  84. TERM outOfShape := GBELL 2 2 29;
  85. // Use 'Center Of Gravity' defuzzification method
  86. METHOD : COG;
  87. // Default value is 0 (if no rule activates defuzzifier)
  88. DEFAULT := 0;
  89. END_DEFUZZIFY
  90.  
  91.  
  92. RULEBLOCK No1
  93. AND : MIN; // Use 'min' for 'and'
  94. ACT : MIN; // Use 'min' activation method
  95. ACCU : MAX; // Use 'max' accumulation method
  96.  
  97. RULE 1 : IF temperature IS low AND runny_nose IS often OR runny_nose IS constant AND sneezing IS often THEN decision IS cold;
  98. RULE 2 : IF heavy_breathing IS very AND bloody_cough IS very AND chest_pain IS very THEN decision IS lung_cancer;
  99. RULE 3 : IF bloody_cough IS little AND chest_pain IS little AND temperature IS high THEN decision IS tuberculosis;
  100. RULE 4 : IF runny_nose IS constant AND temperature IS normal AND sneezing IS often THEN decision IS allergy;
  101. RULE 5 : IF sore_throat IS very AND cough IS often AND temperature IS high THEN decision IS laryngitis;
  102. RULE 6 : IF temperature IS high AND heavy_breathing IS very AND chest_pain IS little THEN decision IS pneumonia;
  103. RULE 7 : IF chest_pain IS very AND headache IS very THEN decision IS heartAttack;
  104. RULE 8 : IF temperature IS high AND runny_nose IS often OR runny_nose IS constant AND sneezing IS often OR sneezing IS little THEN decision IS cold;
  105. RULE 9: IF cough IS often OR bloody_cough IS little AND runny_nose IS not_at_all THEN decision IS bronhitis;
  106. RULE 10: IF temperature IS normal AND heavy_breathing IS very AND chest_pain IS very THEN decision IS outOfShape;
  107. END_RULEBLOCK
  108.  
  109. END_FUNCTION_BLOCK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement