• Tidak ada hasil yang ditemukan

Sistem Pendukung Keputusan Menentukan Antibiotik Menggunakan Algoritma Analytical Hierarchy Process dan Weighted Product

N/A
N/A
Protected

Academic year: 2018

Membagikan "Sistem Pendukung Keputusan Menentukan Antibiotik Menggunakan Algoritma Analytical Hierarchy Process dan Weighted Product"

Copied!
38
0
0

Teks penuh

(1)

LISTING PROGRAM

1. Form Utama

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

public partial class FormUtama : Form {

public FormUtama() {

InitializeComponent(); }

private void aBOUTMEToolStripMenuItem_Click(object sender, EventArgs e) {

AboutMe aboutme = new AboutMe(); aboutme.ShowDialog();

}

private void mASTERDATAPENYAKITToolStripMenuItem_Click(object sender, EventArgs e)

{

MasterPenyakit masterpenyakit = new MasterPenyakit(); masterpenyakit.ShowDialog();

}

private void mASTERDATAANTIBIOTIKToolStripMenuItem_Click(object sender, EventArgs e)

{

(2)

}

private void mASTERDATAKRITERIAToolStripMenuItem_Click(object sender, EventArgs e)

{

MasterKriteria masterkriteria = new MasterKriteria(); masterkriteria.ShowDialog();

}

private void FormUtama_Load(object sender, EventArgs e) {

}

private void eXITToolStripMenuItem_Click(object sender, EventArgs e) {

Application.Exit(); }

private void pENILAIANKRITERIAToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianKriteria penilaian = new PenilaianKriteria(); penilaian.ShowDialog();

}

private void pENILAIANANTIBIOTIKToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianAntibiotik penilaian = new PenilaianAntibiotik(); penilaian.ShowDialog();

}

private void pENILAIANPRODUKWPToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianProduk penilaian = new PenilaianProduk(); penilaian.ShowDialog();

(3)

2. Form Aboutme

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

public partial class AboutMe : Form {

public AboutMe() {

InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) {

this.Close(); }

} }

3. Hasil AHP antibiotik

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data;

using System.Data.SqlServerCe; using System.Diagnostics;

(4)

