This commit is contained in:
Mateusz Tylka 2023-01-04 17:23:30 +01:00
parent 3b5256110d
commit d51cae15b9
2 changed files with 7 additions and 35 deletions

View File

@ -4,75 +4,47 @@ FS = FuzzySystem()
# Define fuzzy sets for the variable # Define fuzzy sets for the variable # Define fuzzy sets for the variable # Define fuzzy sets for the variable
# RELEASE_YEAR # RELEASE_YEAR
# release_year_newer = FuzzySet(points=[[-68.0, 0.0], [68.0, 1.0]], term="newer")
release_year_newer = TriangleFuzzySet(-68, -68, 0, term="newer") release_year_newer = TriangleFuzzySet(-68, -68, 0, term="newer")
# release_year_similar = FuzzySet(points=[[-68.0, 0.0], [0.0, 1.0], [68.0, 0.0]], term="similar")
release_year_similar = TriangleFuzzySet(-68, 0, 68, term="similar") release_year_similar = TriangleFuzzySet(-68, 0, 68, term="similar")
# release_year_older = FuzzySet(points=[[-68.0, 1.0], [68.0, 0.0]], term="older")
release_year_older = TriangleFuzzySet(0, 68, 68, term="older") release_year_older = TriangleFuzzySet(0, 68, 68, term="older")
FS.add_linguistic_variable("RELEASE_YEAR", LinguisticVariable( [release_year_newer, release_year_similar, release_year_older], universe_of_discourse=[-136, 136] )) FS.add_linguistic_variable("RELEASE_YEAR", LinguisticVariable( [release_year_newer, release_year_similar, release_year_older], universe_of_discourse=[-136, 136] ))
# RUNTIME # RUNTIME
# runtime_shorter = FuzzySet(points=[[-238.0, 0.0], [238.0, 1.0]], term="shorter")
runtime_shorter = TriangleFuzzySet(-238, -238, 0, term="shorter") runtime_shorter = TriangleFuzzySet(-238, -238, 0, term="shorter")
# runtime_similar = FuzzySet(points=[[-238.0, 0.0], [0.0, 1.0], [238.0, 0.0]], term="similar")
runtime_similar = TriangleFuzzySet(-238, 0, 238, term="similar") runtime_similar = TriangleFuzzySet(-238, 0, 238, term="similar")
# runtime_longer = FuzzySet(points=[[-238.0, 1.0], [238.0, 0]], term="longer")
runtime_longer = TriangleFuzzySet(0, 238, 238, term="longer") runtime_longer = TriangleFuzzySet(0, 238, 238, term="longer")
FS.add_linguistic_variable("RUNTIME", LinguisticVariable( [runtime_shorter, runtime_similar, runtime_longer], universe_of_discourse=[-476, 476] )) FS.add_linguistic_variable("RUNTIME", LinguisticVariable( [runtime_shorter, runtime_similar, runtime_longer], universe_of_discourse=[-476, 476] ))
# SEASONS # SEASONS
# seasons_less = FuzzySet(points=[[-42.0, 0.0], [42.0, 1.0]], term="less")
seasons_less = TriangleFuzzySet(-42, -42, 0, term="less") seasons_less = TriangleFuzzySet(-42, -42, 0, term="less")
# seasons_similar = FuzzySet(points=[[-42.0, 0.0], [0.0, 1.0], [42.0, 0.0]], term="similar")
seasons_similar = TriangleFuzzySet(-42, 0, 42, term="similar") seasons_similar = TriangleFuzzySet(-42, 0, 42, term="similar")
# seasons_more = FuzzySet(points=[[-42.0, 1.0], [42.0, 0.0]], term="more")
seasons_more = TriangleFuzzySet(0, 42, 42, term="more") seasons_more = TriangleFuzzySet(0, 42, 42, term="more")
FS.add_linguistic_variable("SEASONS", LinguisticVariable( [seasons_less, seasons_similar, seasons_more], universe_of_discourse=[-84, 84] )) FS.add_linguistic_variable("SEASONS", LinguisticVariable( [seasons_less, seasons_similar, seasons_more], universe_of_discourse=[-84, 84] ))
# GENRES # GENRES
# genres_different = FuzzySet(points=[[-100.0, 0.0], [100.0, 1.0]], term="different")
genres_different = TriangleFuzzySet(-100, -100, 0, term="different") genres_different = TriangleFuzzySet(-100, -100, 0, term="different")
# genres_similar = FuzzySet(points=[[-100.0, 0.0], [0.0, 1.0], [100.0, 0.0]], term="similar")
genres_similar = TriangleFuzzySet(-100, 0, 100, term="similar") genres_similar = TriangleFuzzySet(-100, 0, 100, term="similar")
# genres_same = FuzzySet(points=[[-100.0, 1.0], [100.0, 0.0]], term="same")
genres_same = TriangleFuzzySet(0, 100, 100, term="same") genres_same = TriangleFuzzySet(0, 100, 100, term="same")
FS.add_linguistic_variable("GENRES", LinguisticVariable( [genres_different, genres_similar, genres_same], universe_of_discourse=[-200, 200] )) FS.add_linguistic_variable("GENRES", LinguisticVariable( [genres_different, genres_similar, genres_same], universe_of_discourse=[-200, 200] ))
# EMOTIONS # EMOTIONS
# emotions_different = FuzzySet(points=[[-4.0, 0.0], [4.0, 1.0]], term="different")
emotions_different = TriangleFuzzySet(-4, -4, 0, term="different") emotions_different = TriangleFuzzySet(-4, -4, 0, term="different")
# emotions_similar = FuzzySet(points=[[-4.0, 0.0], [0.0, 1.0], [4.0, 0.0]], term="similar")
emotions_similar = TriangleFuzzySet(-4, 0, 4, term="similar") emotions_similar = TriangleFuzzySet(-4, 0, 4, term="similar")
# emotions_same = FuzzySet(points=[[-4.0, 1.0], [4.0, 0.0]], term="same")
emotions_same = TriangleFuzzySet(0, 4, 4, term="same") emotions_same = TriangleFuzzySet(0, 4, 4, term="same")
FS.add_linguistic_variable("EMOTIONS", LinguisticVariable( [emotions_different, emotions_similar, emotions_same], universe_of_discourse=[-8, 8] )) FS.add_linguistic_variable("EMOTIONS", LinguisticVariable( [emotions_different, emotions_similar, emotions_same], universe_of_discourse=[-8, 8] ))
# Nie crisp tylko tak jak te powyżej zdefiniować # RECOMENDATION
FS.set_crisp_output_value("low_recomendation", 0) low_recomendation = TriangleFuzzySet(0, 0, 50, term="low_recomendation")
FS.set_crisp_output_value("medium_recomendation", 50) medium_recomendation = TriangleFuzzySet(0, 50, 100, term="medium_recomendation")
FS.set_crisp_output_value("high_recomendation", 100) high_recomendation = TriangleFuzzySet(0, 100, 100, term="high_recomendation")
FS.add_linguistic_variable("RECOMENDATION", LinguisticVariable( [low_recomendation, medium_recomendation, high_recomendation], universe_of_discourse=[0, 200] ))
# RULES
RULE1 = "IF (RELEASE_YEAR IS older) AND (RUNTIME IS longer) AND (SEASONS IS more) THEN (RECOMENDATION IS low_recomendation)" RULE1 = "IF (RELEASE_YEAR IS older) AND (RUNTIME IS longer) AND (SEASONS IS more) THEN (RECOMENDATION IS low_recomendation)"
RULE2 = "IF (EMOTIONS IS different) AND (GENRES IS different) THEN (RECOMENDATION IS low_recomendation)" RULE2 = "IF (EMOTIONS IS different) AND (GENRES IS different) THEN (RECOMENDATION IS low_recomendation)"
RULE3 = "IF (RELEASE_YEAR IS newer) AND (RUNTIME IS similar) AND (SEASONS IS less) THEN (RECOMENDATION IS medium_recomendation)" RULE3 = "IF (RELEASE_YEAR IS newer) AND (RUNTIME IS similar) AND (SEASONS IS less) THEN (RECOMENDATION IS medium_recomendation)"
@ -90,4 +62,4 @@ FS.set_variable("EMOTIONS", 1.0)
print(FS.inference(["RECOMENDATION"])) print(FS.inference(["RECOMENDATION"]))
FS.produce_figure(outputfile='file.pdf') FS.produce_figure(outputfile='visualize_terms.pdf')

BIN
file.pdf

Binary file not shown.