A-1
Listing Program
1.
Mainform.cs /* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 4:51 PM * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace AHPTest { /// <summary> /// Description of MainForm. /// public partial class MainForm : Form { string [] kriteria = new string[] {"IMK","Usia Mentoring","Training Pengurus","Hafalan Al-Qur'an","Jumlah Kelompok Mentoring"};//poin-poin kriteria string [] alternatif = new string[] {"Amat Baik","Baik","Cukup","Kurang"};//poin-poin alternatif setiap kriteria AHPTest.Data m_kriteria;//variabel yang menyimpan nilai matriks dan eigen vektor dari kriteria List
m_alternatif;//variabel yang menyimpan nilai matriks dan eigen vektor dari alternatif float [][] matriks;//matriks sementara untuk menampung nilai yang diinput user data_pen [][] data_sat; string [] bidang;
Universitas Sumatera Utara
A-2
pengumpulan.hasil [] data_hasil; Nilai y; public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); inisialisasi_tabel();//memulai membuat tabel sebagai tempat input nilai perbandingan m_alternatif = new List(); data_sat = new MainForm.data_pen[2][]; bidang = new string[]{"Kaderisasi,", "Syiar", "KW", "Akkom", "LSO-IT"}; // // TODO: Add constructor code after the InitializeComponent() call. // } void inisialisasi_tabel() { if (button1.Text == "Simpan Kriteria")//jika teks tombol seperti kondisi ini { dg.Columns.Add("C0","");//menambah 1 kolompada tabel,ada 2 parameter,nilai CO sebagai nama kolom, nilai "" sebagai headertext dg.Rows.Insert(0,"");//menambah 1 baris pada tabel,ada 2 parameter, satu index baris, satu lagi nilai isi sel di kolom pertama di baris tersebut dg[0,0].Value = "";//nilai dari sel [kolom ke,baris ke-] for (int i
Universitas Sumatera Utara
A-3
= 1;i
Universitas Sumatera Utara
A-4
} void Button1Click(object sender, EventArgs e) { if (button1.Text == "Simpan Kriteria") { matriks = new float[kriteria.Length][];//membuat ukuran matriks for (int i = 0;i
Universitas Sumatera Utara
A-5
for (int j = 0;j
Universitas Sumatera Utara
A-6
else if (button1.Text == "Tahap 2") { for (int i = 0;i<5;i++) { data_sat[0][i].nama = dg[0,i].Value.ToString(); data_sat[0][i].index = 0; data_sat[0][i].free = true; data_sat[0][i].prio = new List<sbyte>(); int max; for (int j = 0;j<5;j++) { max = 4-j; for (int k = 0;k<5;k++) { if (sbyte.Parse(dg[k+1,i].Value.To String()) == (sbyte)max) { data_sat[0][i].prio.Add((sbyte )k); break; } } } } dg.Rows.Clear(); dg.Columns.Clear(); dg.Columns.Add("C","Bidang/Nama"); for (int i = 0;i<5;i++) { dg.Columns.Add("C",data_hasil[(y.kandidat[ i].index/2)-1].nama); dg.Rows.Insert(i,bidang[i]); } data_sat[1] = new data_pen[5]; button1.Text = "Proses..."; } else
Universitas Sumatera Utara
A-7
{ for (int i = 0;i<5;i++) { data_sat[1][i].nama = dg[0,i].Value.ToString(); data_sat[1][i].index = 0; data_sat[1][i].free = true; data_sat[1][i].prio = new List<sbyte>(); int max; for (int j = 0;j<5;j++) { max = 5-j; for (int k = 0;k<5;k++) { if (sbyte.Parse(dg[k+1,i].Value.To String()) == (sbyte)max) { data_sat[1][i].prio.Add((sbyte )k); break; } } } } gale_shapley(); } } public struct data_pen { public string nama { get; set; } public List<sbyte> prio { get; set; } public sbyte index { get; set; } public bool free { get; set; } } sbyte ind = 0; void gale_shapley() { while(t_hab())
Universitas Sumatera Utara
A-8
{ if (data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].free) { data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].index = ind; data_sat[1][data_sat[0][ind].prio[data_sat [0][ind].index]].free = false; data_sat[0][ind].free = false; } else { for (int i = 0;i<5;i++) { if (data_sat[1][data_sat[0][ind].prio[ data_sat[0][ind].index]].prio[i] == ind) { data_sat[1][data_sat[0][ind].prio[ data_sat[0][ind].index]].index = ind; data_sat[0][ind].free = false; break; } else if (data_sat[1][data_sat[0][ind]. prio[data_sat[0][ind].index]].prio[i] == data_sat[1][data_sat[0][ind].prio[data_sat[0][ind].index]].ind ex) break; } } data_sat[0][ind].index++; MessageBox.Show(data_sat[1][data_sat[0][ind].p rio[data_sat[0][ind].index]].index.ToString()+" : "+data_sat[0][data_sat[1][data_sat[0][ind].prio[data_sat[0][in d].index]].index].nama); } dg.Columns.Clear(); dg.Rows.Clear(); dg.Columns.Add("C","Bidang");
Universitas Sumatera Utara
A-9
dg.Columns.Add("C","Kandidat"); for (int i = 0;i<5;i++) { dg.Rows.Add(); dg[0,i].Value = data_sat[1][i].nama; dg[1,i].Value = data_sat[0][data_sat[1][i].index].nama; } } bool t_hab() { for (int i = 0;i<5;i++) { if (data_sat[0][i].free == true) { ind = (sbyte)i; return true; } } return false; } } }
2.
Pengumpulan.cs /* * Created by SharpDevelop. * User: asus * Date: 7/21/2014 * Time: 6:10 PM * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Drawing; using System.Collections.Generic; using System.Windows.Forms;
Universitas Sumatera Utara
A-10
using System.Threading; namespace AHPTest { /// <summary> /// Description of pengumpulan. /// public partial class pengumpulan : Form { Data krit; Listalternatif; int count = 1; public hasil [] da; public pengumpulan(Data krit,Listalternatif) { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); this.krit = krit; this.alternatif = alternatif; generate(); // // TODO: Add constructor code after the InitializeComponent() call. // } void generate() { DataGridViewComboBoxColumn x1; dg.Columns.Insert(0,new DataGridViewTextBoxColumn( )); dg.Columns[0].HeaderText = "No."; dg.Columns.Insert(1,new DataGridViewTextBoxColumn( )); dg.Columns[1].HeaderText = "Nama Kandidat"; for (int i = 2;i
Universitas Sumatera Utara
A-11
x1 = new DataGridViewComboBoxColumn(); x1.DataSource = alternatif[i-2].keterangan; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = krit.keterangan[i-2]; dg.Columns.Insert(i,x1); //dg.Rows.Add(); } /*x1 = new DataGridViewComboBoxColumn(); x1.DataSource = alternatif[alternatif.Count1].keterangan; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = krit[0].keterangan[krit[0].keterangan.Length-1]; dg.Columns.Insert(alternatif.Count+1,x1);*/ /*string [] bidang = new string[]{"Kaderisasi","Syiar","Kewirausahaan","Akkom","LSOIT"}; string [] nomor = new string[]{"1","2","3","4","5"}; for (int i = 1;i<6;i++) { x1 = new DataGridViewComboBoxColumn(); x1.DataSource = nomor; x1.FlatStyle = FlatStyle.Flat; x1.HeaderText = bidang[i-1]; dg.Columns.Insert(alternatif.Count+i+1,x1); }*/ /*for (int i = 2;i
Universitas Sumatera Utara
A-12
void Button1Click(object sender, EventArgs e) { count++; dg.Rows.Add(); dg.Rows[count-1].Cells[0].Value = count.ToString(); } public struct hasil { public string nama { get; set; } public int [] nilai_p { get; set; } /*public string [] minat { get; set; } public bool habis { get; set; } public bool free { get; set; } public int index { get; set; }*/ } void Button2Click(object sender, EventArgs e) { DataGridViewComboBoxCell x1; //float jumlah = 0f; da = new hasil[count]; for (int i = 0;i
Universitas Sumatera Utara
A-13
} /*da[i].minat = new string [] {dg[alternatif.Count+2,i].Value.ToString(), dg[alternatif. Count+3,i].Value.ToString(), dg[alternatif. Count+4,i].Value.ToString(), dg[alternatif. Count+5,i].Value.ToString(), dg[alternatif. Count+6,i].Value.ToString()}; //MessageBox.Show(i.ToString()); da[i].index = 0; da[i].free = true; da[i].habis = false; pb1.Value = (100*(i+1))/count; Thread.Sleep(300);*/ } } } }
3.
Nilai.cs /* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 6:04 PM * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; namespace AHPTest {
Universitas Sumatera Utara
A-14
/// <summary> /// Description of Nilai. /// public partial class Nilai : Form { pengumpulan.hasil [] data_hasil; Data m_krit; List m_altern; public juara [] kandidat; public Nilai(pengumpulan.hasil [] data_hasil,Data m_krit,List m_altern) { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); this.data_hasil = data_hasil; this.m_krit = m_krit; this.m_altern = m_altern; inisialisasi_tabel2(); // // TODO: Add constructor code after the InitializeComponent() call. // } void inisialisasi_tabel() { dg.Columns.Add("C0","Nama Kandidat"); int hitung = 0; while (hitung < m_krit.keterangan.Length) { dg.Columns.Add("C"+(hitung+1).ToString(),"Nila i Alt"/*m_krit.keterangan[hitung]*/); dg.Columns.Add("C"+(hitung+2).ToString(),"Nila i Alt"); hitung++; } dg.Columns.Add("C"+hitung.ToString(),"Total");
Universitas Sumatera Utara
A-15
int hitung1; int bantu ; for (int i = 0;i
Universitas Sumatera Utara
A-16
float jlh; while (k
Universitas Sumatera Utara
A-17
dg[bantu,6].Value = jlh.ToString(); k++; } kandidat = new juara[5]; for (int i =0;i<5;i++) { kandidat[i].index = 0; kandidat[i].jumlah = 0f; for (int j = 3;j kandidat[i].jumlah) { kandidat[i].jumlah = float.Parse(dg[j,6].Value.ToString()); kandidat[i].index = (sbyte)j; } } else { if ((float.Parse(dg[j,6].Value.ToString()) > kandidat[i].jumlah) && (float.Parse(dg[j,6].Value.ToString() ) <= kandidat[i-1].jumlah) && (sbyte)j != kandidat[i1].index ) { kandidat[i].jumlah = float.Parse(dg[j,6].Value.ToString()); kandidat[i].index = (sbyte)j; } } }
//MessageBox.Show(juara[4].ToString()); dg.Columns[kandidat[0].index].DefaultCellStyle.Bac kColor = Color.DarkOrange; dg.Columns[kandidat[0].index-
Universitas Sumatera Utara
A-18
1].DefaultCellStyle.BackColor = Color.DarkOrange; dg.Columns[kandidat[1].index].DefaultCellStyle.Bac kColor = Color.DodgerBlue; dg.Columns[kandidat[1].index1].DefaultCellStyle.BackColor = Color.DodgerBlue; dg.Columns[kandidat[2].index].DefaultCellStyle.Bac kColor = Color.DarkGray; dg.Columns[kandidat[2].index1].DefaultCellStyle.BackColor = Color.DarkGray; dg.Columns[kandidat[3].index].DefaultCellStyle.Bac kColor = Color.DarkOrchid; dg.Columns[kandidat[3].index1].DefaultCellStyle.BackColor = Color.DarkOrchid; dg.Columns[kandidat[4].index].DefaultCellStyle.Bac kColor = Color.DarkOliveGreen; dg.Columns[kandidat[4].index1].DefaultCellStyle.BackColor = Color.DarkOliveGreen; } public struct juara { public sbyte index; public float jumlah; } } }
4.
Data.cs /* * Created by SharpDevelop. * User: asus * Date: 7/23/2014 * Time: 5:39 PM * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System;
Universitas Sumatera Utara
A-19
namespace AHPTest { /// <summary> /// Inilah variabel yang menyimpan nilai matriks, serta memunyai fungsi untuk memrosesnya dengan algoritma AHP. /// public class Data { public string [] keterangan;//variabel penyimpan bacaan keterangan float [][] matriks;//variabel penympan matriks float [] kolom;//untuk menyimpan nilai setiap kolom public float [] prioritas;//menyiman nilai eigenvektor yang merupakan nilai prioritas float [][] temp;//matriks pembantu mencari nilai cr public float CR;//variabel nilai inkonsistensi public Data(string [] keterangan, float [][] matriks) { this.keterangan = keterangan;//memindahkan nilai yang ada di parameter keterangan ke variabel keterangan form ini (nilai parameter ini adalah nilai dari form sebelumnya) this.matriks = matriks;//memindahkan nilai yang ada di parameter matriks ke matriks keterangan form ini kolom = new float[keterangan.Length];//membuat tempat nilai yang bisa ditampung kolom sepanjang jumlah poinpoin prioritas = new float[keterangan.Length];//membuat tempat nilai bagi eigen vektor temp = new float[keterangan.Length][]; for (int i= 0;i
}
Universitas Sumatera Utara
A-20
void proses()//algoritma AHP { float jlh = 0f,eigen = 0f;//jlh sebagai penampung nilai setiap baris, eigen disini bukan eigen vektor, tapi eigen value for (int i = 0;i
for (int i = 0;i
for (int i = 0;i
Universitas Sumatera Utara
A-21
kolom[i] = 0f; }
for (int i = 0;i
for (int i = 0;i
for (int i = 0;i
eigen = jlh/(float)kolom.Length; float CI = (eigen(float)kolom.Length)/(float)kolom.Length; float RC = 0f; if ((float)kolom.Length == 4f) RC = 0.9f; else RC = 1.12f;
Universitas Sumatera Utara
A-22
CR = (CI/RC)*100f; //MessageBox.Show("CR = "+CR.ToString()+"%",prioritas[0].ToString("N4")); //MessageBox.Show((prioritas[0]).ToString("N4")+": "+(prioritas[1]).ToString("N4")+":"+(prioritas[2]).ToString("N 4")+":"+(prioritas[3]).ToString("N4"));
} } }
Universitas Sumatera Utara