library(sets)
sets_options("universe", seq(1, 100, 0.5))
variables <- set(
temperature = fuzzy_partition(varnames = c(cold = 30, good = 70, hot = 90),
sd = 5.0),
humidity = fuzzy_partition(varnames = c(dry = 30, good = 60, wet = 80),
sd = 3.0),
precipitation = fuzzy_partition(varnames = c(no.rain = 30, little.rain = 60,
rain = 90), sd = 7.5),
weather = fuzzy_partition(varnames = c(bad = 40, ok = 65, perfect = 80),
FUN = fuzzy_cone, radius = 10)
)
# Fuzzy rules
rules <- set(
fuzzy_rule(temperature %is% good && humidity %is% dry &&
precipitation %is% no.rain, weather %is% perfect),
fuzzy_rule(temperature %is% hot && humidity %is% wet &&
precipitation %is% rain, weather %is% bad),
fuzzy_rule(temperature %is% cold, weather %is% bad),
fuzzy_rule(temperature %is% good || humidity %is% good ||
precipitation %is% little.rain, weather %is% ok),
fuzzy_rule(temperature %is% hot && precipitation %is% little.rain,
weather %is% ok),
fuzzy_rule(temperature %is% hot && humidity %is% dry &&
precipitation %is% little.rain, weather %is% ok)
)
model <- fuzzy_system(variables, rules)
print(model)
A fuzzy system consisting of 4 variables and 6 rules.
Variables:
weather(bad, ok, perfect)
humidity(dry, good, wet)
temperature(cold, good, hot)
precipitation(no.rain, little.rain, rain)
Rules:
temperature %is% hot && precipitation %is% little.rain => weather %is% ok
temperature %is% hot && humidity %is% dry && precipitation %is% => weather %is% ok
little.rain => weather %is% ok
temperature %is% hot && humidity %is% wet && precipitation %is% => weather %is% bad
rain => weather %is% bad
temperature %is% good && humidity %is% dry && precipitation %is% => weather %is% perfect
no.rain => weather %is% perfect
temperature %is% good || humidity %is% good || precipitation %is% => weather %is% ok
little.rain => weather %is% ok
temperature %is% cold => weather %is% bad
plot(model)

example.1 <- fuzzy_inference(model, list(temperature = 75, humidity = 0,
precipitation = 70))
gset_defuzzify(example.1, "centroid")
[1] 65

example.2 <- fuzzy_inference(model, list(temperature = 30, humidity = 0,
precipitation = 70))
gset_defuzzify(example.2, "largestofmax")
[1] 40

