• Tidak ada hasil yang ditemukan

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:

Dokumen terkait