Last active
May 16, 2016 10:46
-
-
Save senhorinha/6ac2c68bdb6149d33e43dbd601c1fdf9 to your computer and use it in GitHub Desktop.
Fuzzy Logic using R
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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), | |
internal_temperature = | |
fuzzy_partition(varnames = | |
c(low = 10, medium = 20, high = 30), sd = 10), | |
air_conditioning_consumption = | |
fuzzy_partition(varnames = | |
c(low = 10, medium = 20, high = 30), sd = 10), | |
sustainability_level = | |
fuzzy_partition(varnames = | |
c(low = 10, medium = 20, high = 30), sd = 10) | |
) | |
# 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 | |
umidity = | |
ideal_temperature = | |
most_recent_outside_temperature = 25 | |
most_recent_internal_temperature = 25 | |
air_conditioning_consumption = 1000 | |
temperature_error = external_temperature - internal_temperature | |
result <- fuzzy_inference(system, list( 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