diff --git a/system_rekomendacji_filmow.fcl b/system_rekomendacji_filmow.fcl new file mode 100644 index 0000000..8d80822 --- /dev/null +++ b/system_rekomendacji_filmow.fcl @@ -0,0 +1,60 @@ +FUNCTION_BLOCK system_rekomendacji_filmow + +VAR_INPUT + dopasowanie_gatunkowe : REAL; + ocena_uzytkownika : REAL; + popularnosc : REAL; +END_VAR + +VAR_OUTPUT + dopasowanie : REAL; +END_VAR + +FUZZIFY ocena_uzytkownika + TERM niska := (0.5, 1) (3, 1) (4, 0); + TERM srednia := (3, 0) (4, 1) (4.5, 0); + TERM wysoka := (4, 0) (4.5, 1) (5, 1); +END_FUZZIFY + +FUZZIFY popularnosc + TERM niska := (1, 1) (10, 1) (30, 0); + TERM srednia := (10, 0) (30, 1) (50, 0); + TERM wysoka := (30, 0) (50, 1) (100, 1); +END_FUZZIFY + +FUZZIFY dopasowanie_gatunkowe + TERM niskie := (0.5, 1) (2, 1) (3, 0); + TERM srednie := (2, 0) (3, 1) (4, 0); + TERM wysokie := (3, 0) (4, 1) (5, 1); +END_FUZZIFY + +DEFUZZIFY dopasowanie + TERM niskie := (1, 1) (4, 1) (7, 0); + TERM srednie := (4, 0) (7, 1) (9, 0); + TERM wysokie := (7, 0) (9, 1) (10, 1); + METHOD : COG; + DEFAULT := 5; +END_DEFUZZIFY + +RULEBLOCK No1 + AND : MIN; + ACT : MIN; + ACCU : MAX; + + RULE 1 : IF ocena_uzytkownika IS niska THEN dopasowanie IS niskie; + RULE 2 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS niskie AND popularnosc IS niska THEN dopasowanie IS niskie; + RULE 3 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS srednie THEN dopasowanie IS srednie; + RULE 4 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS niskie AND popularnosc IS srednia THEN dopasowanie IS srednie; + RULE 5 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS niskie AND popularnosc IS wysoka THEN dopasowanie IS srednie; + RULE 6 : IF ocena_uzytkownika IS wysoka AND dopasowanie_gatunkowe IS niskie AND popularnosc IS niska THEN dopasowanie IS srednie; + RULE 7 : IF ocena_uzytkownika IS wysoka AND dopasowanie_gatunkowe IS niskie AND popularnosc IS srednia THEN dopasowanie IS srednie; + RULE 8 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS wysokie AND popularnosc IS niska THEN dopasowanie IS srednie; + RULE 9 : IF ocena_uzytkownika IS srednia AND dopasowanie_gatunkowe IS wysokie AND popularnosc IS srednia THEN dopasowanie IS srednie; + RULE 10 : IF ocena_uzytkownika IS wysoka AND dopasowanie_gatunkowe IS srednie THEN dopasowanie IS wysokie; + RULE 11 : IF ocena_uzytkownika IS wysoka AND dopasowanie_gatunkowe IS wysokie THEN dopasowanie IS wysokie; + RULE 12 : IF ocena_uzytkownika IS wysoka AND popularnosc IS wysoka THEN dopasowanie IS wysokie; + RULE 13 : IF dopasowanie_gatunkowe IS wysokie AND popularnosc IS wysoka THEN dopasowanie IS wysokie; + +END_RULEBLOCK + +END_FUNCTION_BLOCK \ No newline at end of file