{

public partial class HasilAHPAntibiotik : Form {

public DataTable TableBeratBadan = new DataTable(); public DataTable TableDosis = new DataTable(); public DataTable TableHarga = new DataTable();

public HasilAHPAntibiotik() {

InitializeComponent(); }

private void HasilAHPAntibiotik_Load(object sender, EventArgs e) {

Stopwatch sw = new Stopwatch(); sw.Start();

ProsesAHP(TableBeratBadan, "BeratBadan"); ProsesAHP(TableHarga, "Harga");

ProsesAHP(TableDosis, "Dosis"); HitungTotal();

sw.Stop();

MessageBox.Show(

"Perhitungan selesai\n" + "Tampilkan hasil perhitungan", "Perhitungan",

MessageBoxButtons.OK);

DataTable table_ranking = (DataTable)data_ranking.DataSource;

DataView view = new DataView(table_ranking); view.Sort = "[Eigen Vector] DESC";

table_ranking = view.ToTable();

table_ranking.Columns.Add("Rank No", typeof(double)); table_ranking.Columns.Remove("Deskripsi");

int rankNo = 1;

foreach(DataRow row in table_ranking.Rows) {

row["Rank No"] = rankNo++; }

(5)

}

private Dictionary<string, double> ProsesAHP(DataTable data, string kriteria) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = GetMatriks(data);

DataTable tableAkhir = new DataTable();

DataTable tableJumlahKolom = new DataTable(); DataTable dataAntibiotik = GetDataAntibiotik();

tableAkhir = matriks.Copy(); double lamda = 0;

double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = 1.43;

double JumlahAntibiotik = dataAntibiotik.Rows.Count; result = Normalisasi(tableAkhir, dataAntibiotik); tableAkhir = result["MatriksAkhir"];

tableJumlahKolom = result["MatriksJumlahKolom"]; foreach (DataRow row in tableAkhir.Rows)

{

String NamaAntibiotik = row["Antibiotik"].ToString(); if (NamaAntibiotik == "Total Kolom") continue; lamda += (double)row["Eigen Max"];

}

nilaiCI = ((lamda) - JumlahAntibiotik) / (JumlahAntibiotik - 1); nilaiCR = nilaiCI / NilaiIR;

Dictionary<string, double> consistency = new Dictionary<string, double>(); consistency.Add("JumlahAntibiotik", JumlahAntibiotik);

consistency.Add("CI", nilaiCI); consistency.Add("CR", nilaiCR); consistency.Add("IR", NilaiIR);

DataTable data_consistency = new DataTable();

data_consistency.Columns.Add("Variable", typeof(string)); data_consistency.Columns.Add("Nilai", typeof(double));

(6)

newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai IR"; newrow["Nilai"] = NilaiIR;

data_consistency.Rows.Add(newrow);

newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai CI"; newrow["Nilai"] = nilaiCI;

data_consistency.Rows.Add(newrow);

newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai CR"; newrow["Nilai"] = nilaiCR;

data_consistency.Rows.Add(newrow);

Control[] matriks_ctl = this.Controls.Find("data_matriks" + kriteria, true); Control[] data_jumlah_kolom_ctl = this.Controls.Find("data_jumlah_kolom" + kriteria, true);

Control[] data_akhir_ctl = this.Controls.Find("data_akhir" + kriteria, true); Control[] data_consistency_ctl = this.Controls.Find("data_consistency" + kriteria, true);

if (matriks_ctl.Length > 0) {

((DataGridView)matriks_ctl[0]).DataSource = matriks; }

if (data_jumlah_kolom_ctl.Length > 0) {

((DataGridView)data_jumlah_kolom_ctl[0]).DataSource = tableJumlahKolom;

}

if (data_akhir_ctl.Length > 0) {

((DataGridView)data_akhir_ctl[0]).DataSource = tableAkhir; }

if (data_consistency_ctl.Length > 0) {

((DataGridView)data_consistency_ctl[0]).DataSource = data_consistency; }

(7)

private DataTable GetDataAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetDataKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetMatriks(DataTable data) {

DataTable dataAntibiotik = GetDataAntibiotik(); DataTable matriks = new DataTable("Matriks");

matriks.Columns.Add("Antibiotik", typeof(string)); foreach (DataRow row in dataAntibiotik.Rows) {

matriks.Columns.Add(row["NamaAntibiotik"].ToString(), typeof(double)); }

foreach (DataRow row in dataAntibiotik.Rows) {

DataRow new_row = matriks.NewRow();

new_row["Antibiotik"] = row["NamaAntibiotik"]; matriks.Rows.Add(new_row);

(8)

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Antibiotik"].ToString();

if (column == row) {

matriks.Rows[i][j] = 1; }

else {

DataRow[] rows = data.Select("(AntibiotikB = '" + column + "' AND AntibiotikA = '" + row + "')");

double nilai = 0; string dominan = "";

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else {

rows = data.Select("(AntibiotikA = '" + column + "' AND AntibiotikB = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else {

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }

(9)

{

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else {

matriks.Rows[i][j] = 0; }

} } }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)

{

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");

DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_kolom.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); total_kolom[namaAntibiotik] += (double)row[namaAntibiotik]; }

}

newMatriks = data.Copy(); matriks = data.Copy();

DataRow new_row = newMatriks.NewRow(); new_row["Antibiotik"] = "Total Kolom";

(10)

{

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); new_row[namaAntibiotik] = total_kolom[namaAntibiotik]; }

newMatriks.Rows.Add(new_row);

foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); row[namaAntibiotik] = (double)row[namaAntibiotik] /

