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]; }
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 (map.get(Hd[i][j][k]).equals("Level")) {
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 (AHP) DAN METODE PREFERENCE RANKING ORGANIZATION METHOD FOR
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);
} });
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); } }