Skip to content

Instantly share code, notes, and snippets.

@senhorinha
Last active June 26, 2016 23:12
Show Gist options
  • Save senhorinha/a5bdd4b418b4f5e82f78e50d8295f810 to your computer and use it in GitHub Desktop.
Save senhorinha/a5bdd4b418b4f5e82f78e50d8295f810 to your computer and use it in GitHub Desktop.
Fuzzy Logic using R
#!/usr/bin/env Rscript
library("sets")
# Step 1 - Setting up the Fuzzy Logic
sets_options("universe", seq(from = 0, to = 40, by = 1))
# Step 1.1 - Setting up the Variables
variables =
set(
ideal_temperature =
fuzzy_partition(varnames =
c(low = 10, medium = 20, high = 30), sd = 10),
outside_temperature =
fuzzy_partition(varnames =
c(low = 10, medium = 20, high = 30), sd = 10.001),
internal_temperature =
fuzzy_partition(varnames =
c(low = 10, medium = 20, high = 30), sd = 10.002),
air_conditioning_consumption =
fuzzy_partition(varnames =
c(low = 10, medium = 20, high = 30), sd = 10.003),
sustainability_level =
fuzzy_partition(varnames =
c(low = 10, medium = 20, high = 30), sd = 10.004)
)
# Step 1.2 - Setting Up the Rules
rules =
set(
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% low && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% medium && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% low && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% medium && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% low && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% low, sustainability_level %is% medium),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% medium, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% medium && air_conditioning_consumption %is% high, sustainability_level %is% low),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% low, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% medium, sustainability_level %is% high),
fuzzy_rule(ideal_temperature %is% high && outside_temperature %is% high && internal_temperature %is% high && air_conditioning_consumption %is% high, sustainability_level %is% medium)
)
# Step 2 - Building system
system = fuzzy_system(variables, rules)
print(system)
# Step 3 - Execution of logic
input_ideal_temperature = 22
input_outside_temperature = 25
input_internal_temperature = 23
input_air_conditioning_consumption = 20
result <- fuzzy_inference(system, list(
ideal_temperature = input_ideal_temperature,
outside_temperature = input_outside_temperature,
internal_temperature = input_internal_temperature,
air_conditioning_consumption = input_air_conditioning_consumption
)
)
# Step 4 - Defuzzify
defuzzy_result = gset_defuzzify(result, "centroid")
print(defuzzy_result)
# Step 5 - Cleaning the environment
sets_options("universe", NULL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment