Perbandingan Metode Analytical Hierarchy Process (AHP) dan Metode Preference Ranking Organization Method For Enrichment Evaluation (PROMETHEE) untuk Pemilihan Hardisk Eksternal
LAMPIRAN
LISTING PROGRAM
AHP Functionpackage AHP_PROMETHEE_Function; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.swing.JTable; public class AHPFunction { public AHPFunction() { } public void matSegitiga(JTable matriks){ double[][] nilai=new double[matriks.getRowCount()][matriks.getColumnCount()]; double[]hasil=new double[45]; for (int i = 0; i<nilai.length ; i++) { for (int j = i+2; j < nilai[0].length; j++) { nilai[i][j]=Double.parseDouble(String.valueOf(matriks.getValueAt(i, j))); } } int n=0; for (int i = 0; i<nilai.length ; i++) { for (int j = i+2; j < nilai[0].length; j++) { hasil[n]=1/nilai[i][j]; n++; } } n=0; for (int i = 1; i<nilai.length-1 ; i++) { for (int j = i; j <= nilai[0].length-2; j++) { matriks.setValueAt(hasil[n], j, i); n++; } } } public void getSum(JTable matriks){ double[][] nilai=new double[matriks.getRowCount()][matriks.getColumnCount()]; double[] hasil = new double[nilai[0].length]; for (int i = 0; i < nilai[0].length; i++) { hasil[i] = 0; } for (int i = 0; i<nilai.length-1 ; i++) { for (int j = 1; j < nilai[0].length; j++) { nilai[i][j]=Double.parseDouble(String.valueOf(matriks.getValueAt(i, j))); hasil[j]+=nilai[i][j]; } for (int i = 1; i < nilai[0].length; i++) { matriks.setValueAt(hasil[i], nilai.length-1, i); } } public void normalisasi(JTable tabel1, JTable tabel2){ double nilai[][]=new double[tabel1.getRowCount()][tabel1.getColumnCount()]; for (int i = 0; i<nilai.length-1 ; i++) { for (int j = 1; j < nilai[0].length; j++) { nilai[i][j]=Double.parseDouble(String.valueOf(tabel1.getValueAt(i, j)))/Double.parseDouble(String.valueOf(tabel1.getValueAt(nilai[0].len gth-1, j))); tabel2.setValueAt(nilai[i][j], i, j); } } } public void getEigenVector(JTable tblEV){ double EV[]=new double[tblEV.getRowCount()]; for (int i = 0; i < EV.length; i++) { EV[i]=0; } for (int i = 0; i < tblEV.getRowCount(); i++) { for (int j = 1; j < tblEV.getColumnCount()-1; j++) { EV[i]+=(Double.parseDouble(String.valueOf(tblEV.getValueAt(i, j))))/(tblEV.getColumnCount()-2); } } for (int i = 0; i < EV.length; i++) { tblEV.setValueAt(EV[i], i, tblEV.getColumnCount()-1); } } public double getLamdaMax(JTable tabel1, JTable tabel2){ double LamdaMax=0; double kriteria[]=new double[tabel1.getColumnCount()]; double EV[]=new double[tabel2.getRowCount()]; for (int i = 1; i < tabel1.getColumnCount(); i++) { kriteria[i]=Double.parseDouble(String.valueOf(tabel1.getValueAt(tabel 1.getRowCount()-1, i))); } for (int i = 0; i < tabel2.getRowCount(); i++) { EV[i]=Double.parseDouble(String.valueOf(tabel2.getValueAt(i, tabel2.getColumnCount()-1))); } for (int i = 0; i < tabel2.getRowCount(); i++) { LamdaMax+=(kriteria[i+1]*EV[i]); } return LamdaMax; } public double getCI(JTable tabel1, double lamdaMax){ double CI; CI=(lamdaMax-tabel1.getRowCount())/(tabel1.getRowCount()-1); return CI; } public double[] getMatGlobal(JTable tabel1){
int colLength=tabel1.getColumnCount(); int rowLength=tabel1.getRowCount(); for (int i = 0; i < colLength-1; i++) { alternative[i] = 0; } for (int i = 0; i < rowLength; i++) { for (int j = 2; j < colLength; j++) { alternative[j- 2]+=(Double.parseDouble(String.valueOf(tabel1.getValueAt(i, j)))*(Double.parseDouble(String.valueOf(tabel1.getValueAt(i, 1))))); } } return alternative; } public double getPrioritasMax(Double[] alternative){ double pilihan; List<Double> rank = Arrays.asList(alternative); pilihan=Collections.max(rank); return pilihan; } }PROMETHEE Function
package AHP_PROMETHEE_Function; import java.util.HashMap; import java.util.Map; import javax.swing.JTable; public class PrometheeFunction { public PrometheeFunction() { } public void getHD(JTable tabel1, JTable tabel2) { double d[][][] = new double[tabel1.getColumnCount() - 3][tabel1.getRowCount()][tabel1.getColumnCount() - 3]; double Hd[][][] = new double[tabel1.getColumnCount() - 3][tabel1.getRowCount()][tabel1.getColumnCount() - 3]; double Hdh[][][] = new double[tabel1.getColumnCount() - 3][tabel1.getRowCount()][tabel1.getColumnCount() - 3]; double Hd_Hasil[][] = new double[tabel2.getRowCount()][tabel2.getColumnCount()]; double nilai_d[][] = new double[tabel1.getRowCount()][tabel1.getColumnCount() - 4]; Map<Double, String> map = new HashMap<Double, String>(); for (int i = 0; i < tabel1.getRowCount(); i++) { for (int j = 0; j < tabel1.getColumnCount() - 4; j++) { nilai_d[i][j] = Double.parseDouble(String.valueOf(tabel1.getValueAt(i, j + 1))); } } int n = 0; for (int i = 0; i < tabel1.getColumnCount() - 4; i++) { for (int j = 0; j < tabel1.getRowCount(); j++) { for (int k = 0; k < tabel1.getColumnCount() - 4; k++) if (i != k) { d[i][j][k] = 0; Hd[i][j][k] = n++; } } } } System.out.println(""); for (int i = 0; i < tabel1.getColumnCount() - 4; i++) { for (int j = 0; j < tabel1.getRowCount(); j++) { for (int k = 0; k < tabel1.getColumnCount() - 4; k++) { if (i != k) { d[i][j][k] = nilai_d[j][i] - nilai_d[j][k]; map.put(Hd[i][j][k], String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 3))); } } } } for (int i = 0; i < tabel1.getColumnCount() - 4; i++) { for (int j = 0; j < tabel1.getRowCount(); j++) { for (int k = 0; k < tabel1.getColumnCount() - 4; k++) { if (i != k) { } } } } for (int i = 0; i < tabel1.getColumnCount() - 4; i++) { for (int j = 0; j < tabel1.getRowCount(); j++) { for (int k = 0; k < tabel1.getColumnCount() - 4; k++) { if (i != k) { if (map.get(Hd[i][j][k]).equals("Usual")) { if (d[i][j][k] <= 0) { Hdh[i][j][k] = 0; } else { Hdh[i][j][k] = 1; } } if (map.get(Hd[i][j][k]).equals("Linier")) { if (d[i][j][k] <= 0) { Hdh[i][j][k] = 0; } else if (d[i][j][k] > Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 2)))) { Hdh[i][j][k] = 1; } else if ((d[i][j][k] <= Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 2))) || (d[i][j][k] > 0))) { // Hd[i][j][k] = d[i][j][k] * 1; Hdh[i][j][k] = d[i][j][k] * 0.142857143; // Hd[i][j][k] = d[i][j][k] / Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 2))); } }
if (d[i][j][k] <= Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 1)))) { Hdh[i][j][k] = 0; } else if (d[i][j][k] > Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 2)))) { Hdh[i][j][k] = 1; } else if ((d[i][j][k] <= Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 2))) || (d[i][j][k] > Double.parseDouble(String.valueOf(tabel1.getValueAt(j, tabel1.getColumnCount() - 1)))))) { Hdh[i][j][k] = 0.5; } } } } } } for (int i = 0; i < tabel2.getRowCount(); i++) { for (int j = 0; j < tabel2.getColumnCount(); j++) { Hd_Hasil[i][j] = 0; } } for (int i = 0; i < tabel1.getColumnCount() - 4; i++) { for (int j = 0; j < tabel1.getRowCount(); j++) { for (int k = 0; k < tabel1.getColumnCount() - 4; k++) { if (i != k) { Hd_Hasil[i][k] += (0.125 * (Hdh[i][j][k])); } } } } for (int i = 0; i < tabel2.getRowCount(); i++) { for (int j = 1; j < tabel2.getColumnCount(); j++) { if (i != (j - 1)) { tabel2.setValueAt(Hd_Hasil[i][j - 1], i, j); } } } } public double[] getNetFlow(JTable table){ double leavingFlow[]=new double[table.getRowCount()]; double enteringFlow[]=new double[table.getColumnCount()-1]; double netFlow[]=new double[table.getRowCount()]; for (int i = 0; i < table.getRowCount(); i++) { for (int j = 1; j < table.getColumnCount(); j++) { if(i!=j-1){ leavingFlow[i]+=((1/(float)(table.getRowCount()- 1))*Double.parseDouble(String.valueOf(table.getValueAt(i, j)))); } } } for (int i = 0; i < table.getRowCount(); i++) { if(i != j-1){ enteringFlow[j-1]+=((1/(float)(table.getRowCount()- 1))*Double.parseDouble(String.valueOf(table.getValueAt(i, j)))); } } } for (int i = 0; i < table.getRowCount(); i++) { netFlow[i]=leavingFlow[i]-enteringFlow[i]; } return netFlow; } }Main
package AHP_PROMETHEE_View; public class Main { public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MainFrame().setVisible(true); } }); } }
Main Frame
package AHP_PROMETHEE_View; import java.awt.Component; import java.awt.Dimension; import javax.swing.JComponent; import javax.swing.JDesktopPane; public class MainFrame extends javax.swing.JFrame { /** Creates new form MainFrame */ public MainFrame() { initComponents(); this.setLocationRelativeTo(null); this.setExtendedState(MAXIMIZED_BOTH); } // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jDesktopPane1 = new javax.swing.JDesktopPane(); jLabel1 = new javax.swing.JLabel(); jMenuBar1 = new javax.swing.JMenuBar(); mnAHP = new javax.swing.JMenu(); jMenuItem1 = new javax.swing.JMenuItem(); mnPromethee = new javax.swing.JMenuItem(); jMenu3 = new javax.swing.JMenu(); jMenu1 = new javax.swing.JMenu(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("PERBANDINGAN METODE ANALYTICAL HIERARCHY PROCESS
ENRICHMENT EVALUATION (PROMETHEE) UNTUK PEMILIHAN HARDISK EKSTERNAL"); jDesktopPane1.setBackground(new java.awt.Color(0, 51, 204)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setIcon(new javax.swing.ImageIcon("I:\\Untitled- 2.jpg")); // NOI18N jLabel1.setBounds(200, 20, 910, 650); jDesktopPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER); mnAHP.setText("Algorithm"); mnAHP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { mnAHPActionPerformed(evt); } }); jMenuItem1.setText("AHP"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); mnAHP.add(jMenuItem1); mnPromethee.setText("PROMETHEE"); mnPromethee.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { mnPrometheeActionPerformed(evt); } }); mnAHP.add(mnPromethee); jMenuBar1.add(mnAHP); jMenu3.setText("About"); jMenu3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu3MouseClicked(evt); } }); jMenuBar1.add(jMenu3); jMenu1.setText("Exit"); jMenu1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jMenu1MouseClicked(evt); } }); jMenuBar1.add(jMenu1); setJMenuBar(jMenuBar1); pack(); }// </editor-fold> private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Kriteria kriteria=new Kriteria(); jDesktopPane1.add(kriteria); setLocationToCenter(kriteria); kriteria.show(); } private void mnAHPActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void mnPrometheeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Promethee promethee=new Promethee(); jDesktopPane1.add(promethee); setLocationToCenter(promethee); promethee.show(); } private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: About about=new About(); jDesktopPane1.add(about); setLocationToCenter(about); about.show(); } private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: System.exit(0); } // Variables declaration - do not modify public javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu3; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenu mnAHP; private javax.swing.JMenuItem mnPromethee; // End of variables declaration public void setLocationToCenter(JComponent form) { Dimension parentSiZe=jDesktopPane1.getSize(); Dimension childSize=form.getSize(); form.setLocation((parentSiZe.width - childSize.width)/2,(parentSiZe.height - childSize.height)/2); }
KUISIONER PENELITIAN
Survei Data Penelitian Skripsi dengan judul:
Perbandingan Metode Analytical Hierarchy Process (AHP) dan Metode Preference
Ranking Organization Method For Enrichment Evaluation (PROMETHEE)untuk Pemilihan Hardisk Eksternal
Penulis dan Surveyor: Didi Pratama
Mahasiswa Ekstensi S-1 Ilmu Komputer
Fakultas Ilmu Komputer dan Teknologi Informasi
Universitas Sumatera Utara
Kuisioner ini disusun untuk mengetahui daya pilih konsumen terhadap Hardisk
Eksternal . Dalam survey ini, tidak ada jawaban yang salah dan benar. Survey ini
bertujuan untuk data yang dapat digunakan untuk memecahkan masalah dan
mendukung sistem keputusan terhadap pemilihan Hardisk Eksternal. Setiap informasi
yang diperoleh dari kuisioner ini murni hanya untuk tujuan akademis dan tidak
berpengaruh dengan apapun terhadap responden. Saya menjamin kerahasiaan dari
informasi yang anda berikan.Petunjuk Pengisian Berilah tanda ceklish (√) pada kolom skala kriteria (A) atau pada kolom skala kriteria (B) yang sesuai dengan pendapat anda.
Defenisi Kode: 1.
Kedua kriteria sama penting (equal importance).
3. Kriteria (A) sedikit lebih penting (moderate importance ) dibanding dengan (B).
5. Kriteria (A) lebih penting (strong Importance) dibanding dengan (B).
7. Kriteria (A) sangat lebih penting (very strong importance) dibanding dengan (B).
9. Kriteria (A) mutlak lebih penting (extreme Importance) dibanding dengan (B).
Dan jika anda ragu-ragu antara 2 skala maka ambil nilai tengahnya, misalkan anda
ragu-ragu antara 3 dan 5 maka pilih skala 4 dan seterusnya.Contoh: Dalam memilih Hardisk Eksternal seberapa pentingkah Kapasitas menurut konsumen
No. Kriteria Skala Skala Kriteria
(A) (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
1. Kapasitas √ Kecepatan transfer
Jika anda memberi tanda (√) pada skala 7 dikolom A, maka artinya adalah kriteria A dalam contoh ini Kapasitas sangat lebih penting dibanding dengan kriteria B dalam contoh ini adalah Kecepatan transfer. Akan tetapi jika anda merasa kriteria B sangat lebih penting dibanding dengan kriteria A (Kapasitas) maka pengisian kolomnya adalah sebagai berikut:
No. Kriteria Skala Skala Kriteria
(A) (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
1. Kapasitas
√ Kecepatan transfer
Identitas Responden Nama Responden : Lokasi Toko : Nama Toko :
1. Apakah Toko ini menjual Hardisk Eksternal? a.
Ya b.
Tidak Jika Jawaban Ya lanjutkan pertanyaan dan jika Tidak berhenti sampai disini dan ucapkan terima kasih.
2. Hardisk Eksternal apakah yang paling diminati oleh konsumen dalam beberapa bulan terakhir? (Pada bagian ini dapat memilih 2 atau lebih) a.
WD b.
Fujitsu c. Thosiba d.
Spectra e. A-Data f. Transcend g.
Hitachi h. Seagate i. Buffalo j. Lacie 3.
Tipe Hardisk Eksternal apa yang paling dicari oleh konsumen berdasarkan data diatas? Sebutkan dua atau lebih.
a.
b.
c.
d. Dalam memilih Hardisk Eksternal seberapa pentingkah menurut konsumen:
No. Kriteria Skala Skala Kriteria (B)
(A) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 91. Kapasitas Kecepatan transfer
2. Kapasitas Dimensi
3. Kapasitas Tipe USB
No. Kriteria Skala Skala Kriteria
(A) (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
1. Kecepatan Dimensi transfer
2. Kecepatan Tipe USB transfer
No. Kriteria Skala Skala Kriteria
(A) (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 91. Dimensi
Tipe USB
DAFTAR RIWAYAT HIDUP
Data Pribadi Nama: Didi Pratama Tempat / Tgl Lahir : Dolok Maraja, 21 Juli 1990 Jenis Kelamin : Laki-Laki
Agama : Islam
Status : Belum Menikah Kewarganegaraan : Indonesia Alamat
: Jln. Huta II Bahapal, Pematang Siantar. No. Telp / HP
: 085362217037 Email :
Riwayat Pendidikan
1996 - 2002 : SD MIS Andalusia 2002 - 2005 : SMP Sultan Agung Pematang Siantar 2005 - 2008 : SMA Taman Siswa Tapian Dolok 2008 - 2011 : AMIK Tunas Bangsa Pematang Siantar
2012 - 2015 : Ekstensi S1 Ilmu Komputer USU Pelatihan
Pelatihan kerja berbasis kompetensi jurusan Jaringan Komputer di Balai Besar
Latihan Kerja Industri (BBLKI) Medan tanggal 29 April s/d 30 Mei 2014.
Demikianlah daftar riwayat hidup ini saya buat dengan sebenarnya.
Hormat Saya, (Didi Pratama)