(* -*- coding: iso-8859-1 -*- *) FUNCTION_BLOCK Analyse_Risque_Floue (* # Cet exemple permet de démontrer l'utilisation de pyfuzzy pour la prise de décision. # L'exemple utilisé est tiré d'un examen Median de l'UV SY10 # enseignée par Z. Zalila (Groupe de logique floue) de l'Université de Technologie de # Compiègne. (d'après une idée de A. Biannic & F. Linget, SY 10 A97) *) STRUCT struct_output_risque_sit_geo Nul : REAL; Faible : REAL; Moyen : REAL; Eleve : REAL; Inacceptable : REAL; END_STRUCT VAR_INPUT input_Nbre_habitants : REAL; (* description="Taille aglomération", min=0.0,max=10000.0, unit="Milliers d'habitants" *) input_dist_frontiere : REAL; (* description="Distance de la frontière", min=0.0,max=1000.0, unit="km" *) END_VAR VAR_OUTPUT output_risque_sit_geo : struct_output_risque_sit_geo; END_VAR FUZZIFY input_Nbre_habitants TERM Petite := (1, 1) (20, 1) (40,0); TERM Moyenne := (20, 0) (60, 1) (100,0); TERM Grande := (80, 0) (100, 1) (120,1); END_FUZZIFY FUZZIFY input_dist_frontiere TERM Faible := (0, 1) (50, 1) (100,0); TERM Moyenne := (50, 0) (100, 1) (150,0); TERM Elevee := (125, 0) (200, 1) (250,1); END_FUZZIFY DEFUZZIFY output_risque_sit_geo METHOD : Dict; END_DEFUZZIFY RULEBLOCK No1 AND : MIN; RULE 1 : IF input_Nbre_habitants IS Petite AND input_dist_frontiere IS Elevee THEN output_risque_sit_geo IS Nul; RULE 2 : IF input_Nbre_habitants IS Moyenne AND input_dist_frontiere IS Elevee THEN output_risque_sit_geo IS Faible; RULE 3 : IF input_Nbre_habitants IS Grande AND input_dist_frontiere IS Elevee THEN output_risque_sit_geo IS Eleve; RULE 4 : IF input_Nbre_habitants IS Petite AND input_dist_frontiere IS Moyenne THEN output_risque_sit_geo IS Faible; RULE 5 : IF input_Nbre_habitants IS Moyenne AND input_dist_frontiere IS Moyenne THEN output_risque_sit_geo IS Moyen; RULE 6 : IF input_Nbre_habitants IS Grande AND input_dist_frontiere IS Moyenne THEN output_risque_sit_geo IS Inacceptable; RULE 7 : IF input_Nbre_habitants IS Petite AND input_dist_frontiere IS Faible THEN output_risque_sit_geo IS Eleve; RULE 8 : IF input_Nbre_habitants IS Moyenne AND input_dist_frontiere IS Faible THEN output_risque_sit_geo IS Inacceptable; RULE 9 : IF input_Nbre_habitants IS Grande AND input_dist_frontiere IS Faible THEN output_risque_sit_geo IS Inacceptable; END_RULEBLOCK END_FUNCTION_BLOCK