Reguły FCL
This commit is contained in:
parent
dad3542862
commit
d69befad1e
@ -1,171 +1,108 @@
|
|||||||
FUNCTION_BLOCK prediction // Definicja bloku (moze byc wiecej blokow w pliku)
|
FUNCTION_BLOCK prediction
|
||||||
|
|
||||||
VAR_INPUT // Definiuje zmienne wejsciowe
|
VAR_INPUT
|
||||||
goalkeeperForm1 : REAL;
|
goalkeeperForm: REAL;
|
||||||
formationAgainstForm1 : REAL;
|
formationAgainstForm: REAL;
|
||||||
shootsOnTargetAverage1 : REAL;
|
shootsOnTargetAverage: REAL;
|
||||||
possessionAverage1 : REAL;
|
possessionAverage: REAL;
|
||||||
goalsAverage1 : REAL;
|
goalsAverage: REAL;
|
||||||
goalsLostAverage1 : REAL;
|
goalsLostAverage: REAL;
|
||||||
redCardsAverage1 : REAL;
|
redCardsAverage: REAL;
|
||||||
penaltyAreaEntriesAverage1 : REAL;
|
penaltyAreaEntriesAverage: REAL;
|
||||||
penaltiesAverage1 : REAL;
|
penaltiesAverage: REAL;
|
||||||
lastMatchesResultAverage1 : REAL;
|
lastMatchesResultAverage: REAL;
|
||||||
lastMatchesResultBetweenAverage1 : REAL;
|
lastMatchesResultBetweenAverage: REAL;
|
||||||
|
|
||||||
goalkeeperForm2 : REAL;
|
|
||||||
formationAgainstForm2 : REAL;
|
|
||||||
shootsOnTargetAverage2 : REAL;
|
|
||||||
possessionAverage2 : REAL;
|
|
||||||
goalsAverage2 : REAL;
|
|
||||||
goalsLostAverage2 : REAL;
|
|
||||||
redCardsAverage2 : REAL;
|
|
||||||
penaltyAreaEntriesAverage2 : REAL;
|
|
||||||
penaltiesAverage2 : REAL;
|
|
||||||
lastMatchesResultAverage2 : REAL;
|
|
||||||
lastMatchesResultBetweenAverage2 : REAL;
|
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
VAR_OUTPUT // Definiuje zmienne wyjsciowe
|
VAR_OUTPUT
|
||||||
prediction : REAL;
|
prediction : REAL;
|
||||||
END_VAR
|
END_VAR
|
||||||
|
|
||||||
FUZZIFY goalkeeperForm1
|
FUZZIFY goalkeeperForm
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM zla := (50, 1) (70, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM dobra := (70, 0) (80,1) (90,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM znakomita := (90, 0) (100, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY goalkeeperForm2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY formationAgainstForm1
|
FUZZIFY formationAgainstForm
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM zla := (30, 1) (40, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietna := (35, 0) (50,1) (70,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM dobra := (70, 0) (100, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY formationAgainstForm2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY shootsOnTargetAverage1
|
FUZZIFY shootsOnTargetAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (2, 1) (4, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (3, 0) (5,1) (7,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (7, 0) (10, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY shootsOnTargetAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY possessionAverage1
|
FUZZIFY possessionAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (30, 1) (40, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (40, 0) (50,1) (60,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (60, 0) (100, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY possessionAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY goalsAverage1
|
FUZZIFY goalsAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (0, 1) (1, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (1, 0) (1.5,1) (2,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (2, 0) (3, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY goalsAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY goalsLostAverage1
|
FUZZIFY goalsLostAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (0, 1) (1, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (1, 0) (1.5,1) (2,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (2, 0) (3, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY goalsLostAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY redCardsAverage1
|
FUZZIFY redCardsAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (0, 1) (0.1, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (0.1, 0) (0.2,1) (0.3,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (0.3, 0) (0.4, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY redCardsAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY penaltyAreaEntriesAverage1
|
FUZZIFY penaltyAreaEntriesAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM rzadko := (0, 1) (5, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (5, 0) (9,1) (13,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM czesto := (13, 0) (20, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY penaltyAreaEntriesAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY penaltiesAverage1
|
FUZZIFY penaltiesAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM malo := (0, 1) (0.1, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM przecietnie := (0.1, 0) (0.2,1) (0.3,0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM duzo := (0.3, 0) (0.4, 1);
|
||||||
END_FUZZIFY
|
|
||||||
FUZZIFY penaltiesAverage2
|
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY lastMatchesResultAverage1
|
FUZZIFY lastMatchesResultAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM bardzo_slabo := (0, 1) (3, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM slabo := (3, 1) (4, 0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM przecietnie := (4, 0) (5,1) (6,1);
|
||||||
END_FUZZIFY
|
TERM dobrze := (6, 0) (8, 1);
|
||||||
FUZZIFY lastMatchesResultAverage2
|
TERM bardzo_dobrze := (8, 0) (9, 1);
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
FUZZIFY lastMatchesResultBetweenAverage1
|
FUZZIFY lastMatchesResultBetweenAverage
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
TERM bardzo_slabo := (0, 1) (3, 0);
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
TERM slabo := (3, 1) (4, 0);
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
TERM przecietnie := (4, 0) (5,1) (6,1);
|
||||||
END_FUZZIFY
|
TERM dobrze := (6, 0) (8, 1);
|
||||||
FUZZIFY lastMatchesResultBetweenAverage2
|
TERM bardzo_dobrze := (8, 0) (9, 1);
|
||||||
TERM zla := (0, 1) (4, 0) ;
|
|
||||||
TERM dobra := (1, 0) (4,1) (6,1) (9,0);
|
|
||||||
TERM znakomita := (6, 0) (9, 1);
|
|
||||||
END_FUZZIFY
|
END_FUZZIFY
|
||||||
|
|
||||||
DEFUZZIFY prediction // Zmienna wyjsciowa 'prediction' : {'skromny', 'sredni', 'hojny' }
|
DEFUZZIFY prediction
|
||||||
TERM skromny := (0,0) (5,1) (11,0);
|
TERM przegrana := (-1,1) (0,0);
|
||||||
TERM sredni := (9,0) (15,1) (21,0);
|
TERM remis := (-0.5,0) (0,1) (0.5,0);
|
||||||
TERM hojny := (19,0) (25,1) (30,0);
|
TERM wygrana := (0,0) (1,1);
|
||||||
METHOD : COG; // Metoda defuzyfikacji - 'Center Of Gravity' - 'Sreodka ciezkosci'
|
|
||||||
DEFAULT := 0;
|
DEFAULT := 0;
|
||||||
END_DEFUZZIFY
|
END_DEFUZZIFY
|
||||||
|
|
||||||
RULEBLOCK No1
|
RULEBLOCK No
|
||||||
AND : MIN; // Uzycie 'min' jako 'and' (implikuje uzycie 'max' jako 'or' dla zapewnienia praw DeMorgan'a)
|
AND : MIN;
|
||||||
ACT : MIN; // Uzycie 'min' jako metody aktywacji
|
ACT : MIN;
|
||||||
ACCU : MAX; // Metoda agregacji - 'max'
|
ACCU : MAX;
|
||||||
|
|
||||||
RULE 1 : IF goalkeeperForm1 IS zla OR goalkeeperForm2 is zla THEN prediction IS skromny;
|
RULE 1: IF goalkeeperForm IS zla AND possessionAverage IS malo THEN prediction IS przegrana;
|
||||||
|
RULE 2: IF possessionAverage IS duzo AND shootsOnTargetAverage IS duzo THEN prediction IS wygrana;
|
||||||
|
RULE 3: IF lastMatchesResultBetweenAverage IS slabo OR lastMatchesResultBetweenAverage IS przecietnie lastMatchesResultBetweenAverage IS dobrze THEN prediction IS remis;
|
||||||
END_RULEBLOCK
|
END_RULEBLOCK
|
||||||
|
|
||||||
END_FUNCTION_BLOCK
|
END_FUNCTION_BLOCK
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user