total_kolom[namaAntibiotik]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_baris.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[namaAntibiotik] += (double)row[i]; }

}

data.Columns.Add("Jumlah Baris", typeof(double)); data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double));

Dictionary<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)

{

(11)

row["Jumlah Baris"] = total_baris[namaAntibiotik];

row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik; row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik * total_kolom[namaAntibiotik];

}

result.Add("MatriksJumlahKolom", newMatriks); result.Add("MatriksAkhir", data);

return result; }

private void HitungTotal() {

DataTable table_hitung = new DataTable(); DataTable table_ranking = new DataTable(); DataTable Data_kriteria = GetDataKriteria(); DataTable Data_antibiotik = GetDataAntibiotik(); table_hitung.Columns.Add("Kriteria", typeof(string)); table_hitung.Columns.Add("Prioritas", typeof(double));

table_ranking = Data_antibiotik.Copy();

table_ranking.Columns.Add("Eigen Vector", typeof(double));

Dictionary<String, DataTable> datas = new Dictionary<string, DataTable>(); foreach (DataRow kriteria in Data_kriteria.Rows)

{

string namakriteria = kriteria["NamaKriteria"].ToString().Replace(" ",""); DataTable table_nilai = new DataTable();

Control[] ctls = this.Controls.Find("data_akhir" + namakriteria, true); if (ctls.Length > 0)

{

table_nilai = (DataTable)((DataGridView)(ctls[0])).DataSource; }

datas.Add(namakriteria, table_nilai); }

foreach (DataRow antibiotik in Data_antibiotik.Rows) {

(12)

foreach (DataRow kriteria in Data_kriteria.Rows) {

string namakriteria = kriteria["NamaKriteria"].ToString(); double eigenvector =

String.IsNullOrEmpty(kriteria["EigenVector"].ToString()) ? 0 : (double)(kriteria["EigenVector"]);;

DataRow new_row = table_hitung.NewRow(); new_row["Kriteria"] = namakriteria;

new_row["Prioritas"] = eigenvector; table_hitung.Rows.Add(new_row); }

DataRow row_total = table_hitung.NewRow(); row_total["Kriteria"] = "Total Eigen";

foreach (DataRow rank in table_hitung.Rows) {

string namakriteria = rank["Kriteria"].ToString().Replace(" ", ""); double eigenvectorkriteria = (double)rank["Prioritas"];

foreach (DataRow antibiotik in Data_antibiotik.Rows) {

string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString(); DataRow[] rows = datas[namakriteria].Select("Antibiotik ='" + nama_antibiotik + "'");

double eigenvectorpemain = rows.Length > 0 ? (double)rows[0]["Eigen Vector"] : 1;

rank[nama_antibiotik] = eigenvectorkriteria * eigenvectorpemain;

if (String.IsNullOrEmpty(row_total[nama_antibiotik].ToString())) row_total[nama_antibiotik] = 0;

row_total[nama_antibiotik] = (double)row_total[nama_antibiotik] + (double)rank[nama_antibiotik];

} }

table_hitung.Rows.Add(row_total);

foreach(DataRow antibiotik in table_ranking.Rows) {

(13)

antibiotik["Eigen Vector"] = row_total[nama_antibiotik]; }

data_hitung.DataSource = table_hitung; data_ranking.DataSource = table_ranking; }

private void BKeluar_Click(object sender, EventArgs e) {

this.Close(); }

} }

4. Hasil AHP Kriteria

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

