Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION_BLOCK disease
- VAR_INPUT
- temperature: REAL;
- sneezing: REAL;
- cough: REAL;
- sore_throat: REAL;
- heavy_breathing: REAL;
- headache: REAL;
- chest_pain: REAL;
- runny_nose: REAL;
- bloody_cough: REAL;
- END_VAR
- VAR_OUTPUT
- decision: REAL;
- END_VAR
- FUZZIFY temperature
- TERM low := TRAPE 0 28 32 36;
- TERM normal := TRAPE 35.8 36.5 36.9 37;
- TERM high := TRAPE 36.5 40 40 43.5;
- END_FUZZIFY
- FUZZIFY sneezing
- TERM barely := (0, 1.0) (3, 0.0);
- TERM little := (2, 0.0) (3, 1.0) (4, 1.0) (5, 0.0);
- TERM often := (4, 0.0) (7, 1.0) (8, 1.0) (10, 0.0);
- END_FUZZIFY
- FUZZIFY cough
- TERM little := (2, 0.0) (3, 1.0) (4, 1.0) (5, 0.0);
- TERM often := (4, 0.0) (6, 1.0) (7, 1.0) (8, 0.0);
- TERM all_the_time := (7, 0.0) (8, 1.0) (9, 1.0) (10, 0.0);
- END_FUZZIFY
- FUZZIFY sore_throat
- TERM not_at_all := TRAPE 0 2 3 4;
- TERM little := TRAPE 3 4 6 7;
- TERM very := TRAPE 6 7 9 10;
- END_FUZZIFY
- FUZZIFY heavy_breathing
- TERM not_at_all := GBELL 2 3 2;
- TERM slight := GBELL 2 3 5;
- TERM very := GBELL 2 3 8;
- END_FUZZIFY
- FUZZIFY headache
- TERM not_at_all := TRIAN 0 2.5 5;
- TERM little := TRIAN 2.5 5 7.5;
- TERM very := TRIAN 6 9 10;
- END_FUZZIFY
- FUZZIFY chest_pain
- TERM not_at_all := TRIAN 0 2.5 5;
- TERM little := TRIAN 2.5 5 7.5;
- TERM very := TRIAN 6 9 10;
- END_FUZZIFY
- FUZZIFY runny_nose
- TERM not_at_all := TRAPE 0 1 2 3;
- TERM little := TRAPE 2 3 4 5;
- TERM often := TRAPE 4 5 6 7;
- TERM constant := TRAPE 6 7 8 10;
- END_FUZZIFY
- FUZZIFY bloody_cough
- TERM not_at_all := TRIAN 0 2.5 5;
- TERM little := TRIAN 2.5 5 7.5;
- TERM very := TRIAN 6 9 10;
- END_FUZZIFY
- DEFUZZIFY decision
- TERM cold := GBELL 2 2 2;
- TERM flu := GBELL 2 2 5;
- TERM allergy := GBELL 2 2 8;
- TERM bronhitis := GBELL 2 2 11;
- TERM pneumonia := GBELL 2 2 14;
- TERM lung_cancer := GBELL 2 2 17;
- TERM tuberculosis := GBELL 2 2 20;
- TERM laryngitis := GBELL 2 2 23;
- TERM heartAttack := GBELL 2 2 26;
- TERM outOfShape := GBELL 2 2 29;
- // Use 'Center Of Gravity' defuzzification method
- METHOD : COG;
- // Default value is 0 (if no rule activates defuzzifier)
- DEFAULT := 0;
- END_DEFUZZIFY
- RULEBLOCK No1
- AND : MIN; // Use 'min' for 'and'
- ACT : MIN; // Use 'min' activation method
- ACCU : MAX; // Use 'max' accumulation method
- RULE 1 : IF temperature IS low AND runny_nose IS often OR runny_nose IS constant AND sneezing IS often THEN decision IS cold;
- RULE 2 : IF heavy_breathing IS very AND bloody_cough IS very AND chest_pain IS very THEN decision IS lung_cancer;
- RULE 3 : IF bloody_cough IS little AND chest_pain IS little AND temperature IS high THEN decision IS tuberculosis;
- RULE 4 : IF runny_nose IS constant AND temperature IS normal AND sneezing IS often THEN decision IS allergy;
- RULE 5 : IF sore_throat IS very AND cough IS often AND temperature IS high THEN decision IS laryngitis;
- RULE 6 : IF temperature IS high AND heavy_breathing IS very AND chest_pain IS little THEN decision IS pneumonia;
- RULE 7 : IF chest_pain IS very AND headache IS very THEN decision IS heartAttack;
- 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;
- RULE 9: IF cough IS often OR bloody_cough IS little AND runny_nose IS not_at_all THEN decision IS bronhitis;
- RULE 10: IF temperature IS normal AND heavy_breathing IS very AND chest_pain IS very THEN decision IS outOfShape;
- END_RULEBLOCK
- END_FUNCTION_BLOCK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement