Algoritma Fuzzy AHP 39


Algoritma Fuzzy AHP (Analytic Hierarchy Process) adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah menentukan nilai akhir kinerja karyawan.
Secara singkat, algoritma ini merupakan penggabungan dari Algoritma Fuzzy Logic dan Algoritma AHP (Analytic Hierarchy Process) yang sudah dijelaskan sebelumnya. Sebelum memperoleh jawaban akhir menggunakan teknik AHP, akan digunakan teknik Fuzzy Logic untuk memperoleh bobot kriteria yang lebih penting dibandingkan kriteria lainnya.



Diasumsikan ada 3 kriteria penentu nilai kinerja karyawan, yaitu jumlah jam kerja, jumlah barang yang dikerjakan, dan jumlah barang lolos uji
Kemudian terdapat 3 data karyawan yang sudah diketahui nilai pada masing-masing kriteria tersebut
Maka tentukan nilai akhir dari masing-masing karyawan
Diasumsikan data karyawan adalah sebagai berikut:

Namajumlah jam kerjajumlah barang yang dikerjakanjumlah barang yang lolos uji
Andi2008070
Budi1906045
Dedi1806555
Erdi1907060

Langkah pertama adalah memasukkan data-data yang digunakan.
Contoh data awal adalah sebagai berikut:

namaKaryawan = {'Andi' 'Budi' 'Dedi' 'Erdi'};
data = [ 200 80 70
         190 60 45
         180 65 55
         190 70 60];

Langkah-langkah penggunaan algoritma ini adalah

1. Tentukan batas maksimal untuk ketiga kriteria diatas
Diasumsikan dalam kasus ini:
jam kerja maksimal adalah 200 jam
jumlah barang maksimal yang dapat dihasilkan adalah 100 buah
jumlah barang berkualitas adalah 100 buah
Sehingga, bilamana terdapat karyawan yang bekerja 200 jam, menghasilkan 100 buah barang, dan semuanya lolos uji, maka nilai kinerjanya adalah sempurna (1)

maksJamKerja = 200;
maksJumlahBarang = 100;
maksKualitas = 100;

2. Lakukan normalisasi data pada masing-masing kriteria
dengan cara membagi masing-masing data dengan nilai maksimal pada masing-masing kriteria
Normalisasi perlu dilakukan agar tidak ada kriteria yang lebih mendominasi kriteria lain karena angka yang terlalu tinggi

data(:,1) = data(:,1) / maksJamKerja;
data(:,2) = data(:,2) / maksJumlahBarang;
data(:,3) = data(:,3) / maksKualitas;

3. Tentukan relasi antar kriteria yang digunakan
Ada 3 kriteria yang digunakan dalam kasus ini, yaitu: jam kerja, Jumlah barang yang dikerjakan, dan jumlah barang yang lolos uji (berkualitas)
diasumsikan dalam kasus ini:
jam kerja 0.5 kali lebih penting daripada jumlah barang
jam kerja 0.5 kali lebih penting daripada kualitas barang
Jumlah barang 0.25 kali lebih penting daripada kualitas barang

4. Buat matriks dari relasi antar kriteria tersebut
Dengan asumsi diatas, maka matriks yang dihasilkan adalah sebagai berikut:

KriteriaJam KerjaJumlah BarangKualitas
Jam Kerja10.50.5
Jumlah Barang210.25
Kualitas241

Dalam penerapan kedalam skrip, nilai matriks bagian segitiga bawah sementara ini diisi dengan 0
Untuk nantinya akan diisi dengan nilai seperti diatas pada saat perhitungan

relasiAntarKriteria = [ 1     2     2
                        0     1     4
                        0     0     1];

5. Tentukan TFN, yaitu Triangular Fuzzy Number
TFN adalah sekumpulan 3 angka yang membentuk grafik fuzzy pada nilai fuzzy 0, kemudian naik ke 1, dan kembali ke 0
TFN berisi 2 kelompok data,
kelompok pertama adalah TFN dalam nilai sebenarnya
kelompok kedua adalah invers dari TFN, yaitu dengan mengubah x menjadi 1/x dan membalik urutan angka TFN

TFN = {[-100/3 0     100/3] 	[3/100  0     -3/100]
       [0      100/3 200/3] 	[3/200  3/100 0     ]
       [100/3  200/3 300/3] 	[3/300  3/200 3/100 ]
       [200/3  300/3 400/3] 	[3/400  3/300 3/200 ]};

6. Lakukan perhitungan rasio konsistensi untuk memastikan bahwa matriks relasi antara kriteria sudah bernilai benar
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 6a – 6g)

RasioKonsistensi = HitungKonsistensiAHP(relasiAntarKriteria);

Memasuki perhitungan pada fungsi HitungKonsistensiAHP

6a. Tentukan Indeks Konsistensi Acak yang digunakan
Nilai yang nantinya dipakai adalah nilai pada indeks sebanyak jumlah kriteria yang ada

indeksAcak = [0 0 0.58 0.9 1.12 1.24 1.32 1.41 1.45 1.49];

6b. Hitung jumlah kriteria, yaitu sesuai dengan ukuran matriks relasi antar kriteria

[~, jumlahKriteria] = size(relasiAntarKriteria);

6c. Hitung nilai lambda, yaitu nilai eigenvalue dengan menggunakan fungsi eigenvector

[~, lambda] = eig(relasiAntarKriteria);

6d. Tentukan maksimal nilai lambda yang telah dihitung sebelumnya

maksLambda = max(max(lambda));

6e. Hitung nilai indeks konsistensi dengan rumus (maksLambda – n) / (n – 1)

IndeksKonsistensi = (maksLambda - jumlahKriteria)/(jumlahKriteria-1);

6f. Hitung rasio konsistensi untuk mendapatkan jawaban akhir

RasioKonsistensi = IndeksKonsistensi/indeksAcak(1,jumlahKriteria);

6g. Apabila nilai rasio konsistensi lebih dari 0.1, maka tampilkan pesan kesalahan

if RasioKonsistensi > 0.10
    str = 'Rasio Konsistensi adalah %% %1.2f. Matriks yang dievaluasi tidak konsisten!';
    str = sprintf(str,RasioKonsistensi);
    disp(str);
end

7. Jika rasio konsistensi kurang dari 0.10, maka lakukan perhitungan berikutnya

if RasioKonsistensi < 0.10
. . .

8. Lakukan perhitungan bobot menggunakan metode Fuzzy AHP
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 8a – 8i)

[bobotAntarKriteria, relasiAntarKriteria] = FuzzyAHP(relasiAntarKriteria, TFN);

Memasuki perhitungan pada fungsi FuzzyAHP

* Lakukan konversi masing-masing relasi antar kriteria menjadi TFN (Triangular Fuzzy Number) (poin 8a – 8b)

8a. Lakukan perhitungan pada matriks relasi antar kriteria
Masukkan nilai pada bagian segitiga bawah sesuai dengan nilai sesuai pada poin 4.

for i=1:jumlahData
    for j=i+1:jumlahData
       relasiAntarKriteria(j,i) = 1 / relasiAntarKriteria(i,j); 
    end
end

8b. Lakukan perhitungan pada matriks relasi antar kriteria
Jika nilai matriks relasi antar kriteria lebih dari 1,
maka nilai TFN yang digunakan adalah nilai kriteria pada kelompok pertama
Jika nilai matriks relasi antar kriteria kurang dari 1,
maka nilai TFN yang digunakan adalah nilai kriteria pada kelompok kedua

for i=1:jumlahData
    for j=1:jumlahKriteria
        kriteria = relasiAntarKriteria(i,j);
        if kriteria >= 1
           fuzzyRelasi{i,j} = TFN{kriteria ,1 };
        else
           fuzzyRelasi{i,j} = TFN{round(kriteria^-1) ,2 };
        end
    end
end

8c. Hitung jumlah dari masing-masing TFN yang dipakai dalam matriks relasi antar kriteria
Kemudian dari nilai tersebut, jumlahkan nilai pada masing-masing kolom kriteria

for i=1:jumlahData
    barisRelasi = [fuzzyRelasi{i,:}];
    jumlahRelasiPerBaris{1,i} = sum(reshape(barisRelasi,3,[])');
end

RelasiPerData = [jumlahRelasiPerBaris{1,:}];
jumlahRelasiPerKolom = sum(reshape(RelasiPerData,3,[])');

8d. Lakukan perhitungan pada masing-masing nilai relasi pada masing-masing kolom
Lakukan pembagian dengan jumlah relasi pada masing-masing kolom
Kemudian catat jumlah dari pembagian tersebut untuk setiap kolomnya

for i=1:jumlahData
    RelasiPerData = [jumlahRelasiPerBaris{1,i}];
    for j=1:3
        nilaiRelasiPerKolom = jumlahRelasiPerKolom(1,j);
        jumlahPerKolom(1,j) = (RelasiPerData(1,j))*(1/nilaiRelasiPerKolom);
    end
    jumlahRelasiPerBaris{1,i} = jumlahPerKolom;
end

*Lakukan perhitungan derajat kemungkinan (poin 8e – 8g)
Rumus yang digunakan adalah:

              /---
              | jika m2>=m1          1    
              |
              | jika l1>=l2          0    
 V(M2>=M1) = <
              |                    l1-u2
              | selain itu     --------------- 
              |                (m1-u2)-(m1-l1)
              \---

8e. Lakukan perhitungan pada masing-masing data dengan indeks baris dan kolom tidak sama

for i=1:jumlahData
    for j=1:jumlahData
        if i~=j
		. . .

8f. Masukkan nilai awal derajat kemungkinan, M1, dan M2 sesuai rumus yang telah dijelaskan sebelumnya

derajatKemungkinan(idxBaris,[1 2]) = [i j];
M1 = jumlahRelasiPerBaris{1,i};
M2 = jumlahRelasiPerBaris{1,j};

8g. Hitung nilai derajat kemungkinan menggunakan rumus yang telah dijelaskan sebelumnya

if M1(1,2) >= M2(1,2)
	derajatKemungkinan(idxBaris,3) = 1;
elseif M2(1,1) >= M1(1,3)
	derajatKemungkinan(idxBaris,3) = 0;
else
	derajatKemungkinan(idxBaris,3) = (M2(1,1)-M1(1,3))/((M1(1,2)-M1(1,3))-(M2(1,2)-M2(1,1)));
end

8h. Hitung nilai bobot menggunakan nilai derajat kemungkinan minimal pada masing-masing kriteria

bobotAntarKriteria = zeros(1,jumlahData);
for i=1:jumlahData,
    bobotAntarKriteria(1,i) = min(derajatKemungkinan([find(derajatKemungkinan(:,1) == i)], [3]));
end

8i. Lakukan normalisasi terhadap nilai bobot yang telah dihitung
yaitu dengan cara membagi masing-masing nilai bobot dengan total semua bobot

bobotAntarKriteria = bobotAntarKriteria/sum(bobotAntarKriteria);

9. Hitung nilai skor akhir dengan mengalikan data dengam masing-masing bobot antar kriteria

ahp = data * bobotAntarKriteria';

10. Tentukan rentang kesimpulan nilai yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini:
< 0.6 -> Kurang
0.6 – 0.69 -> Cukup
0.7 – 0.79 -> Baik
>= 0.8 -> Sangat Baik

if ahp(i) < 0.6
	status = 'Kurang';
elseif ahp(i) < 0.7
	status = 'Cukup';
elseif ahp(i) < 0.8
	status = 'Baik';
else
	status = 'Sangat Baik';
end

Hasil akhir adalah:

Algoritma Fuzzy AHP (Analytic Hierarchy Process)
Contoh: Menentukan nilai akhir kinerja karyawan
Diasumsikan ada 3 kriteria penentu nilai kinerja karyawan, yaitu jumlah jam kerja, jumlah barang yang dikerjakan, dan jumlah barang lolos uji
Kemudian terdapat 3 data karyawan yang sudah diketahui nilai pada masing-masing kriteria tersebut
Maka tentukan nilai akhir dari masing-masing karyawan
Diasumsikan data karyawan adalah sebagai berikut: 
Nama Karyawan, jumlah jam kerja, jumlah barang yang dikerjakan, jumlah barang yang lolos uji
Andi         , 200             , 80                           , 70
Budi         , 190             , 60                           , 45
Dedi         , 180             , 65                           , 55
Erdi         , 190             , 70                           , 60


Hasil Perhitungan dengan metode Fuzzy AHP
Nama Karyawan, Skor Akhir, Kesimpulan
Andi         , 0.89357   , Sangat Baik
Budi         , 0.76375   , Baik
Dedi         , 0.76696   , Baik
Erdi         , 0.81696   , Sangat Baik

Contoh modul / source code menggunakan Matlab dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

39 pemikiran di “Algoritma Fuzzy AHP

  • Putra

    Permisi

    Misalkan kita ingin mengembangkan program pengambil keputusan jenis usaha yang paling pas untuk para konsultan bisnis misalnya, dengan kriteria yang ada misalkan total modal usaha, keahlian, dll.

    Metode mana yah yang paling tepat atau yang bisa jadi alternatif?

    Karena jika saya pikir untuk algortima sederhana nya adalah berdasarkan formula misal dengan modal 1 M dan keahlian dibidang mobil, tidak mungkin bisa bisnis jual beli mobil baru tapi kalo jual beli mobil bekas masih bisa. Jadi formula nya lebih minim dimatematika nya.

    Dari beberapa metode yang saya baca disini artikel nya lebih banyak ke pengambilan nilai, mungkin Pip bisa bantu untuk artikel lain yang sekirannya berhubungan dengan permasalahan saya.

    Terimakasih
    Putra

    • pip Penulis

      Sebetulnya, untuk semua jenis algoritma Fuzzy dan variasinya, kriterianya bebas, bisa berupa angka numerik atau kategori tertentu, karena pada akhirnya, semua kriteria tersebut harus dikonversi ke dalam fungsi keanggotaan fuzzy, yang pada umumnya memiliki 3 nilai.
      Sebagai contoh kasus yang anda catat, ada 2 kriteria, modal usaha dan keahlian.
      Kriteria modal usaha nantinya akan dikonversi menjadi, misalnya dibawah 100 juta = kecil, antara 100 juta – 1 milyar = sedang, diatas 1 milyar = besar
      Untuk kriteria Keahliah, karena ada 2 contoh data (jual beli mobil baru dan jual beli mobil bekas), maka kedua nilai ini lgsg menempati batas nilai pertama dan kedua pada fungsi keanggotaan fuzzy

      Silahkan ditanyakan lagi bila ada yang kurang jelas.

      • Putra

        untuk teori nya cukup mengerti tapi masih belum paham dalam penerapannya, semoga next ada tutorial dengan contoh kasus yang kurang lebih sama dengan yang saya tanyakan sebelum nya 😀

        • pip Penulis

          Jika secara teori sudah cukup mengerti, tetapi terdapat kesulitan dalam penerapan kasus tersebut, saya bisa bantu untuk implementasi algoritma tersebut sesuai dengan contoh kasus yang anda hadapi. Jika berminat, anda dapat melakukan komunikasi secara pribadi dengan nomor kontak yang tertera pada halaman http://piptools.net/hubungi-kami/. Terima kasih

    • pip Penulis

      Rasio konsistensi digunakan untuk melakukan pengecekan terhadap matriks relasi antar kriteria, yang dalam kasus ini bernilai
      [1 2 2]
      [0 1 4]
      [0 0 1]

      dengan nilai rasio konsistensi adalah -1.7241

      Jika anda salah memasukkan input matriks seperti:
      [1 2 2]
      [0 1 4]
      [1 0 1]

      maka nilai rasio konsistensinya adalah 0.2851, dan tentu saja nilai ini lebih dari 0.1. Pada poin 6g sudah terdapat penjelasan bahwa “Apabila nilai rasio konsistensi lebih dari 0.1, maka tampilkan pesan kesalahan”, dan pada penjelasan skrip dibawahnya, pesan kesalahan tersebut adalah bahwa matriks relasi antar kriteria nya tidak cocok.

      Pada intinya, selama anda sudah yakin matriks relasi antar kriteria yang digunakan sudah benar, maka pengecekan rasio konsistensi dapat diabaikan.

        • pip Penulis

          Jawaban pertanyaan pertama:
          Jika nilai rasio konsistensi lebih dari 0.1, maka ada yang salah dengan matriks relasi antar kriteria anda.

          Bolehkah saya tahu matriks relasi antar kriteria anda memiliki nilai berapa saja, agar dapat saya bantu lakukan pengecekan nilai rasio konsistensi dari matriks tersebut.

          Jawaban pertanyaan kedua:
          Untuk diagram fuzzy, pada umumnya akan digunakan rentang nilai antara 0 sampai dengan 100
          Misalkan saya ambil contoh kriteria kualitas barang. Penilaian kriteria tersebut akan saya bagi menjadi 3 yaitu buruk, sedang, baik (pembagian ini bebas terserah anda, bisa 4, 5, dst)
          Karena terdapat 3 penilaian, maka akan ada 4 daerah dalam diagram fuzzy, yaitu daerah buruk, irisan buruk sedang, irisan sedang baik, daerah baik
          maka dari itu rentang nilai 0 sampai dengan 100 saya bagi menjadi 4, yaitu 0, 100/3, 200/3, 300/3, dan nilai ini menjadi angka tengah pada TFN kelompok pertama. Selanjutnya tinggal mencari angka yang berjarak sama dari nilai tengah, dengan catatan jaraknya tidak boleh melebihi angka tengah berikutnya. Setelah menemukan TFN kelompok pertama, maka lanjutkan ke TFN kelompok kedua sesuai dengan cara pada poin 5.

  • Veni

    Mas, gimana cara buat TFN untuk relasi antar kriteria berikut?

    relasiAntarKriteria = [ 1 1 1 5 5 5 3 1
    1 1 1 5 5 5 1 1
    1 1 1 9 9 5 5 9
    0.2 0.2 0.1 1 1 0.2 0.2 0.2
    0.2 0.2 0.1 1 1 0.2 0.2 0.2
    0.2 0.2 0.2 1.4 5 1 1 1
    0.3 1 0.2 2.3 5 1 1 1
    1 1 0.1 2.3 7 1 1 1];

    Terimkasih

    • pip Penulis

      Sebelumnya saya sampaikan bahwa matriks input relasi antar kriteria anda salah. Seharusnya inputan matriks pada bagian segitiga bawah kiri bernilai 0 semua, sehingga matriks yang awalnya


      1 1 1 5 5 5 3 1
      1 1 1 5 5 5 1 1
      1 1 1 9 9 5 5 9
      0.2 0.2 0.1 1 1 0.2 0.2 0.2
      0.2 0.2 0.1 1 1 0.2 0.2 0.2
      0.2 0.2 0.2 1.4 5 1 1 1
      0.3 1 0.2 2.3 5 1 1 1
      1 1 0.1 2.3 7 1 1 1

      akan menjadi


      1 1 1 5 5 5 3 1
      0 1 1 5 5 5 1 1
      0 0 1 9 9 5 5 9
      0 0 0 1 1 0.2 0.2 0.2
      0 0 0 0 1 0.2 0.2 0.2
      0 0 0 0 0 1 1 1
      0 0 0 0 0 0 1 1
      0 0 0 0 0 0 0 1

      Jika anda melakukan perhitungan rasio konsistensi pada matriks sebelumnya, pasti akan bernilai lebih dari 0.1 dan akan muncul pesan kesalahan. Sedangkan untuk matriks setelahnya akan bernilai kurang dari 0.1 sehingga dapat dilakukan perhitungan FuzzyAHP nya.

      Jika semua kriteria anda (dalam matriks anda terdapat 8 kriteria) memiliki derajat keanggotaan fuzzy yang sama yaitu 3, maka nilai TFN nya bisa menggunakan nilai TFN seperti pada pos ini

      TFN = {[-100/3 0 100/3] [3/100 0 -3/100]
      [0 100/3 200/3] [3/200 3/100 0 ]
      [100/3 200/3 300/3] [3/300 3/200 3/100 ]
      [200/3 300/3 400/3] [3/400 3/300 3/200 ]};

        • pip Penulis

          Seperti sebelumnya, jika semua kriteria anda (dalam matriks anda terdapat 8 kriteria) memiliki derajat keanggotaan fuzzy yang sama yaitu 3, maka nilai TFN nya bisa menggunakan nilai TFN seperti pada pos ini

          TFN3 = {[-100/3 0 100/3] [3/100 0 -3/100]
          [0 100/3 200/3] [3/200 3/100 0 ]
          [100/3 200/3 300/3] [3/300 3/200 3/100 ]
          [200/3 300/3 400/3] [3/400 3/300 3/200 ]};

          Jika derajat keanggotaan fuzzy tidak sama, maka nilai TFN harus menyesuaikan

          sebagai contoh untuk kriteria dengan 2 derajat keanggotaan fuzzy, maka nilai TFN nya adalah

          TFN2 = {[-100/2 0 100/2] [2/100 0 -2/100]
          [0 100/2 200/2] [2/200 2/100 0 ]
          [100/2 200/2 300/2] [2/300 2/200 2/100 ]};

          untuk kriteria dengan 4 derajat keanggotaan fuzzy, maka nilai TFN nya adalah

          TFN4 = {[-100/4 0 100/4] [4/100 0 -4/100]
          [0 100/4 200/4] [4/200 4/100 0 ]
          [100/4 200/4 300/4] [4/300 4/200 4/100 ]
          [200/4 300/4 400/4] [4/400 4/300 4/200 ]
          [300/4 400/4 500/4] [4/500 4/400 4/300 ]};

          Skrip pengambilan nilai TFN nya juga harus diubah menyesuaikan dengan TFN kriteria tersebut, untuk kriteria dengan derajat keanggotaan fuzzy 3 menggunakan TFN3, derajat 2 menggunakan TFN2, derajat 4 menggunakan TFN4

  • Veni

    Bisa dicontohkan mas skrip untuk menentukan TFN dengan derajat keanggotaan fuzzy yang berbeda untuk setiap kritria. contohnya ada 3 kriteria, kriteria 1 dengan derajat keanggotaan fuzzy ada 3, kriteria 2 ada 4, dan kriteria 3 ada 2.
    Mohon bantuannya mas.

    • pip Penulis

      Untuk kriteria dengan derajat keanggotaan fuzzy 3 bisa menggunakan TFN3 seperti yang terdapat pada komen sebelumnya. Demikian pula halnya dengan derajat keanggotaan fuzzy 2 bisa menggunakan TFN2, dan derajat keanggotaan fuzzy 4 bisa menggunakan TFN4

      Dalam nilai TFN terdapat 2 blok data. Perhatikan angka di tengah pada blok sebelah kiri. Nilai ini adalah nilai yang anda inginkan sebagai data. Selanjutnya untuk mencari angka disebelah kiri dan kanan angka ditengah bisa menggunakan angka berapa saja, tetapi harus berjarak sama, dan harus bersinggungan dengan nilai baris berikutnya. Setelah nilai pada blok pertama selesai ditentukan, selanjutnya adalah membalik setiap angka pada blok pertama untuk mengisi blok kedua.

      • Veni

        Kalau skrip kode seperti dibawah ini bagaimana ya? bobot nya kok malah kebanyakan 0

        relasiAntarKriteria = [ 1 1 1 5 5 5 3 1
        0 1 1 5 5 5 1 1
        0 0 1 9 9 5 5 9
        0 0 0 1 1 1/5 1/5 1/5
        0 0 0 0 1 1/5 1/5 1/7
        0 0 0 0 0 1 1 1
        0 0 0 0 0 0 1 1
        0 0 0 0 0 0 0 1];

        %5. Tentukan TFN, yaitu Triangular Fuzzy Number
        %TFN adalah sekumpulan 3 angka yang membentuk grafik fuzzy pada nilai fuzzy 0, kemudian naik ke 1, dan kembali ke 0
        %TFN berisi 2 kelompok data,
        %kelompok pertama adalah TFN dalam nilai sebenarnya
        %kelompok kedua adalah invers dari TFN, yaitu dengan mengubah x menjadi 1/x dan membalik urutan angka TFN
        TFN = { [-100/8 0 100/8] [8/100 0 -8/100]
        [0 100/8 200/8] [8/200 8/100 0 ]
        [100/8 200/8 300/8] [8/300 8/200 8/100 ]
        [200/8 300/8 400/8] [8/400 8/300 8/200 ]
        [300/8 400/8 500/8] [8/500 8/400 8/300 ]
        [400/8 500/8 600/8] [8/600 8/500 8/400 ]
        [500/8 600/8 700/8] [8/700 8/600 8/400 ]
        [600/8 700/8 800/8] [8/800 8/700 8/500 ]
        [700/8 800/8 900/8] [8/900 8/800 8/600 ]};

        %6. Lakukan perhitungan rasio konsistensi untuk memastikan bahwa matriks relasi antara kriteria sudah bernilai benar
        %Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 6a – 6g)
        RasioKonsistensi = HitungKonsistensiAHP(relasiAntarKriteria);
        disp(‘Rasio konsistensi’)
        disp(RasioKonsistensi)

        %7. Jika rasio konsistensi kurang dari 0.10, maka lakukan perhitungan berikutnya
        if RasioKonsistensi < 0.10
        %8. Lakukan perhitungan bobot menggunakan metode Fuzzy AHP
        %Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 8a – 8i)
        [bobotAntarKriteria, relasiAntarKriteria] = FuzzyAHP(relasiAntarKriteria, TFN);
        disp('bobot')
        disp(bobotAntarKriteria)
        end

        • pip Penulis

          Jika anda menggunakan TFN tersebut

          TFN = { [-100/8 0 100/8] [8/100 0 -8/100]
          [0 100/8 200/8] [8/200 8/100 0 ]
          [100/8 200/8 300/8] [8/300 8/200 8/100 ]
          [200/8 300/8 400/8] [8/400 8/300 8/200 ]
          [300/8 400/8 500/8] [8/500 8/400 8/300 ]
          [400/8 500/8 600/8] [8/600 8/500 8/400 ]
          [500/8 600/8 700/8] [8/700 8/600 8/400 ]
          [600/8 700/8 800/8] [8/800 8/700 8/500 ]
          [700/8 800/8 900/8] [8/900 8/800 8/600 ]};

          maka diasumsikan bahwa semuah kriteria menggunakan 8 derajat keanggotaan fuzzy. Perlu diingat bahwa hasil variabel bobotAntarKriteria setelah perhitungan FuzzyAHP sudah dinormalisasi sehingga jumlah semua bobotnya bernilai 1, dan karena anda memiliki 8 kriteria, maka nilai yang paling rata (dan jarang sekali terjadi) adalah

          bobotAntarKriteria = [0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125];

          jika terdapat salah satu bobot yang paling dominan, maka kemungkinan terburuknya adalah semua sisa bobot adalah 0. Sama seperti yang anda alami

          bobotAntarKriteria = [1 0 0 0 0 0 0 0];

  • Alexs

    Selamat malam mas,
    maaf mau tanya Masalah Optimasi Fuzzy AHP dengan GA untuk perengkingan, pertanyaannya :
    Bagaimana menentukan matrik perbandingan berpasangan TFN nya dari 4 kriteria dan beberapa subkriteria
    Terima kasih.

    • pip Penulis

      Selamat malam,

      Anda bisa menggunakan nilai TFN sesuai dengan banyaknya derajat keanggotaan fuzzy yang anda gunakan.
      Sebagai contoh untuk kriteria dengan 2 derajat keanggotaan fuzzy, maka nilai TFN nya adalah

      TFN2 = {[-100/2 0 100/2] [2/100 0 -2/100]
      [0 100/2 200/2] [2/200 2/100 0 ]
      [100/2 200/2 300/2] [2/300 2/200 2/100 ]};

      untuk kriteria dengan 4 derajat keanggotaan fuzzy, maka nilai TFN nya adalah

      TFN4 = {[-100/4 0 100/4] [4/100 0 -4/100]
      [0 100/4 200/4] [4/200 4/100 0 ]
      [100/4 200/4 300/4] [4/300 4/200 4/100 ]
      [200/4 300/4 400/4] [4/400 4/300 4/200 ]
      [300/4 400/4 500/4] [4/500 4/400 4/300 ]};

        • pip Penulis

          Sebelumnya anda jelaskan bahwa kasus yang anda hadapi menggunakan 4 kriteria dengan bebearpa sub kriteria. Anda tidak menceritakan jumlah subkriteria tersebut, oleh sebab itu saya gunakan pemisalan untuk TFN dengan 2 atau 4 derajat keanggotaan fuzzy.

          Mungkin Anda bisa menceritakan lebih detail mengenai contoh data yang anda gunakan.

      • Alexs

        Oh iya maaf, Studi Kasusnya Optimasi Fuzzy AHP dengan GA untuk menilai Kualitas Produk (Rengking Produk) dengan Sample 14 Produk yg sama jenis.
        Kriteria 4 : K1,K2,K3,K4 dan Subkriterianya : K11 K12 K13, K21 K22 K23 K24, K31 K32 dan K41 K42
        Itu pa detail singkatnya. Yang masih bingung untuk menentukan bobot Matriks perbandingan berpasangan Fuzzy AHP sebelum di optimasi ke GA, karena kebanyakan referensi menggunakan penelitian Chang DY 1996.
        Terima Kasih.

        • pip Penulis

          Untuk kasus tersebut, berarti anda harus menggunakan banyak TFN yang diaplikasikan secara bertingkat
          Untuk K11, K12, K13 gunakan TFN dengan 3 derajat keanggotaan fuzzy
          Untuk K21, K22, K23, K24 gunakan TFN dengan 4 derajat keanggotaan fuzzy
          Untuk K31, K32 gunakan TFN dengan 2 derajat keanggotaan fuzzy
          Untuk K41, K42 gunakan TFN dengan 2 derajat keanggotaan fuzzy
          Kemudian setelah memperoleh nilai dari masing-masing subkriteria, hitung K1, K2, K3, K4 menggunakan TFN dengan 4 derajat keanggotaan fuzzy.

  • Fajri

    Mas pada perancangan proposal reviewer saya meminta untuk membuat fungsi keanggotaan fuzzy pada TFN sesuai dengan kasus saya, itu maksudnya gimana mas? bisa mohon beri pecerahan?

    • pip Penulis

      sebelum anda menuju pada bagian fungsi keanggotaan, maka anda harus menentukan dulu tabel relasi antar kriteria. Dalam kasus ini saya gunakan:

      kriteria jam kerja jumlah barang kualitas
      jam kerja 1 0.5 0.5
      jumlah barang 2 1 0.25
      kualitas 2 4 1

      Silahkan menyesuaikan tabel relasi antar kriteria ini dengan kasus yang anda hadapi. Tentu saja ukuran tabelnya berbanding lurus dengan banyaknya kriteria yang anda pakai. Jika terdapat 4 kriteria maka ukuran tabelnya adalah 4×4, dan seterusnya.

  • Akmal

    mau tanya mas, kalo implement fuzzy ahp pakai matlab bisa dibuat simulasi juga gak untuk situasi pengembangan keputusan kedepannya? soalnya saya konversi metode topik saya dari dynamic sistem yang sudah ada ke fuzzy ahp agar lebih menyangkut ke prodi saya dalam pengerjaan skripsi yang sedang on-progress saya kerjakan. trims mas

    • pip Penulis

      Tentu saja algoritma ini dapat digunakan untuk melakukan pengambilan keputusan. Tetapi jika melihat per kasus secara spesifik, terkadang bisa terjadi keadaan dimana algoritma lain memiliki kondisi yang lebih tepat guna dibandingkan algoritma ini. Kasus yang anda sampaikan masih terlalu umum, sehingga saya belum mengetahui apakah algoritma ini bisa diimplementasikan pada kasus anda.

  • Ciel

    sebelumnya, terimakasih. ilmunya sangat membantu sekali.
    saya mau nanya, pada hasil akhir dengan menggunakan FAHP ini dan juga hasil dengan menggunakan AHP yang dipost sebelumnya memiliki perbedaan hasil yang cukup.
    pada AHP:
    kesimpulan adalah:
    Andi : Baik
    Budi :kurang
    Dedi :cukup
    Erdi :cukup

    Pada F-AHP:
    Andi : sangat baik
    Budi :baik
    Dedi :baik
    Erdi :sangat baik

    kira-kira untuk permasalahan yang seperti contoh itu algoritma yang mana yang menghasilkan hasil yang akurat?
    terimakasih.

    • pip Penulis

      Akurasi hanya anda dapatkan apabila anda membandingkan sesuatu hasil perhitungan dengan data. Dalam kedua kasus diatas, tidak ada yang perlu dibandingkan sehingga tidak menghasilkan akurasi.

      Saya gunakan contoh seandainya data memiliki target seperti ini
      Andi :Baik
      Budi :Baik
      Dedi :Baik
      Erdi :Baik

      Maka akurasi untuk AHP adalah 1/4 dan akurasi untuk FAHP adalah 2/4

      Jika data memiliki target seperti ini
      Andi :Cukup
      Budi :Cukup
      Dedi :Cukup
      Erdi :Cukup

      Maka akurasi untuk AHP adalah 2/4 dan akurasi untuk FAHP adalah 0/4

      Sehingga tidak ada algoritma manakah yang lebih akurat. Semua tergantung dari data yang perlu dibandingkan.

      • pip Penulis

        Dalam implementasi ini aturan tidak dijabarkan secara eksplisit. Fungsi keanggotaan kriteria ditentukan dengan variabel TFM / Triangular Fuzzy Number yang kemudian langsung diproses untuk mendapatkan nilai bobot fuzzy yang kemudian digunakan dalam proses perhitungan AHP.

  • FIKI WAHYUNINGRUM

    selamat malam kak, sebelumnya saya ucapkan terima kasih karena postingan ini sangat bermanfaat. lalu saya mau bertanya apakah fuzzyAHP ini hanya bisa digunakan untuk pengambilan keputusan berdasarkan sifat linguistik manusia ? atau bisa untuk hal-hal yang terukur juga ? dan untuk pengerjaannya sendiri bisa memakai Ms. Excel atau matlab ? Terima kasih

    • pip Penulis

      Saya belum dapat mengetahui apakah algoritma ini dapat diterapkan pada sistem linguistik manusia karena saya tidak memahami secara detail bagaimanakah cara kerja dari sistem linguistik manusia tersebut. Mengenai media implementasi dapat didiskusikan secara jalur pribadi karena tidak berhubungan dengan pos ini.

    • pip Penulis

      Mohon maaf saya tidak memiliki contoh implementasi algoritma ini dalam bentuk excel. Dan saya kira algoritma ini tidak dapat dikonversi dengan mudah ke dalam excel karena tingkat kompleksitas yang cukup tinggi.

    • pip Penulis

      Perhitungan yang dilakukan algoritma ini adalah menghitung nilai skor yang didapatkan setelah menghitung nilai bobot per kriteria. Tentunya pengurutan nilai dilakukan hanya untuk nilai output terakhir saja (nilai skor) sehingga tidak dilakukan pada nilai bobot. Dalam kasus anda, jika nilai bobot sudah diketahui maka silahkan melanjutkan untuk tahap perhitungan nilai skor dan kemudian melakukan pengurutan berdasarkan nilai skor tersebut.