public partial class HasilAHPKriteria : Form {

public DataTable TableAwal; public DataTable TableKolom; public DataTable TableAkhir; public double CR;

public double IR; public double CI;

public double perulangan;

public HasilAHPKriteria() {

(14)

}

private void HasilAHPKriteria_Load(object sender, EventArgs e) {

data_awal.DataSource = TableAwal;

data_total_kolom.DataSource = TableKolom; data_akhir.DataSource = TableAkhir;

txtCI.Text = CI.ToString(); txtCR.Text = CR.ToString(); txtIR.Text = IR.ToString(); }

private void BSimpan_Click(object sender, EventArgs e) {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);

foreach(DataRow row in data.Rows) {

string nama = row["NamaKriteria"].ToString();

DataRow[] rows = TableAkhir.Select("Kriteria = '" + nama + "'"); if (rows.Length > 0)

{

row["EigenVector"] = rows[0]["Eigen Vector"]; }

}

bool isOk = database.SaveDataTable("table_kriteria", data, null, null);

if (isOk) {

MessageBox.Show("Berhasil Simpan"); }

else {

(15)

} } }

5. Hasil WP Antibiotik

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

public partial class HasilWPAntibiotik : Form {

public DataTable TableData = new DataTable();

public DataTable TablePembobotan = new DataTable(); public DataTable TableRanking = new DataTable();

public HasilWPAntibiotik() {

InitializeComponent(); }

private void HasilWPAntibiotik_Load(object sender, EventArgs e) {

TableData.Columns.Remove("Deskripsi");

TablePembobotan.Columns.Remove("Deskripsi"); TableRanking.Columns.Remove("Deskripsi");

DataView view = new DataView(TableRanking); view.Sort = "Ranking DESC";

TableRanking = view.ToTable();

DataTable TableRankingNo = TableRanking.Copy();

TableRankingNo.Rows.RemoveAt(TableRankingNo.Rows.Count - 1); TableRankingNo.Columns.Add("Rank No", typeof(double));

(16)

foreach(DataRow row in TableRankingNo.Rows) {

row["Rank No"] = rankNo++; }

TableRankingNo.Columns.Remove("Skor"); TableRankingNo.Columns.Remove("Ranking");

data_data.DataSource = TableData;

data_pembobotan.DataSource = TablePembobotan; data_ranking.DataSource = TableRanking;

dataview_ranking_no.DataSource = TableRankingNo; }

private void BKeluar_Click(object sender, EventArgs e) {

this.Close(); }

} }

6. Master Antibiotik

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

public partial class MasterAntibiotik : Form {

public MasterAntibiotik() {

(17)

private void MasterAntibiotik_Load(object sender, EventArgs e) {

LoadData(); }

private void LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_antibiotik ORDER BY NamaPenyakit ASC, NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_antibiotik.DataSource = data; }

private void SaveData() {

Database database = new Database("CEConn");

DataTable data = (DataTable)data_antibiotik.DataSource;

bool isOk = database.SaveDataTable("table_antibiotik", data, null, null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else {

MessageBox.Show("Gagal Simpan"); }

}

private void BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

(18)

7. Master Kriteria

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

public partial class MasterKriteria : Form {

public MasterKriteria() {

InitializeComponent(); }

private void MasterKriteria_Load(object sender, EventArgs e) {

LoadData(); }

private void LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_kriteria.DataSource = data; }

private void SaveData() {

(19)

DataTable data = (DataTable)data_kriteria.DataSource;

bool isOk = database.SaveDataTable("table_kriteria", data, null, null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else {

MessageBox.Show("Gagal Simpan"); }

}

private void BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

} }

8. Master Penyakit

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

public partial class MasterPenyakit : Form {

public MasterPenyakit() {

(20)

private void MasterPenyakit_Load(object sender, EventArgs e) {

LoadData(); }

private void LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_penyakit ORDER BY NamaPenyakit ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_penyakit.DataSource = data; }

private void SaveData() {

Database database = new Database("CEConn");

DataTable data = (DataTable)data_penyakit.DataSource;

bool isOk = database.SaveDataTable("table_penyakit", data, null, null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else {

MessageBox.Show("Gagal Simpan"); }

}

private void BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

(21)

}

9. Penilaian Antibiotik

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Data.SqlServerCe; using System.Drawing;

using System.Linq; using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

public partial class PenilaianAntibiotik : Form {

public DataTable tableAntibiotik = new DataTable();

public PenilaianAntibiotik() {

InitializeComponent(); }

private void PenilaianAntibiotik_Load(object sender, EventArgs e) {

LoadData(); }

private void LoadData() {

view_nilai_harga.DataSource = GetData("Harga"); view_nilai_dosis.DataSource = GetData("Dosis");

view_nilai_beratbadan.DataSource = GetData("Berat Badan");

tableAntibiotik = GetDataAntibiotik(); }

private DataTable GetData(String Kriteria) {

(22)

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_penilaian_antibiotik WHERE Kriteria = @Kriteria ORDER BY AntibiotikA ASC, AntibiotikB ASC"; parameters = new List<SqlCeParameter>();

parameters.Add(new SqlCeParameter("Kriteria", Kriteria)); data = database.GetDataTable(query, parameters);

data = Utility.AutoNumberedTable(data); return data;

}

private void SaveData(DataGridView dataview, String Kriteria) {

Database database = new Database("CEConn"); DataTable data = (DataTable)dataview.DataSource;

foreach (DataRow row in data.Rows) {

if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = Kriteria;

}

bool isOk = database.SaveDataTable("table_penilaian_antibiotik", data, null, null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else {

MessageBox.Show("Gagal Simpan"); }

}

private void BSimpan_Click(object sender, EventArgs e) {

SaveData(view_nilai_harga, "Harga"); }

(23)

SaveData(view_nilai_beratbadan, "Berat Badan"); }

private void BSimpanDosis_Click(object sender, EventArgs e) {

SaveData(view_nilai_dosis, "Dosis"); }

private void BHitung_Click(object sender, EventArgs e) {

HasilAHPAntibiotik formhasil = new HasilAHPAntibiotik(); DataTable DataBeratBadan = GetData("Berat Badan"); DataTable DataDosis = GetData("Dosis");

DataTable DataHarga = GetData("Harga");

formhasil.TableBeratBadan = DataBeratBadan; formhasil.TableDosis = DataDosis;

formhasil.TableHarga = DataHarga; formhasil.ShowDialog();

}

private bool Hitung(DataTable data, DataTable dataAntibiotik) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = GetMatriks(data, dataAntibiotik);

DataTable tableAkhir = new DataTable();

DataTable tableJumlahKolom = new DataTable(); tableAkhir = matriks.Copy();

double lamda = 0; double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = 1.43;

double JumlahAntibiotik = dataAntibiotik.Rows.Count; result = Normalisasi(tableAkhir, dataAntibiotik); tableAkhir = result["MatriksAkhir"];

tableJumlahKolom = result["MatriksJumlahKolom"]; foreach (DataRow row in tableAkhir.Rows)

{

String NamaAntibiotik = row["Antibiotik"].ToString(); if (NamaAntibiotik == "Total Kolom") continue; lamda += (double)row["Eigen Max"];

}

(24)

nilaiCR = nilaiCI / NilaiIR; if (Math.Abs(nilaiCR) <= 0.1) return false;

return true; }

private DataTable GetDataAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetMatriks(DataTable data, DataTable dataAntibiotik) {

DataTable matriks = new DataTable("Matriks");

matriks.Columns.Add("Antibiotik", typeof(string)); foreach (DataRow row in dataAntibiotik.Rows) {

matriks.Columns.Add(row["NamaAntibiotik"].ToString(), typeof(double)); }

foreach (DataRow row in dataAntibiotik.Rows) {

DataRow new_row = matriks.NewRow();

new_row["Antibiotik"] = row["NamaAntibiotik"]; matriks.Rows.Add(new_row);

}

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Antibiotik"].ToString();

(25)

{

matriks.Rows[i][j] = 1; }

else {

DataRow[] rows = data.Select("(AntibiotikB = '" + column + "' AND AntibiotikA = '" + row + "')");

double nilai = 0; string dominan = "";

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else {

rows = data.Select("(AntibiotikA = '" + column + "' AND AntibiotikB = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else {

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }

else if (column == dominan) {

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else {

matriks.Rows[i][j] = 0; }

(26)

} }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)

{

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");

DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_kolom.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); total_kolom[namaAntibiotik] += (double)row[namaAntibiotik]; }

}

newMatriks = data.Copy(); matriks = data.Copy();

DataRow new_row = newMatriks.NewRow(); new_row["Antibiotik"] = "Total Kolom";

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); new_row[namaAntibiotik] = total_kolom[namaAntibiotik]; }

newMatriks.Rows.Add(new_row);

(27)

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); row[namaAntibiotik] = (double)row[namaAntibiotik] /

total_kolom[namaAntibiotik]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_baris.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[namaAntibiotik] += (double)row[i]; }

}

data.Columns.Add("Jumlah Baris", typeof(double)); data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double));

Dictionary<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)

{

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; row["Jumlah Baris"] = total_baris[namaAntibiotik];

row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik; row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik * total_kolom[namaAntibiotik];

}

(28)

return result; }

} }

10. Penilaian Kriteria

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

public partial class PenilaianKriteria : Form {

public PenilaianKriteria() {

InitializeComponent(); }

private void PenilaianKriteria_Load(object sender, EventArgs e) {

LoadData(); }

private void LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_penilaian_kriteria ORDER BY KriteriaA ASC, KriteriaB ASC";

(29)

data = Utility.AutoNumberedTable(data); data_nilai.DataSource = data;

}

private void SaveData() {

Database database = new Database("CEConn"); DataTable data = (DataTable)data_nilai.DataSource;

bool isOk = database.SaveDataTable("table_penilaian_kriteria", data, null, null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else {

MessageBox.Show("Gagal Simpan"); }

}

private void BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

private void BHitung_Click(object sender, EventArgs e) {

DataTable data = (DataTable)data_nilai.DataSource; DataTable matriks = ConvertToMatrix(data);

Dictionary<string, DataTable> result = new Dictionary<string,DataTable>(); DataTable TableAkhir = new DataTable();

TableAkhir = matriks.Copy();

double TotalEigen = 0; double NilaiCI = 0; double NilaiCR = 0; double IR = 0.58; Int32 counter = 0;

(30)

foreach (DataRow row in TableAkhir.Rows) {

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; TotalEigen += (double)row["Eigen Max"]; }

NilaiCI = (TotalEigen - 3)/(3-1); // 3 ---> jumlah kriteria NilaiCR = NilaiCI / IR;

// tampilkan hasil perhitungan

HasilAHPKriteria formhasil = new HasilAHPKriteria(); formhasil.TableAwal = matriks;

formhasil.TableKolom = result["MatriksJumlahKolom"]; formhasil.TableAkhir = result["MatriksAkhir"];

formhasil.CI = NilaiCI; formhasil.CR = NilaiCR; formhasil.IR = IR;

formhasil.perulangan = counter; formhasil.ShowDialog();

}

private DataTable GetDataKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);

return data; }

private DataTable ConvertToMatrix(DataTable data) {

DataTable matriks = new DataTable("Matriks"); DataTable data_kriteria = GetDataKriteria();

(31)

matriks.Columns.Add(row["NamaKriteria"].ToString(), typeof(double)); }

DataRow new_row;

foreach (DataRow row in data_kriteria.Rows) {

new_row = matriks.NewRow();

new_row["Kriteria"] = row["NamaKriteria"];

matriks.Rows.Add(new_row); }

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Kriteria"].ToString();

if (column == row) {

matriks.Rows[i][j] = 1; }

else {

DataRow[] rows = data.Select("(KriteriaA = '" + column + "' AND KriteriaB = '" + row + "')");

double nilai = 0; string dominan = "";

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else {

rows = data.Select("(KriteriaB = '" + column + "' AND KriteriaA = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

(32)

} else {

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }

else if (column == dominan) {

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else {

matriks.Rows[i][j] = 0; }

} } }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>();

DataTable matriks = new DataTable("Matriks"); DataTable data_kriteria = GetDataKriteria();

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow kriteria in data_kriteria.Rows)

{

total_kolom.Add(kriteria["NamaKriteria"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow kriteria in data_kriteria.Rows) {

(33)

total_kolom[NamaKriteria] += (double)row[NamaKriteria]; }

}

matriks = data.Copy();

DataRow new_row = matriks.NewRow(); new_row["Kriteria"] = "Total Kolom";

foreach (DataRow kriteria in data_kriteria.Rows) {

String NamaKriteria = kriteria["NamaKriteria"].ToString(); new_row[NamaKriteria] = total_kolom[NamaKriteria]; }

matriks.Rows.Add(new_row);

foreach (DataRow row in data.Rows) {

foreach (DataRow kriteria in data_kriteria.Rows) {

String NamaKriteria = kriteria["NamaKriteria"].ToString(); row[NamaKriteria] = (double)row[NamaKriteria] /

total_kolom[NamaKriteria]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow kriteria in data_kriteria.Rows)

{

total_baris.Add(kriteria["NamaKriteria"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[NamaKriteria] += (double)row[i]; }

}

(34)

data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double));

foreach (DataRow row in data.Rows) {

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; row["Jumlah Baris"] = total_baris[NamaKriteria]; row["Eigen Vector"] = total_baris[NamaKriteria] / data_kriteria.Rows.Count;

row["Eigen Max"] = (double)row["Eigen Vector"] * total_kolom[NamaKriteria];

}

result.Add("MatriksJumlahKolom", matriks); result.Add("MatriksAkhir", data);

return result; }

} }

11. Penilaian Product

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlServerCe; using System.Diagnostics;

namespace MenentukanAntibiotik {

public partial class PenilaianProduk : Form {

DataTable DataKriteria = new DataTable(); DataTable DataAntibiotik = new DataTable();

(35)

DataTable TablePembobotan = new DataTable(); DataTable TableRanking = new DataTable();

public PenilaianProduk() {

InitializeComponent(); }

private void PenilaianProduk_Load(object sender, EventArgs e) {

DataKriteria = GetTableKriteria(); DataAntibiotik = GetTableAntibiotik();

TableData = GetSample(DataAntibiotik.Copy()); view_produk.DataSource = TableData;

}

private DataTable HitungRanking(DataTable sample) {

sample.Columns.Add("Skor", typeof(double)); sample.Columns.Add("Ranking", typeof(double));

Dictionary<string, double> bobot = new Dictionary<string, double>(); foreach(DataRow rowSample in sample.Rows)

{

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

bobot.Add("Dosis", (double)rowSample["Dosis"]); bobot.Add("Harga", (double)rowSample["Harga"]);

bobot.Add("Berat Badan", (double)rowSample["Berat Badan"]); }

}

double totalSkor = 0;

foreach (DataRow rowSample in sample.Rows) {

double skor = 0;

if (rowSample["NamaAntibiotik"].ToString() != "Bobot") {

double nilaiDosis = (double)rowSample["Dosis"]; double nilaiHarga = (double)rowSample["Harga"];

double nilaiBeratBadan = (double)rowSample["Berat Badan"];

(36)

skor += Math.Pow(nilaiHarga, bobot["Harga"]);

skor += Math.Pow(nilaiBeratBadan, bobot["Berat Badan"]); }

totalSkor += skor;

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

rowSample["Skor"] = totalSkor; }

else {

rowSample["Skor"] = skor; }

}

foreach (DataRow rowSample in sample.Rows) {

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") continue;

double skor = (double)rowSample["Skor"] / totalSkor; rowSample["Ranking"] = skor;

}

return sample; }

