L-1 LAMPIRAN LISTING PROGRAM AHP Function package 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];
L-2 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){ double alternative[]=new double[tabel1.getcolumncount()-1];
L-3 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++) {
L-4 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] > tabel1.getcolumncount() - 2)))) { Hdh[i][j][k] = 1; else if ((d[i][j][k] <= 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] / tabel1.getcolumncount() - 2))); if (map.get(hd[i][j][k]).equals("level")) {
L-5 if (d[i][j][k] <= tabel1.getcolumncount() - 1)))) { Hdh[i][j][k] = 0; else if (d[i][j][k] > tabel1.getcolumncount() - 2)))) { Hdh[i][j][k] = 1; else if ((d[i][j][k] <= tabel1.getcolumncount() - 2))) (d[i][j][k] > 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++) { for (int j = 1; j < table.getcolumncount(); j++) {
L-6 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 (AHP) DAN METODE PREFERENCE RANKING ORGANIZATION METHOD FOR
L-7 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); evt) { mnahp.settext("algorithm"); mnahp.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent ); 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);
L-8 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);
L-9 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.
L-10 No. Contoh: Dalam memilih Hardisk Eksternal seberapa pentingkah Kapasitas menurut konsumen Kriteria (A) Skala Skala Kriteria (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 (A) Skala Skala Kriteria (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 1. Kapasitas Kecepatan transfer
L-11 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.
L-12 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 9 1. Kapasitas Kecepatan transfer 2. Kapasitas Dimensi 3. Kapasitas Tipe USB No. Kriteria (A) Skala Skala Kriteria (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 1. Kecepatan transfer 2. Kecepatan transfer Dimensi Tipe USB No. Kriteria (A) Skala Skala Kriteria (B) 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 1. Dimensi Tipe USB
L-13 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 : dhidipratama@gmail.com Riwayat Pendidikan 1996-2002 2002-2005 2005-2008 2008-2011 2012-2015 : SD MIS Andalusia : SMP Sultan Agung Pematang Siantar : SMA Taman Siswa Tapian Dolok : AMIK Tunas Bangsa Pematang Siantar : 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)