LS0tDQp0aXRsZTogIlIgRnV6enkgRXhhbXBsZSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0KbGlicmFyeShzZXRzKQ0Kc2V0c19vcHRpb25zKCJ1bml2ZXJzZSIsIHNlcSgxLCAxMDAsIDAuNSkpDQpgYGANCg0KYGBge3J9DQp2YXJpYWJsZXMgPC0gc2V0KA0KICB0ZW1wZXJhdHVyZSA9IGZ1enp5X3BhcnRpdGlvbih2YXJuYW1lcyA9IGMoY29sZCA9IDMwLCBnb29kID0gNzAsIGhvdCA9IDkwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2QgPSA1LjApLA0KICBodW1pZGl0eSA9IGZ1enp5X3BhcnRpdGlvbih2YXJuYW1lcyA9IGMoZHJ5ID0gMzAsIGdvb2QgPSA2MCwgd2V0ID0gODApLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2QgPSAzLjApLA0KICBwcmVjaXBpdGF0aW9uID0gZnV6enlfcGFydGl0aW9uKHZhcm5hbWVzID0gYyhuby5yYWluID0gMzAsIGxpdHRsZS5yYWluID0gNjAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW4gPSA5MCksIHNkID0gNy41KSwNCiAgd2VhdGhlciA9IGZ1enp5X3BhcnRpdGlvbih2YXJuYW1lcyA9IGMoYmFkID0gNDAsIG9rID0gNjUsIHBlcmZlY3QgPSA4MCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOID0gZnV6enlfY29uZSwgcmFkaXVzID0gMTApDQopDQpgYGANCg0KYGBge3J9DQojIEZ1enp5IHJ1bGVzDQpydWxlcyA8LSBzZXQoDQogIGZ1enp5X3J1bGUodGVtcGVyYXR1cmUgJWlzJSBnb29kICYmIGh1bWlkaXR5ICVpcyUgZHJ5ICYmDQogICAgICAgICAgICAgICBwcmVjaXBpdGF0aW9uICVpcyUgbm8ucmFpbiwgd2VhdGhlciAlaXMlIHBlcmZlY3QpLA0KICBmdXp6eV9ydWxlKHRlbXBlcmF0dXJlICVpcyUgaG90ICYmIGh1bWlkaXR5ICVpcyUgd2V0ICYmDQogICAgICAgICAgICAgICBwcmVjaXBpdGF0aW9uICVpcyUgcmFpbiwgd2VhdGhlciAlaXMlIGJhZCksDQogIGZ1enp5X3J1bGUodGVtcGVyYXR1cmUgJWlzJSBjb2xkLCB3ZWF0aGVyICVpcyUgYmFkKSwNCiAgZnV6enlfcnVsZSh0ZW1wZXJhdHVyZSAlaXMlIGdvb2QgfHwgaHVtaWRpdHkgJWlzJSBnb29kIHx8DQogICAgICAgICAgICAgICBwcmVjaXBpdGF0aW9uICVpcyUgbGl0dGxlLnJhaW4sIHdlYXRoZXIgJWlzJSBvayksDQogIGZ1enp5X3J1bGUodGVtcGVyYXR1cmUgJWlzJSBob3QgJiYgcHJlY2lwaXRhdGlvbiAlaXMlIGxpdHRsZS5yYWluLA0KICAgICAgICAgICAgIHdlYXRoZXIgJWlzJSBvayksDQogIGZ1enp5X3J1bGUodGVtcGVyYXR1cmUgJWlzJSBob3QgJiYgaHVtaWRpdHkgJWlzJSBkcnkgJiYNCiAgICAgICAgICAgICAgIHByZWNpcGl0YXRpb24gJWlzJSBsaXR0bGUucmFpbiwgd2VhdGhlciAlaXMlIG9rKQ0KKQ0KYGBgDQoNCmBgYHtyfQ0KbW9kZWwgPC0gZnV6enlfc3lzdGVtKHZhcmlhYmxlcywgcnVsZXMpDQpgYGANCg0KYGBge3J9DQpwcmludChtb2RlbCkNCmBgYA0KDQpgYGB7cn0NCnBsb3QobW9kZWwpDQpgYGANCmBgYHtyfQ0KZXhhbXBsZS4xIDwtIGZ1enp5X2luZmVyZW5jZShtb2RlbCwgbGlzdCh0ZW1wZXJhdHVyZSA9IDc1LCBodW1pZGl0eSA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXBpdGF0aW9uID0gNzApKQ0KYGBgDQoNCmBgYHtyfQ0KZ3NldF9kZWZ1enppZnkoZXhhbXBsZS4xLCAiY2VudHJvaWQiKQ0KYGBgDQoNCmBgYHtyfQ0KcGxvdChleGFtcGxlLjEpDQpgYGANCmBgYHtyfQ0KZXhhbXBsZS4yIDwtIGZ1enp5X2luZmVyZW5jZShtb2RlbCwgbGlzdCh0ZW1wZXJhdHVyZSA9IDMwLCBodW1pZGl0eSA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXBpdGF0aW9uID0gNzApKQ0KZ3NldF9kZWZ1enppZnkoZXhhbXBsZS4yLCAibGFyZ2VzdG9mbWF4IikNCmBgYA0KYGBge3J9DQpwbG90KGV4YW1wbGUuMikNCmBgYA0KDQo=