private DataTable FixBobot(DataTable sample, DataTable dataKriteria) {

double totalBobot = 0;

foreach(DataRow rowKriteria in dataKriteria.Rows) {

totalBobot += (double)rowKriteria["Bobot"]; }

foreach(DataRow rowSample in sample.Rows) {

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

rowSample["Dosis"] = (double)rowSample["Dosis"] / totalBobot; rowSample["Harga"] = (double)rowSample["Harga"] / totalBobot; rowSample["Berat Badan"] = (double)rowSample["Berat Badan"] / totalBobot;

(37)

}

return sample; }

private DataTable GetSample(DataTable dataAntibiotik) {

dataAntibiotik.Columns.Remove("Id");

dataAntibiotik.Columns.Remove("NamaPenyakit"); return dataAntibiotik;

}

private DataTable GetData(DataTable dataKriteria, DataTable dataAntibiotik) {

dataAntibiotik.Columns.Remove("Id");

dataAntibiotik.Columns.Remove("NamaPenyakit");

DataRow new_row = dataAntibiotik.NewRow(); new_row["NamaAntibiotik"] = "Bobot";

foreach(DataRow rowKriteria in dataKriteria.Rows) {

String namaKriteria = rowKriteria["NamaKriteria"].ToString(); double bobot = (double)rowKriteria["Bobot"];

new_row[namaKriteria] = bobot; }

dataAntibiotik.Rows.Add(new_row);

return dataAntibiotik; }

private DataTable GetTableKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);

(38)

}

private DataTable GetTableAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);

return data; }

private void BHitung_Click(object sender, EventArgs e) {

Stopwatch sw = new Stopwatch();

DataTable dataSample = GetData(DataKriteria.Copy(), DataAntibiotik.Copy());

sw.Start();

TablePembobotan = FixBobot(dataSample, DataKriteria); TableRanking = HitungRanking(TablePembobotan.Copy()); sw.Stop();

MessageBox.Show(

"Perhitungan selesai\n" + "Tampilkan hasil perhitungan", "Perhitungan",

MessageBoxButtons.OK);

// tampilkan hasil perhitungan

HasilWPAntibiotik formhasil = new HasilWPAntibiotik(); formhasil.TableData = TableData;

formhasil.TablePembobotan = TablePembobotan; formhasil.TableRanking = TableRanking;

formhasil.ShowDialog(); }

Referensi

Dokumen terkait

Napsu makan menurun, porsi makan tidak di habiskan, mukosa mulut lembab, kesulitan dalam menelan makanan karena adanya benjolan pada leher, tidak ada nyeri tekan pada abdomen,

Adapun ttap« yang kaal tantukan dlainl adalah tea pa yang baradar dipaaar-paaar raaal kota Surabaya# aa - dang oara pangaabilan aaapal dllakukan dangan

Hasil analisis kualitatif ( Gambar 4 ) menyatakan bahwa, dari empat sumur yang digunakan sebagai input pengolahan data seismik terdapat dua sumur yang

Disamping itu tuan rumah juga mempunyai 2 televisi berdaya 60 watt yang dinyalakan rata-rata 15 jam tiap hari, 1 buah setrika listrik berdaya 350 watt yang dipakai rata-rata 2 jam

Mengoperasikan PC stand alone Menjelaskan sistem operasi berbasis GUI Membandingkan perangkat lunak pengolah kata jenis.. close source dan

Menguasai materi, struktur, konsep, dan pola pikir Menganalisis materi, struktur, konsep, dan pola pikir Menerapkan intonasi yang baik pada praktek keilmuan yang mendukung

Kedua menu kategori ini diimplementasikan atas dasar cara kerja peralatan hidrolik yang digunakan pada bidang usaha bengkel atau pengguna alat alat hidrolik tersebut untuk

Bedasarkan Penetapan Peringkat Teknis untuk Pekerjaan Jasa Konsultansi Survey Budaya K3, Nomor : 683./PPPBJ-PPK/IV/2013 tanggal 09 April 2013, maka dengan ini