BAB IV IMPLEMENTASI, HASIL, DAN PEMBAHASAN
A. Implementasi Algoritma Sistem Inferensi Fuzzy Metode Tsukamoto
1. Perhitungan Derajat Keanggotaan
Berikut ini penjelasan lebih detail mengenai perhitungan derajat keanggotaan tiap himpunan fuzzy dari variabel kerusakan rumah dan kondisi ekonomi:
a. Perhitungan
μ
RUSAKRINGAN [X1]Perhitungan derajat keanggotaan himpunan fuzzy “rusak ringan” menggunakan pendekatan fungsi keanggotaan linear turun. Perhitungan derajat keanggotaan ini, diimplementasikan dalam
function bernama ”funcRusakRingan”.
0 50 1
0
Kerusakan Rumah (Persen) Rusak Ringan
] [
μ x1
Gambar 4.1. Fungsi Keanggotaan Rusak Ringan
Batas bawah (0 %), dan batas atas (50 %) himpunan fuzzy ”rusak ringan” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "RusakRingan"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "RusakRingan";
Jika kerusakan rumah yang diderita antara 0 % sampai 50 % (yaitu, antara batas bawah dan batas atas fungsi keanggotaan rusak
ringan), maka nilai keanggotaan “rusak ringan” (
μ
RUSAKRINGAN [X1] )adalah (50-x1) / (50-0). Listing programnya adalah sebagai berikut:
when (kerusakan >= bawah and kerusakan <= atas) then set myu_rusak_ringan
= (atas - kerusakan) / (atas - bawah);
Selain itu, jika kerusakan rumah 50 % sampai 100 % maka
μ
RUSAKRINGAN [X1] = 0. Listing programnya adalah sebagai berikut:else set myu_rusak_ringan = 0.0;
Function ”funcRusakRingan” akan memberikan nilai balik
berupa nilai dari myu_rusak_ringan. Pemanggilan function
”funcRusakRingan” dilakukan oleh store procedure ”spRusakRingan”
yang akan menampilkan nilai dari derajat keanggotaan ”rusak ringan” (myuRusakRingan). Listing programnya adalah sebagai berikut:
DELIMITER $$
DROP PROCEDURE IF EXISTS `rekonstruksi`.`spRusakRingan`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spRusakRingan` (rusak double)
BEGIN
select funcRusakRingan(rusak) as myuRusakRingan;
END$$ DELIMITER ;
b. Perhitungan
μ
RUSAKSEDANG [X1]Perhitungan derajat keanggotaan himpunan fuzzy “rusak sedang” menggunakan pendekatan fungsi keanggotaan segitiga. Perhitungan derajat keanggotaan ini, diimplementasikan dalam
function bernama ”funcRusakSedang”.
0 50 100
1
0
Kerusakan Rumah (Persen) Rusak
Sedang
] [
μ x1
Gambar 4.2. Fungsi Keanggotaan Rusak Sedang
Batas bawah (0 %), batas tengah (50 %), dan batas atas (100%) himpunan fuzzy ”rusak sedang” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "RusakSedang"; select BatasTengah into tengah from batashimpunan
where HimpunanFuzzy = "RusakSedang"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "RusakSedang";
Jika kerusakan rumah yang diderita antara 0 % dan 50 % (yaitu, antara batas bawah dan batas tengah fungsi keanggotaan rusak
sedang), maka nilai keanggotaan “rusak sedang” (
μ
RUSAKSEDANG [X1])adalah (x1-0) / (50-0). Listing programnya adalah sebagai berikut:
when (kerusakan >= bawah and kerusakan <= tengah) then set myu_rusak_sedang
= (kerusakan - bawah) / (tengah - bawah);
Jika kerusakan rumah yang diderita antara 50 % dan 100 % (yaitu, antara batas tengah dan batas atas fungsi keanggotaan rusak
sedang), maka nilai keanggotaan “rusak sedang” (
μ
RUSAKSEDANG [X1])adalah (100-x1) / (100-50). Listing programnya adalah sebagai berikut:
when (kerusakan >= tengah and kerusakan <= atas) then set myu_rusak_sedang
= (atas - kerusakan) / (atas - tengah);
Function ”funcRusakSedang” akan memberikan nilai balik
berupa nilai dari myu_rusak_sedang. Pemanggilan function
”funcRusakSedang” dilakukan oleh store procedure ”spRusakSedang”
yang akan menampilkan nilai dari derajat keanggotaan ”rusak sedang” (myuRusakSedang). Listing programnya adalah sebagai berikut:
DELIMITER $$
DROP PROCEDURE IF EXISTS `rekonstruksi`.`spRusakSedang`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spRusakSedang` (rusak double)
BEGIN
select funcRusakSedang(rusak) as myuRusakSedang;
END$$ DELIMITER ;
c. Perhitungan
μ
RUSAKBERAT [X1]Perhitungan derajat keanggotaan himpunan fuzzy “rusak berat” menggunakan pendekatan fungsi keanggotaan linear naik. Perhitungan
derajat keanggotaan ini, diimplementasikan dalam function bernama ”funcRusakBerat”. 50 100 Rusak Berat 1 0
Kerusakan Rumah (Persen)
] [
μ x1
Gambar 4.3. Fungsi Keanggotaan Rusak Berat
Batas bawah (50 %), dan batas atas (100 %) himpunan fuzzy ”rusak berat” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "RusakBerat"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "RusakBerat";
Jika kerusakan rumah yang diderita antara 0 % dan 50 % (yaitu, antara nol sampai batas bawah fungsi keanggotaan rusak berat),
maka nilai keanggotaan “rusak berat” (
μ
RUSAKBERAT [X1]) adalah 0(nol). Listing programnya adalah sebagai berikut:
when (kerusakan <= bawah)
then set myu_rusak_berat = 0.0;
Jika kerusakan rumah yang diderita antara 50 % dan 100 % (yaitu, antara batas bawah dan batas atas fungsi keanggotaan rusak
berat), maka nilai keanggotaan “rusak berat” (
μ
RUSAKBERAT [X1])adalah (x1-50) / (100-50). Listing programnya adalah sebagai berikut:
when (kerusakan >= bawah and kerusakan <= atas) then set myu_rusak_berat
Function ”funcRusakBerat” akan memberikan nilai balik
berupa nilai dari myu_rusak_berat. Pemanggilan function
”funcRusakBerat” dilakukan oleh store procedure ”spRusakBerat”
yang akan menampilkan nilai dari derajat keanggotaan ”rusak berat” (myuRusakBerat). Listing programnya adalah sebagai berikut:
DELIMITER $$
DROP PROCEDURE IF EXISTS `rekonstruksi`.`spRusakBerat`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spRusakBerat` (rusak double)
BEGIN
select funcRusakBerat(rusak) as myuRusakBerat;
END$$ DELIMITER ;
d. Perhitungan
μ
EKONOMIMISKIN [X2]Perhitungan derajat keanggotaan himpunan fuzzy “ekonomi miskin” menggunakan pendekatan fungsi keanggotaan linear turun. Perhitungan derajat keanggotaan ini, diimplementasikan dalam
function bernama ”funcEkonomiMiskin”.
500 1500
1
0
Kondisi Ekonomi (Rupiah) Miskin
] [
μ x2
(ribu/bln)
Gambar 4.4. Fungsi Keanggotaan Ekonomi Miskin
Batas bawah (500 ribu), dan batas atas (1,5 juta) himpunan fuzzy ”ekonomi miskin” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "EkonomiMiskin"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "EkonomiMiskin";
Jika penghasilan tiap bulan 0 sampai 500 ribu (yaitu, nol sampai batas bawah fungsi keanggotaan ekonomi miskin), maka nilai
keanggotaan “ekonomi miskin” (
μ
EKONOMIMISKIN [X2]) adalah 1(satu). Listing programnya adalah sebagai berikut:
when (hasil <= bawah)
then set myu_ekonomi_miskin = 1.0;
Jika penghasilan tiap bulan antara 500 ribu sampai 1,5 juta (yaitu, antara batas bawah dan batas atas fungsi keanggotaan ekonomi
miskin), maka nilai keanggotaan “ekonomi miskin” (
μ
EKONOMIMISKIN[X2]) adalah (1500-x2) / (1500-500). Listing programnya adalah
sebagai berikut:
when (hasil >= bawah and hasil <= atas) then set myu_ekonomi_miskin
= (atas - hasil) / (atas - bawah);
Selain itu, jika penghasilan tiap bulan ≥ 1,5 juta maka
μ
EKONOMIMISKIN [X2] = 0. Listing programnya adalah sebagai berikut:else set myu_ekonomi_miskin = 0.0;
Function ”funcEkonomiMiskin” akan memberikan nilai balik
berupa nilai dari myu_ekonomi_miskin. Pemanggilan function
”funcEkonomiMiskin” dilakukan oleh store procedure
keanggotaan ”ekonomi miskin” (myuEkonomiMiskin). Listing programnya adalah sebagai berikut:
DELIMITER $$
DROP PROCEDURE IF EXISTS `rekonstruksi`.`spEkonomiMiskin`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `spEkonomiMiskin` (hasil double)
BEGIN
select funcEkonomiMiskin(hasil) as myuEkonomiMiskin;
END$$ DELIMITER ;
e. Perhitungan
μ
EKONOMIMENENGAH [X2]Perhitungan derajat keanggotaan himpunan fuzzy “ekonomi menengah” menggunakan pendekatan fungsi keanggotaan segitiga. Perhitungan derajat keanggotaan ini, diimplementasikan dalam
function bernama ”funcEkonomiMenengah”.
500 1500 2500
1
0
Kondisi Ekonomi (Rupiah) Menengah ]
[
μ x2
(ribu/bln)
Gambar 4.5. Fungsi Keanggotaan Ekonomi Menengah
Batas bawah (500 ribu), batas tengah (1,5 juta), dan batas atas (2,5 juta) himpunan fuzzy ”ekonomi menengah” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "EkonomiMenengah"; select BatasTengah into tengah
from batashimpunan
where HimpunanFuzzy = "EkonomiMenengah"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "EkonomiMenengah";
Jika penghasilan tiap bulan antara 500 ribu dan 1,5 juta (yaitu, antara batas bawah dan batas tengah fungsi keanggotaan ekonomi menengah), maka nilai keanggotaan “ekonomi menengah” (
μ
EKONOMIMENENGAH [X2] ) adalah (x2-500) / (1500-500). Listing programnya adalah sebagai berikut:when (hasil >= bawah and hasil <= tengah) then set myu_ekonomi_menengah
= (hasil - bawah) / (tengah - bawah);
Jika penghasilan tiap bulan antara 1,5 juta dan 2,5 juta (yaitu, antara batas tengah dan batas atas fungsi keanggotaan ekonomi menengah), maka nilai keanggotaan “ekonomi menengah” (
μ
EKONOMIMENENGAH [X2]) adalah (2500-x2) / (2500-1500). Listing programnya adalah sebagai berikut:when (hasil >= tengah and hasil <= atas) then set myu_ekonomi_menengah
= (atas - hasil) / (atas - tengah);
Selain itu, jika penghasilan tiap bulan 0 sampai 500 ribu atau ≥
2,5 juta (yaitu, kurang dari sama dengan batas bawah atau lebih dari sama dengan batas atas fungsi keanggotaan ekonomi menengah), maka
nilai keanggotaan “ ekonomi menengah” (
μ
EKONOMIMENENGAH [X2])adalah 0 (nol).
else set myu_ekonomi_menengah = 0.0;
Function ”funcEkonomiMenengah” akan memberikan nilai
”funcEkonomiMenengah” dilakukan oleh store procedure
”spEkonomiMenengah” yang akan menampilkan nilai dari derajat
keanggotaan ”ekonomi menengah” (myuEkonomiMenengah). Listing
programnya adalah sebagai berikut:
DELIMITER $$
DROP PROCEDURE IF EXISTS `rekonstruksi`.`spEkonomiMenengah`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE
`spEkonomiMenengah` (hasil double) BEGIN
select funcEkonomiMenengah(hasil) as myuEkonomiMenengah;
END$$ DELIMITER ;
f. Perhitungan
μ
EKONOMIKAYA[X2]Perhitungan derajat keanggotaan himpunan fuzzy “ekonomi kaya” menggunakan pendekatan fungsi keanggotaan linear naik. Perhitungan derajat keanggotaan ini, diimplementasikan dalam
function bernama ”funcEkonomiKaya”.
1500 2500 1
0
Kondisi Ekonomi (Rupiah)
] [
μ x2 Kaya
(ribu/bln)
Gambar 4.6. Fungsi Keanggotaan Ekonomi Kaya
Batas bawah (1,5 juta), dan batas atas (2,5 juta) himpunan fuzzy ”ekonomi kaya” diambil dari tabel ”batashimpunan”. Listing programnya adalah:
select BatasBawah into bawah from batashimpunan
where HimpunanFuzzy = "EkonomiKaya"; select BatasAtas into atas
from batashimpunan
where HimpunanFuzzy = "EkonomiKaya";
Jika penghasilan tiap bulan ≤ 1,5 juta (yaitu, kurang dari sama
dengan batas bawah fungsi keanggotaan ekonomi kaya), maka nilai
keanggotaan “ekonomi kaya” (
μ
EKONOMIKAYA [X2]) adalah 0 (nol).Listing programnya adalah sebagai berikut:
when (hasil <= bawah)
then set myu_ekonomi_kaya = 0.0;
Jika penghasilan tiap bulan antara 1,5 juta dan 2,5 juta (yaitu, antara batas bawah dan batas atas fungsi keanggotaan ekonomi kaya),
maka nilai keanggotaan “ekonomi kaya” (
μ
EKONOMIKAYA [X2] ) adalah(x2-1500) / (2500-1500). Listing programnya adalah sebagai berikut:
when (hasil >= bawah and hasil <= atas) then set myu_ekonomi_kaya
= (hasil - bawah) / (atas - bawah);
Selain itu, jika penghasilan tiap bulan ≥ 2,5 juta maka
μ
EKONOMIKAYA [X2] = 1. Listing programnya adalah sebagai berikut:else set myu_ekonomi_kaya = 1.0;
Function ”funcEkonomiKaya” akan memberikan nilai balik
berupa nilai dari myu_ekonomi_kaya. Pemanggilan function
”funcEkonomiKaya” dilakukan oleh store procedure
”spEkonomiKaya” yang akan menampilkan nilai dari derajat
keanggotaan ”ekonomiKaya” (myuEkonomiKaya). Listing programnya
adalah sebagai berikut:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spEkonomiKaya`(hasil double)
BEGIN
select funcEkonomiKaya(hasil) as myuEkonomiKaya;
END$$ DELIMITER ;
2. Mekanisme Inferensi Fuzzy
Pada mekanisme inferensi fuzzy, setelah masing-masing himpunan
fuzzy dihitung derajat keanggotaannya, kemudian ditentukan α-predikat
atau fire-strength dari tiap aturan fuzzy. Perhitungan ini dilakukan dengan
mengambil nilai minimum (MIN) menggunakan operator AND dari derajat keanggotaan variabel kerusakan rumah dan kondisi ekonomi.
a. Perhitungan α-predikat1
Aturan 1 adalah:
[R1] Jika Kondisi Ekonomi MISKIN
dan Kerusakan Rumah BERAT maka Bantuan Rumah BANYAK
α-predikat1 = μEKONOMIMISKIN ∩ μRUSAKBERAT
= min (μEKONOMIMISKIN [x2], μRUSAKBERAT [x1] )
Function yang digunakan bernama “funcAturan1”. Penerapan
pada programnya adalah dicari μEKONOMIMISKIN dan μRUSAKBERAT
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakBerat(rusak) into myu_rusak_berat; select funcEkonomiMiskin(hasil) into myu_ekonomi_miskin;
Pencarian nilai μRUSAKBERAT dan μEKONOMIMISKIN dilakukan
dengan memanggil function “funcRusakBerat” dan
“funcEkonomiMiskin”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_berat dan
myu_ekonomi_miskin.
Jika μRUSAKBERAT<= μEKONOMIMISKIN, maka:
α-predikat1 = μRUSAKBERAT.
Tetapi, jika μEKONOMIMISKIN <= μRUSAKBERAT, maka:
α-predikat1 = μEKONOMIMISKIN.
Selain itu, α-predikat1 = 0. Listing programnya adalah:
case
when (myu_rusak_berat <= myu_ekonomi_miskin) then set pred1 = myu_rusak_berat;
when (myu_ekonomi_miskin <= myu_rusak_berat) then set pred1 = myu_ekonomi_miskin; else
set pred1 = 0.0; end case;
b. Perhitungan α-predikat2
Aturan 2 adalah:
[R2] Jika Kondisi Ekonomi MISKIN dan Kerusakan Rumah SEDANG maka Bantuan Rumah BANYAK
α-predikat2 = μEKONOMIMISKIN∩μRUSAKSEDANG
Function yang digunakan bernama “funcAturan2”. Penerapan
pada programnya adalah dicari μRUSAKSEDANG dan μEKONOMIMISKIN
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakSedang(rusak) into myu_rusak_sedang; select funcEkonomiMiskin(hasil) into myu_ekonomi_miskin;
Pencarian nilai μRUSAKSEDANG dan μEKONOMIMISKIN dilakukan
dengan memanggil function “funcRusakSedang” dan
“funcEkonomiMiskin”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_sedang dan
myu_ekonomi_miskin.
Jika μRUSAKSEDANG<= μEKONOMIMISKIN, maka:
α-predikat2 = μRUSAKSEDANG.
Tetapi, jika μEKONOMIMISKIN<= μRUSAKSEDANG, maka:
α-predikat2 = μEKONOMIMISKIN.
Selain itu, α-predikat2 = 0. Listing programnya adalah:
case
when (myu_rusak_sedang <= myu_ekonomi_miskin) then set pred2 = myu_rusak_sedang;
when (myu_ekonomi_miskin <= myu_rusak_sedang) then set pred2 = myu_ekonomi_miskin; else
set pred2 = 0; end case;
c. Perhitungan α-predikat3
Aturan 3 adalah:
[R3] JIka Kondisi Ekonomi MISKIN
dan Kerusakan Rumah RINGAN maka Bantuan Rumah SEDANG
α-predikat3 = μEKONOMIMISKIN∩μRUSAKRINGAN
= min (μEKONOMIMISKIN [x2], μRUSAKRINGAN [x1] )
Function yang digunakan bernama “funcAturan3”. Penerapan
pada programnya adalah dicari μRUSAKRINGAN dan μEKONOMIMISKIN
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakRingan(rusak) into myu_rusak_ringan; select funcEkonomiMiskin(hasil) into myu_ekonomi_miskin;
Pencarian nilai μRUSAKRINGAN dan μEKONOMIMISKIN dilakukan
dengan memanggil function “funcRusakRingan” dan
“funcEkonomiMiskin”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_ringan dan
myu_ekonomi_miskin.
Jika μRUSAKRINGAN<= μEKONOMIMISKIN, maka:
α-predikat3 = μRUSAKRINGAN.
Tetapi, jika μEKONOMIMISKIN<= μRUSAKRINGAN, maka:
Selain itu, α-predikat3 = 0. Listing programnya adalah:
case
when (myu_rusak_ringan <= myu_ekonomi_miskin) then set pred3 = myu_rusak_ringan;
when (myu_ekonomi_miskin <= myu_rusak_ringan) then set pred3 = myu_ekonomi_miskin; else
set pred3 = 0; end case;
d. Perhitungan α-predikat4
Aturan 4 adalah:
[R4] Jika Kondisi Ekonomi MENENGAH
dan Kerusakan Rumah BERAT maka Bantuan Rumah BANYAK
α-predikat4 = μEKONOMIMENENGAH ∩μRUSAKBERAT
= min ( μEKONOMIMENENGAH [x2], μRUSAKBERAT [x1] )
Function yang digunakan bernama “funcAturan4”. Penerapan
pada programnya adalah dicari μRUSAKBERAT dan μEKONOMIMENENGAH
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakBerat(rusak) into myu_rusak_berat;
select funcEkonomiMenengah(hasil) into myu_ekonomi_menengah;
Pencarian nilai μRUSAKBERAT dan μEKONOMIMENENGAH dilakukan
dengan memanggil function “funcRusakBerat” dan
“funcEkonomiMenengah”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_berat dan
Jika μRUSAKBERAT<= μEKONOMIMENENGAH, maka:
α-predikat4 = μRUSAKBERAT.
Tetapi, jika μEKONOMIMENENGAH<= μRUSAKBERAT, maka:
α-predikat4 = μEKONOMIMENENGAH.
Selain itu, α-predikat4 = 0. Listing programnya adalah:
case
when (myu_rusak_berat <= myu_ekonomi_menengah) then set pred4 = myu_rusak_berat;
when (myu_ekonomi_menengah <= myu_rusak_berat) then set pred4 = myu_ekonomi_menengah; else
set pred4 = 0; end case;
e. Perhitungan α-predikat5
Aturan 5 adalah:
[R5] Jika Kondisi Ekonomi MENENGAH
dan Kerusakan Rumah SEDANG maka Bantuan Rumah SEDANG
α-predikat5 = μEKONOMIMENENGAH ∩μRUSAKSEDANG
= min (μEKONOMIMENENGAH [x2], μRUSAKSEDANG [x1] )
Function yang digunakan bernama “funcAturan5”. Penerapan
pada programnya adalah dicari μRUSAKSEDANG dan μEKONOMIMENENGAH
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakSedang(rusak) into myu_rusak_sedang;
Pencarian nilai μRUSAKSEDANG dan μEKONOMIMENENGAH dilakukan
dengan memanggil function “funcRusakSedang” dan
“funcEkonomiMenengah”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_sedang dan
myu_ekonomi_menengah.
Jika μRUSAKSEDANG<= μEKONOMIMENENGAH, maka:
α-predikat5 = μRUSAKSEDANG.
Tetapi, jika μEKONOMIMENENGAH<= μRUSAKSEDANG, maka:
α-predikat5 = μEKONOMIMENENGAH.
Selain itu, α-predikat5 = 0. Listing programnya adalah:
case
when (myu_rusak_sedang <= myu_ekonomi_menengah) then set pred5 = myu_rusak_sedang;
when (myu_ekonomi_menengah <= myu_rusak_sedang) then set pred5 = myu_ekonomi_menengah; else
set pred5 = 0.0; end case;
f. Perhitungan α-predikat6
Aturan 6 adalah:
[R6] Jika Kondisi Ekonomi MENENGAH
dan Kerusakan Rumah RINGAN maka Bantuan Rumah SEDIKIT
α-predikat6 = μEKONOMIMENENGAH ∩μRUSAKRINGAN
Function yang digunakan bernama “funcAturan6”. Penerapan
pada programnya adalah dicari μRUSAKRINGAN dan μEKONOMIMENENGAH
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakRingan(rusak) into myu_rusak_ringan;
select funcEkonomiMenengah(hasil) into myu_ekonomi_menengah;
Pencarian nilai μRUSAKRINGAN dan μEKONOMIMENENGAHdilakukan
dengan memanggil function “funcRusakRingan” dan
“funcEkonomiMenengah”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_ringan dan
myu_ekonomi_menengah.
Jika μRUSAKRINGAN<= μEKONOMIMENENGAH, maka:
α-predikat6 = μ RUSAKRINGAN.
Tetapi, jika μ EKONOMIMENENGAH <= μ RUSAKRINGAN, maka:
α-predikat6 = μ EKONOMIMENENGAH.
Selain itu, α-predikat6 = 0. Listing programnya adalah:
case when (myu_rusak_ringan <= myu_ekonomi_menengah) then set pred6 = myu_rusak_ringan;
when (myu_ekonomi_menengah <= myu_rusak_ringan) then set pred6 = myu_ekonomi_menengah; else
set pred6 = 0; end case;
g. Perhitungan α-predikat7
Aturan 7 adalah:
dan Kerusakan Rumah BERAT maka Bantuan Rumah SEDANG
α-predikat7 = μEKONOMIKAYA∩μRUSAKBERAT
= min ( μEKONOMIKAYA [x2], μRUSAKBERAT [x1] )
Function yang digunakan bernama “funcAturan7”. Penerapan
pada programnya adalah dicari μRUSAKBERAT dan μEKONOMIKAYA terlebih
dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakBerat(rusak) into myu_rusak_berat; select funcEkonomiKaya(hasil) into myu_ekonomi_kaya;
Pencarian nilai μRUSAKBERAT dan μEKONOMIKAYA dilakukan
dengan memanggil function “funcRusakBerat” dan
“funcEkonomiKaya”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_berat dan
myu_ekonomi_kaya.
Jika μRUSAKBERAT<= μEKONOMIKAYA, maka:
α-predikat7 = μRUSAKBERAT.
Tetapi, jika μEKONOMIKAYA <= μRUSAKBERAT, maka:
α-predikat7 = μEKONOMIKAYA.
Selain itu, α-predikat7 = 0. Listing programnya adalah:
case
when (myu_rusak_berat <= myu_ekonomi_kaya) then set pred7 = myu_rusak_berat; when (myu_ekonomi_kaya <= myu_rusak_berat) then set pred7 = myu_ekonomi_kaya; else
set pred7 = 0; end case;
h. Perhitungan α-predikat8
Aturan 8 adalah:
[R8] Jika Kondisi Ekonomi KAYA
dan Kerusakan Rumah SEDANG maka Bantuan Rumah SEDIKIT
α-predikat8 = μEKONOMIKAYA∩μRUSAKSEDANG
= min ( μEKONOMIKAYA [x2], μRUSAKSEDANG [x1] )
Function yang digunakan bernama “funcAturan8”. Penerapan
pada programnya adalah dicari μRUSAKSEDANG dan μEKONOMIKAYA
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakSedang(rusak) into myu_rusak_sedang; select funcEkonomiKaya(hasil) into myu_ekonomi_kaya;
Pencarian nilai μRUSAKSEDANG dan μEKONOMIKAYA dilakukan
dengan memanggil function “funcRusakSedang” dan
“funcEkonomiKaya”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_sedang dan
myu_ekonomi_kaya.
Jika μRUSAKSEDANG<= μEKONOMIKAYA, maka:
α-predikat8 = μRUSAKSEDANG.
Tetapi, jika μEKONOMIKAYA <= μRUSAKSEDANG, maka:
Selain itu, α-predikat8 = 0. Listing programnya adalah:
case
when (myu_rusak_sedang <= myu_ekonomi_kaya) then set pred8 = myu_rusak_sedang; when (myu_ekonomi_kaya <= myu_rusak_sedang) then set pred8 = myu_ekonomi_kaya; else
set pred8 = 0; end case;
i. Perhitungan α-predikat9
Aturan 9 adalah:
[R9] Jika Kondisi Ekonomi KAYA
dan Kerusakan Rumah RINGAN maka Bantuan Rumah SEDIKIT
α-predikat9 = μEKONOMIKAYA ∩μRUSAKRINGAN
= min ( μEKONOMIKAYA [x2], μRUSAKRINGAN [x1] )
Function yang digunakan bernama “funcAturan9”. Penerapan
pada programnya adalah dicari μRUSAKRINGAN dan μEKONOMIKAYA
terlebih dahulu, kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Listing programnya adalah:
select funcRusakRingan(rusak) into myu_rusak_ringan; select funcEkonomiKaya(hasil) into myu_ekonomi_kaya;
Pencarian nilai μRUSAKRINGAN dan μEKONOMIKAYA dilakukan
dengan memanggil function “funcRusakRingan” dan
“funcEkonomiKaya”. Hasil masing - masing function tersebut
kemudian disimpan dalam variabel myu_rusak_ringan dan
Jika μRUSAKRINGAN<= μEKONOMIKAYA, maka:
α-predikat9 = μRUSAKRINGAN.
Tetapi, jika μEKONOMIKAYA<= μRUSAKRINGAN, maka:
α-predikat9 = μEKONOMIKAYA.
Selain itu, α-predikat9 = 0. Listing programnya adalah:
case
when (myu_rusak_ringan <= myu_ekonomi_kaya) then set pred9 = myu_rusak_ringan;
when (myu_ekonomi_kaya <= myu_rusak_ringan) then set pred9 = myu_ekonomi_kaya; else set pred9 = 0;
end case;
3. Unit Defuzifikasi
a. Perhitungan Nilai Z Tiap Aturan Fuzzy
Perhitungan nilai z ini merupakan perhitungan bantuan dana rekonstruksi gempa yang direkomendasikan (sedikit, sedang, dan banyak) pada tiap aturan. Batas bawah, tengah, dan atas untuk tiap himpunan bantuan diambil dari tabel “batashimpunan” dengan permisalan sebagai berikut:
- batas BAWAH bantuan SEDIKIT adalah 1 juta,
- batas ATAS bantuan SEDIKIT adalah 10 juta,
- batas BAWAH bantuan SEDANG adalah 7 juta,
- batas TENGAH bantuan SEDANG adalah 15 juta,
- batas ATAS bantuan SEDANG adalah 23 juta,
- batas BAWAH bantuan BANYAK adalah 20 juta, dan
1) Perhitungan z1
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat1 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z1. Caranya adalah dengan memanggil function
“funcAturan1” menggunakan perintah:
select funcAturan1(rusak, hasil) into pred1;
Jika kondisi ekonomi MISKIN dan kerusakan rumah BERAT, maka akan mendapatkan bantuan rumah BANYAK.
Perhitungan nilai z1 (bantuan BANYAK), adalah:
z1 = 20 + (α− predikat1* (30 - 20)).
Implementasi pada program adalah sebagai berikut:
set bantuan1 = bawahBantuanBanyak +
(pred1 * (atasBantuanBanyak - bawahBantuanBanyak)); 2) Perhitungan z2
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat2 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z2. Caranya adalah dengan memanggil function
“funcAturan2” menggunakan perintah:
select funcAturan2(rusak, hasil) into pred2;
Jika kondisi ekonomi MISKIN dan kerusakan rumah SEDANG, maka akan mendapatkan bantuan rumah BANYAK.
Perhitungan nilai z2 (bantuan BANYAK), adalah:
Implementasi pada program adalah sebagai berikut:
set bantuan2 = bawahBantuanBanyak +
(pred2 * (atasBantuanBanyak - bawahBantuanBanyak)); 3) Perhitungan z3
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat3 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z3. Caranya adalah dengan memanggil function
“funcAturan3” menggunakan perintah:
select funcAturan3(rusak, hasil) into pred3;
Jika kondisi ekonomi MISKIN dan kerusakan rumah RINGAN, maka akan mendapatkan bantuan rumah SEDANG.
Perhitungan nilai z3 (bantuan SEDANG), adalah:
z3 = 23 - (α− predikat3* (23 - 15)).
Implementasi pada program adalah sebagai berikut:
set bantuan3 = atasBantuanSedang –
(pred3 * (atasBantuanSedang - tengahBantuanSedang)); 4) Perhitungan z4
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat4 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z4. Caranya adalah dengan memanggil function
“funcAturan4” menggunakan perintah:
Jika kondisi ekonomi MENENGAH dan kerusakan rumah BERAT, maka akan mendapatkan bantuan rumah BANYAK.
Perhitungan nilai z4 (bantuan BANYAK), adalah:
z4 = 20 + (α−predikat4* (30 - 20)).
Implementasi pada program adalah sebagai berikut:
set bantuan4 = bawahBantuanBanyak +
(pred4 * (atasBantuanBanyak - bawahBantuanBanyak)); 5) Perhitungan z5
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat5 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z5. Caranya adalah dengan memanggil function
“funcAturan5” menggunakan perintah:
select funcAturan5(rusak, hasil) into pred5;
Jika kondisi ekonomi MENENGAH dan kerusakan rumah SEDANG, maka akan mendapatkan bantuan rumah SEDANG.
Perhitungan nilai z5 (bantuan SEDANG), adalah:
z5 = 23 - (α− predikat5* (23 - 15)).
Implementasi pada program adalah sebagai berikut:
set bantuan5 = atasBantuanSedang –
(pred5 * (atasBantuanSedang - tengahBantuanSedang)); 6) Perhitungan z6
Function yang digunakan adalah “funcBantuan”. Nilai α
perhitungan z6. Caranya adalah dengan memanggil function
“funcAturan6” menggunakan perintah:
select funcAturan6(rusak, hasil) into pred6;
Jika kondisi ekonomi MENENGAH dan kerusakan rumah RINGAN, maka akan mendapatkan bantuan rumah SEDANG.
Perhitungan nilai z6 (bantuan SEDANG), adalah:
z6 = 7 + (α −predikat6* (15 - 7)).
Implementasi pada program adalah sebagai berikut:
set bantuan6 = bawahBantuanSedang +
(pred6 * (tengahBantuanSedang - bawahBantuanSedang)); 7) Perhitungan z7
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat7 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z7. Caranya adalah dengan memanggil function
“funcAturan7” menggunakan perintah:
select funcAturan7(rusak, hasil) into pred7;
Jika kondisi ekonomi KAYA dan kerusakan rumah BERAT, maka akan mendapatkan bantuan rumah SEDANG.
Perhitungan nilai z7 (bantuan SEDANG), adalah:
z7 = 7 + (α −predikat7* (15 - 7)).
Implementasi pada program adalah sebagai berikut:
set bantuan7 = bawahBantuanSedang +
8) Perhitungan z8
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat8 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z8. Caranya adalah dengan memanggil function
“funcAturan8” menggunakan perintah:
select funcAturan8(rusak, hasil) into pred8;
Jika kondisi ekonomi KAYA dan kerusakan rumah SEDANG, maka akan mendapatkan bantuan rumah SEDIKIT.
Perhitungan nilai z8 (bantuan SEDIKIT), adalah:
z8 = 10 - (α− predikat8* (10 - 1)).
Implementasi pada program adalah sebagai berikut:
set bantuan8 = atasBantuanSedikit –
(pred8 * (atasBantuanSedikit - bawahBantuanSedikit)); 9) Perhitungan z9
Function yang digunakan adalah “funcBantuan”. Nilai α
-predikat9 harus diketahui terlebih dahulu sebelum melakukan
perhitungan z9. Caranya adalah dengan memanggil function
“funcAturan9” menggunakan perintah:
select funcAturan9(rusak, hasil) into pred9;
Jika kondisi ekonomi KAYA dan kerusakan rumah RINGAN, maka akan mendapatkan bantuan rumah SEDIKIT.
Perhitungan nilai z9 (bantuan SEDIKIT), adalah:
Implementasi pada program adalah sebagai berikut:
set bantuan9 = atasBantuanSedikit –
(pred9 * (atasBantuanSedikit - bawahBantuanSedikit));
b. Perhitungan Rata-Rata Nilai Z
Setelah nilai z untuk tiap aturan fuzzy diketahui, langkah yang terakhir adalah menghitung rata-rata nilai z dari ke-9 aturan tersebut. Nilai z dicari dengan cara sebagai berikut:
z = 9 1 9 9 1 1* ) ( * ) ( predikat predikat z predikat z predikat − + + − − + + − α α α α K K K K
Maka, implementasi pada program adalah sebagai berikut: