library(sets)
## Warning: package 'sets' was built under R version 4.1.2
sets_options("universe", seq(1, 100, 0.5))
Variabel Langkah selanjutnya adalah mendefinisikan variabel dari sistem fuzzy. Variabel yang kita bangun berhubungan dengan cuaca, variabel yang di pilih adalah ‘suhu’, ‘kelembaban’ dan ‘curah hujan’. Jadi, seperti yang disebutkan sebelumnya, keadaan cuaca (buruk, baik atau sempurna), akan ditentukan menurut variabel ini.
Suhu Kelembaban Pengendapan
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)
)
Pertama-tama kita menentukan variabel pertama ‘suhu’, bariabel tersebut memiliki tiga atribut atau tingkatan yang berbeda: ‘dingin’, ‘baik’ dan ‘panas’, dengan nilai 30, 70 dan 90. Artinya jika suhu (menggunakan Fahrenheit kali ini ) adalah 30, maka ‘dingin’, jika 70, ‘baik’ dan jika 90, ‘panas’. Untuk variabel ‘kelembaban’ dan ‘curah hujan’ Anda bisa membacanya sebagai “jika persentase kelembaban adalah 30, maka itu kering” atau “ada kemungkinan 60% hari ini akan hujan”.
Aturan kabur The fuzzy rules
Setelah variabel didefinisikan, langkah selanjutnya adalah mendefinisikan aturan fuzzy dari sistem. Di bagian sebelumnya, saya menunjukkan variabel yang disebut ‘cuaca’ yang merupakan keadaan akhir atau respons sistem. Aturan fuzzy adalah hubungan antara variabel “non-final” (suhu, kelembaban dan curah hujan) dan ‘cuaca’.
# 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)
)
Untuk sistem ini, enam aturan didefinisikan.
Jika suhu ‘baik’ (lihat variabel untuk melihat apa yang ‘baik’), kelembapannya ‘kering’ dan curah hujannya ‘tidak hujan’, maka cuacanya ‘sempurna’. Jika suhu ‘panas’, kelembaban ‘basah’ dan curah hujan ‘hujan’, maka cuacanya ‘buruk’. Jika suhu ‘dingin’, maka cuacanya ‘buruk’. Jika suhunya ‘baik’ atau kelembapannya ‘baik’ atau curah hujannya ‘sedikit.hujan’, maka cuacanya ‘baik’. Jika suhunya ‘panas’ dan curah hujannya ‘sedikit.hujan’, maka cuacanya ‘oke’. Jika suhu ‘panas’, kelembapan ‘kering’ dan curah hujan ‘sedikit.hujan’, maka cuaca ‘oke’. Perhatikan && dan ||.
Sekarang, mari kita bangun sistemnya.
Sistem logika fuzzy
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)
Seperti dapat kita lihat, beberapa plot menampilkan tumpang tindih antara properti variabel. Misalnya pada plot temperatur terdapat overlapping antara ‘baik’ dan ‘panas’, jadi jika suhu 80, maka sekitar 0,15 ‘baik’, 0,15 ‘panas’ dan 0,0 ‘dingin’.
Contoh yang dilakukan untuk menguji sistem. Suhu = 75, kelembaban = 0 dan curah hujan = 70
example.1 <- fuzzy_inference(model, list(temperature = 75, humidity = 0, precipitation = 70))
gset_defuzzify(example.1, "centroid")
## [1] 65
plot(example.1)