• Tidak ada hasil yang ditemukan

BAB V IMPLEMENTASI, HASIL, DAN PEMBAHASAN

5.1 Implementasi Algoritma Sistem Inferensi Fuzzy Metode Tsukamoto

5.1.1 Perhitungan Derajat Keanggotaan

BAB V IMPLEMENTASI, HASIL, DAN PEMBAHASAN

5.1 Implementasi Algoritma Sistem Inferensi Fuzzy Metode Tsukamoto

Perhitungan untuk menentukan besarnya bantuan dana pembangunan rumah tidak layak huni yang akan diterima kepala keluarga terdapat 3 tahapan, yaitu : perhitungan derajat keanggotaan variabel masukan( kerusakan rumah dan kondisi ekonomi ), mekanisme inferensi fuzzy, dan unit defuzifikasi. Berikut penjelasan lebih lanjut :

5.1.1 Perhitungan Derajat Keanggotaan

Berikut ini penjelasan lebih lanjut mengenai perhitungan derajat keanggotaan tiap himpunan fuzzy dari variabel kerusakan rumah dan kondisi ekonomi dari kasus yang diambil dari survei terhadap rumah seorang Kepala Keluarga bernama Asmoro Bayu Nurprasetyo dengan penghasilan Rp 700.000,00 per-bulan. Dan memiliki rumah dengan kondisi seperti gambar berikut,

Kondisi Nilai 1 2 3 4

Atap *

Dinding *

Lantai *

a. Perhitungan Persentase Kerusakan Rumah

Perhitungan persentase kerusakan rumah harus ditentukan dengan menghitung dari nilai bobot yang telah ditentukan. Berikut formula untuk menentuka persentase kerusakn rumah :

K =

∑ ∑

x 100%

Keterangan :

K = Persentase kerusakan rumah n = nilai

maka diperoleh perhitungan seperti dibawah ini : K =

= 0,67 x 100 % = 67 %

Jadi persentase kerusakan rumah adalah 67 %. b. Perhitungan

µ

RusakRingan [y]

Perhitungan derajat keanggotaan himpunan fuzzy “rusak ringan” menggunakan pendekatan fungsi keanggotaan linear turun. Perhitungan derajat keanggotaan ini, diimplementasi dalam

function bernama “ FuncRusakringan”.

Kerusakan Rumah ( Persen ) Gambar 5. 1 Fungsi Keanggotaan Rusak Ringan

Batas bawah ( 0% ) dan batas atas (50%) himpunan fuzzy “ rusak ringan” diambil dari tabel “ batashimpunan”. Listing program adalah :

select batasbawah ,batastengah, batasatas from

batashimpunan where himpunanfuzzy = 'rusakringan'; Jika kerusakan rumah berada diantara 0 % sampai 50 % maka nilai keanggotaan “rusak ringan” adalah (50-y) / (50-0). Listing programnya adalah

if (kerusakan >= bawah && kerusakan <= atas) {

myuRusakRingan = (double) Math.round((atas

-kerusakan) / (atas - bawah) * bulat) / bulat;

if (myuRusakRingan <= 0) {

myuRusakRingan = 0; }

Jika kerusakan rumah lebih besar 50 % maka µ RusakRingan [y] = 0. Karena nilai kerusakan rumah sebesar 67% maka nilai kerusakan tersebut diatas batas atas yaitu sebesar 50 %. Listing programnya sebagai berikut :

if (kerusakan >= atas) { myuRusakRingan = 0; } maka menjadi : if (67 >= 50) { myuRusakRingan = 0; }

Jadi nilai myuRusakRingan adalah 0.

Function “FuncRusakringan” akan memberikan nilai balik berupa nulai dari myuRusakRingan.

c. Perhitungan

µ

RusakSedang [y]

Perhitungan derajat keanggotaan himpunan fuzzy “rusak sedang” menggunakan pendekatan fungsi keanggotaan segitiga. Perhitungan derajat keanggotaan ini, diimplementasi dalam

function bernama “ FuncRusakSedang”.

Kerusakan Rumah (Persen)

Gambar 5. 2 Fungsi Keanggotaan Rusak Sedang Batas bawah (0%), batas tengah (50%) dan batas atas (100%) himpunan fuzzy “rusak sedang” diambil dari tabel “ batashimpunan”. Berikut Listing programnya :

select batasbawah, batastengah, batasatas from batashimpunan where himpunanfuzzy = 'rusakringan';

Jika kerusakan rumah berada diantara 0% sampai 50% ( antara batas bawah dan batas tengah fungsi keanggotaan rusak sedang), maka nilai kenaggotaan “rusak sedang”

µ

RusakSedang [y] adalah (y-0) / (50-0). Berikut listing programnya :

if (kerusakan2 >= bawah2 && kerusakan2 <= tengah2) { myuRusakSedang = (double) Math.round((kerusakan2 - bawah2)/(tengah2 - bawah2) * bulat) / bulat;

}

Jika kerusakan rumah berada diantara 50% sampai 100% ( antara batas tengah dan batas atas fungsi keanggotaan rusak sedang), maka nilai keanggotaan “rusak sedang”

µ

RusakSedang [y] adalah (100-y) / (100-50). Karena nilai kerusakan rumah sebesar 67% maka nilai kerusakan tersebut berada diantara batas tengah yaitu sebesar 50 % dan batas atas yaitu 100% . Berikut adalah listing programnya:

if (kerusakan2 >= tengah2 && kerusakan2 <= atas2) { myuRusakSedang = (double) Math.round((atas2 - kerusakan2) / (atas2 - tengah2) * bulat) / bulat; }

Maka menjadi :

if (67 >= 50 && 67 <= 100) {

myuRusakSedang = (double) Math.round((100 - 67) / (67 - 100) * bulat) / bulat;

}

Jadi nilai myuRusakSedang adalah 0,66.

Function “FuncRusakSedang” akan memberikan nilai balik berupa nulai dari myuRusakSedang.

d. Perhitungan

µ

RusakBerat [y]

Perhitungan derajat keanggotaan himpunan fuzzy “rusak berat” menggunakan pendekatan fungsi keanggotaan linear naik. Perhitungan derajat keanggotaan ini, diimplementasi dalam

function bernama “ FuncRusakBerat”.

Kerusakan Rumah (Persen)

Gambar 5. 3 Fungsi Keanggotaan Rusak Berat Batas bawah (50%), batas tengah (100%) dan batas atas (100%) himpunan fuzzy “rusak berat” diambil dari tabel “ batashimpunan”. Berikut Listing programnya :

select batasbawah, batastengah, batasatas from

batashimpunan where himpunanfuzzy = 'rusakberat'; Jika kerusakan rumah berada diantara 50% sampai 100% ( antara batas bawah dan batas tengah fungsi kenaggotaan rusak berat), maka nilai kenaggotaan “rusak berat”

µ

RusakBerat [y] adalah (y-50) / (100-(y-50). Karena nilai kerusakan rumah sebesar 67% maka nilai kerusakan tersebut berada diantara batas bawah yaitu sebesar 50 % dan batas tengah yaitu 100%. Berikut listing programnya : if (kerusakan3 >= bawah3 && kerusakan3 <= tengah3) {

myuRusakBerat = (double) Math.round((kerusakan3 - bawah3) / (tengah3 - bawah3) * bulat) / bulat; }

if (67 >= 50 && 67 <= 100) {

myuRusakBerat = (double) Math.round((67 - 50) / (100 - 50) * bulat) / bulat;

}

Jadi nilai myuRusakBerat adalah 0,34.

Jika kerusakan rumah lebih besar 100 % (batas atas) maka nilai keanggotaan “rusak berat”

µ

RusakBerat [y] =1. Berikut adalah listing programnya:

if (kerusakan3 >= atas3) { myuRusakBerat = 1; }

Function “FuncRusakBerat” akan memberikan nilai balik berupa nulai dari myuRusakBerat.

e. Perhitungan

µ

Miskin [x]

Perhitungan derajat keanggotaan himpunan fuzzy “miskin” menggunakan pendekatan fungsi keanggotaan linear turun.

Perhitungan derajat keanggotaan ini, diimplementasi dalam

function bernama “ FuncMiskin”.

Kondisi Ekonomi (rupiah) Gambar 5. 4 Fungsi Keanggotaan Miskin

Batas bawah ( 0 ribu ) batas tengah ( 500 ribu) dan batas atas (1500 ribu) himpunan fuzzy “ Miskin ” diambil dari tabel “ batashimpunan”. Listing program adalah :

select batasbawah,batastengah,batasatas from batashimpunan where himpunanfuzzy = 'miskin';

Jika penghasilan berada diantara 500 ribu sampai 1500 ribu (antara batas tengah dan batas atas) maka nilai keanggotaan “Miskin” adalah (1500-x) / (1500-500). Karena nilai penghasilan sebesar 700000 maka nilai penghasilan tersebut berada diantara batas tengah yaitu sebesar 500000 dan batas atas yaitu 1000000. Listing programnya adalah

if (kondisi4 >= tengah4 && kondisi4 <= atas4) {

myuMiskin = (double) Math.round((atas4 - kondisi4) / (atas4 - tengah4) * bulat) / bulat;

}

Maka menjadi :

if (700000 >= 500000 && 700000 <= 1000000) {

myuMiskin = (double) Math.round((1000000 - 700000) / (1000000 - 500000) * bulat) / bulat;

}

Jadi nilai myuMiskin adalah 0,8.

Jika penghasilan berada diantara 0 ribu dan 500 ribu ( antara batas bawah dan batas tengah) maka

µ

Miskin [x]

=

1. Listing programnya sebagai berikut :

if (kondisi4 >= bawah4 && kondisi4 <= tengah4) { myuMiskin = 1;

}

Jika penghasilan tiap bulan lebih besar 1,5 juta maka

µ

Miskin

[x]

=

0

.

Berikut listing programnya :

if (kondisi4 >= atas4) { myuMiskin = 0;

}

Function “FuncMiskin” akan memberikan nilai balik berupa nulai dari myuMiskin.

f. Perhitungan

µ

Menengah [x]

Perhitungan derajat keanggotaan himpunan fuzzy “menengah” menggunakan pendekatan fungsi keanggotaan segitiga. Perhitungan derajat keanggotaan ini, diimplementasi dalam function bernama “ FuncMiskin”.

Kondisi Ekonomi (rupiah)

Gambar 5. 5 Fungsi Keanggotaan Menengah

Batas bawah ( 500 ribu ) batas tengah ( 1500 ribu) dan batas atas (2500 ribu) himpunan fuzzy “ Menengah ” diambil dari tabel “ batashimpunan”. Listing program adalah :

select batasbawah,batastengah,batasatas from

batashimpunan where himpunanfuzzy = 'menengah';

Jika penghasilan berada diantara 500 ribu sampai 1500 ribu (antara batas bawah dan batas tengah) maka nilai keanggotaan “Menengah” adalah (x-500) / (1500-500). Karena nilai penghasilan sebesar 700000 maka nilai penghasilan tersebut berada diantara batas awah yaitu sebesar 500000 dan batas tengah yaitu 1500000. Listing programnya adalah

if (kondisi5 >= bawah5 && kondisi5 <= tengah5) {

myuMenengah = (double) Math.round((kondisi5 - bawah5) / (tengah5 - bawah5) * bulat) / bulat; }

Maka menjadi :

if (700000 >= 500000 && 700000 <= 1500000) {

myuMenengah = (double) Math.round((700000 -

500000) / (1500000 - 500000) * bulat) / bulat; }

Jadi nilai myuMenengah adalah 0,2.

Jika penghasilan berada diantara 1500 ribu dan 2500 ribu ( antara batas tengah dan batas batas atas) maka

µ

Menengah

[x]

adalah (2500-x) / (2500-1500). Listing programnya sebagai berikut : if (kondisi5 >= tengah5 && kondisi5 <= atas5) {

myuMenengah = (double) Math.round((atas5 -

kondisi5) / (atas5 - tengah5) * bulat) / bulat; }

Function “FuncMenengah” akan memberikan nilai balik berupa nulai dari myuMenengah.

g. Perhitungan

µ

Kaya [x]

Perhitungan derajat keanggotaan himpunan fuzzy “kaya” menggunakan pendekatan fungsi keanggotaan linear naik. Perhitungan derajat keanggotaan ini, diimplementasi dalam

function bernama “ FuncKaya”.

Kondisi Ekonomi (rupiah) Gambar 5. 6 Fungsi Keanggotaan Kaya

Batas bawah ( 1500 ribu ) batas tengah ( 2500 ribu) dan batas atas (2500 ribu) himpunan fuzzy “ kaya ” diambil dari tabel “ batashimpunan”. Listing program adalah :

select batasbawah, batastengah, batasatas from batashimpunan where himpunanfuzzy = 'kaya';

Jika penghasilan berada diantara 1500 ribu sampai 2500 ribu(antara batas bawah dan batas tengah) maka nilai keanggotaan “Kaya” adalah (x-1500) / (2500-1500). Listing programnya adalah if (kondisi6 >= bawah6 && kondisi6 <= tengah6) {

myuKaya = (double) Math.round((kondisi6 - bawah6) / (tengah6 - bawah6) * bulat) / bulat;

}

Jika penghasilan berada lebih besar 2500 ribu (dari batas atas) maka

µ

Kaya [x]

=

1. Listing programnya sebagai berikut :

if (kondisi6 >= atas6) { myuKaya = 1;

}

Jika penghasilan berada diantara 0 dengan 1500 ribu, maka

µ

Kaya

[x]

=

0. Karena nilai penghasilan 700000 maka myuKaya adalah 0. Function “FuncKaya” akan memberikan nilai balik berupa nulai dari myuKaya.

5.1.2 Mekanisme Inferensi Fuzzy

Pada mekanisme inferensi fuzzy, setelah masing-masing himpunan

fuzzy dihitung derajat keanggotaanya, kemudian ditentukan a-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 =

µ

MISKIN ∩ µBERAT

= min(

µ

MISKIN [x],

µ

BERAT[y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakBerat adalah 0.34 dan myuMiskin adalah 0.8. Berikut listing programnya :

if (rule1 == 1) {

pred1 = Math.min(myuRusakBerat, myuMiskin); }

Maka menjadi :

if (rule1 == 1) {

pred1 = Math.min(0.34, 0.8); }

Jadi nilai a-predikat1 adalah 0.34.

Selain itu, a-predikat1=0. Berikut listing programnya : else {

pred1 = 0; }

b. Perhitungan α-predikat2 Aturan 2 adalah

[R2] Jika Kondisi Ekonomi MISKIN Dan Kerusakan Rumah SEDANG Maka Bantuan Rumah BANYAK α-predikat2 =

µ

MISKIN ∩ µSEDANG

= min(

µ

MISKIN [x],

µ

SEDANG[y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakSedang adalah 0.66 dan myuMiskin 0.8. Berikut listing programnya :

if (rule2 == 1) {

pred2 = Math.min(myuRusakSedang, myuMiskin); }

Maka menjadi : if (rule2 == 1) {

pred2 = Math.min(0.66, 0.8); }

Jadi nilai a-predikat2 adalah 0.66.

Selain itu, a-predikat2 =0. Berikut listing programnya : else {

pred2 = 0; }

c. Perhitungan α-predikat3 Aturan 3 adalah

[R3] Jika Kondisi Ekonomi MISKIN Dan Kerusakan Rumah RINGAN Maka Bantuan Rumah SEDANG α-predikat3 =

µ

MISKIN ∩ µRINGAN

= min(

µ

MISKIN [x],

µ

RINGAN[y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakRingan adalah 0 dan myuMiskin 0.8. berikut listing programnya :

if (rule3 == 1) {

pred3 = Math.min(myuRusakRingan, myuMiskin); }

Maka menjadi : if (rule3 == 1) {

pred3 = Math.min(0, 0.8); }

Jadi nilai a-predikat3 adalah 0.

Selain itu, a-predikat3 = 0. Berikut listing programnya : else {

pred3 = 0; }

d. Perhitungan α-predikat4 Aturan 4 adalah

[R4] Jika Kondisi Ekonomi MENENGAH Dan Kerusakan Rumah BERAT Maka Bantuan Rumah BANYAK α-predikat4 =

µ

MENENGAH ∩ µBERAT

= min(

µ

MENENGAH [x],

µ

BERAT [y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakBerat adalah 0.34 dan myuMenengah adalah 0.2. Berikut listing programnya :

if (rule4 == 1) { pred4= Math.min(myuRusakBerat,myuMenengah); } Maka menjadi : if (rule4 == 1) { pred4= Math.min(0.34,0.2); }

Jadi nilai a-predikat4 adalah 0.2.

Selain itu, a-predikat4 =0. Berikut listing programnya : else {

pred4 = 0; }

e. Perhitungan α-predikat5 Aturan 5 adalah

[R5] Jika Kondisi Ekonomi MENENGAH Dan Kerusakan Rumah SEDANG Maka Bantuan Rumah SEDIKIT α-predikat5 =

µ

MENENGAH ∩ µSEDANG

= min(

µ

MENENGAH [x],

µ

SEDANG [y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakSedang adalah 0.66 dan myuMenengah adalah 0.2. Berikut listing programnya :

if (rule5 == 1) {

pred5 = Math.min(myuRusakSedang, myuMenengah); }

Maka menjadi : if (rule5 == 1) {

pred5 = Math.min(0.66, 0.2); }

Jadi nilai a-predikat5 adalah 0.2.

Selain itu, a-predikat5 = 0. Berikut listing programnya : else {

pred5 = 0; }

f. Perhitungan α-predikat6 Aturan 6 adalah

[R6] Jika Kondisi Ekonomi MENENGAH Dan Kerusakan Rumah RINGAN Maka Bantuan Rumah SEDANG α-predikat6 =

µ

MENENGAH ∩ µRINGAN

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakRingan adalah 0 dan myuMenengah adalah 0.2. Berikut listing programnya :

if (rule6 == 1) {

pred6 = Math.min(myuRusakRingan, myuMenengah); }

Maka menjadi : if (rule6 == 1) {

pred6 = Math.min(0, 0.2); }

Jadi nilai a-predikat6 adalah 0.

Selain itu, a-predikat6 = 0. Berikut listing programnya : else {

pred6 = 0; }

g. Perhitungan α-predikat7 Aturan 7 adalah

[R7] Jika Kondisi Ekonomi KAYA Dan Kerusakan Rumah BERAT Maka Bantuan Rumah SEDIKIT α-predikat7 =

µ

KAYA ∩ µBERAT

= min(

µ

KAYA [x],

µ

BERAT [y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakBerat adalah 0.34 dan myuKaya adalah 0. Berikut listing programnya :

if (rule7 == 1) {

pred7 = Math.min(myuRusakBerat, myuKaya); } Maka menjadi :

if (rule7 == 1) {

pred7 = Math.min(0.34, 0); }

Jadi nilai a-predikat7 adalah 0.

Selain itu, a-predikat7 = 0. Berikut listing programnya : else {

pred7 = 0; }

h. Perhitungan α-predikat8 Aturan 8 adalah

[R8] Jika Kondisi Ekonomi KAYA Dan Kerusakan Rumah SEDANG Maka Bantuan Rumah SEDIKIT α-predikat8 =

µ

KAYA ∩ µSEDANG

= min(

µ

KAYA [x],

µ

SEDANG [y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakSedang adalah 0.66 dan myuKaya adalah 0. Berikut listing programnya :

if (rule8 == 1) {

pred8 = Math.min(myuRusakSedang, myuKaya); }

Maka menjadi : if (rule8 == 1) {

pred8 = Math.min(0.66, 0); }

Jadi nilai a-predikat8 adalah 0.

else {

pred8 = 0;

}

i. Perhitungan α-predikat9 Aturan 9 adalah

[R9] Jika Kondisi Ekonomi KAYA Dan Kerusakan Rumah RINGAN Maka Bantuan Rumah SEDIKIT α-predikat9 =

µ

KAYA ∩ µRINGAN

= min(

µ

KAYA [x],

µ

RINGAN [y] )

Kemudian dicari nilai MIN dari kedua himpunan fuzzy tersebut. Untuk nilai myuRusakRingan adalah 0 dan myuKaya adalah 0. Berikut listing programnya :

if (rule9 == 1) {

pred9 = Math.min(myuRusakRingan, myuKaya); }

Maka mejadi : if (rule9 == 1) {

pred9 = Math.min(0, 0); }

Jadi nilai a-predikat9 adalah 0.

Selain itu, a-predikat9 = 0. Berikut listing programnya : else {

pred9 = 0; }

Dokumen terkait