Metode Simple Multi Attribute Rating Technique atau yang biasa disingkat SMART merupakan metode dalam pengambilan keputusan multiatribut. Teknik pengambilan keputusan multi atribut ini digunakan untuk mendukung pembuat keputusan dalam memilih beberapa alternatif. Setiap pembuat keputusan harus memiliki sebuah alternatif yang sesuai dengan tujuan yang dirumuskan
author : cahya dsn,
published on : April 5th, 2018 updated on : June 12th, 2022
SMART (Simple Multi Attribute Rating Technique) merupakan metode pengambilan keputusan yang multiatribut yang dikembangkan oleh Edward pada tahun 1971 (Filho 2005). Pendekatan ini dirancang pada awalnya untuk memberikan cara mudah untuk menerapkan teknik MAUT (Multi-Attribute Utility Theory). Selama bertahun-tahun, kegagalan dalam metode ini telah diidentifikasi, dan telah diperbaiki (Edwards and Barron, 1994) yang menciptakan metode SMARTS dan SMARTER, yang menyajikan dua bentuk berbeda untuk memperbaiki kekurangan ini (Filho, 2005). Dalam artikel ini, digunakan metode SMART.
SMART (Simple Multi Attribute Rating Technique) merupakan metode pengambilan keputusan yang multiatribut. Teknik pembuatan keputusan multiatribut ini digunakan untuk mendukung pembuat keputusan dalam memilih antara beberapa alternatif. Setiap pembuat keputusan harus memilih sebuah alternatif yang sesuai dengan tujuan yang telah dirumuskan.
Setiap alternatif terdiri dari sekumpulan atribut dan setiap atribut mempunyai nilai-nilai. Nilai ini dirata-rata dengan skala tertentu.Setiap atribut mempunyai bobot yang menggambarkan seberapa penting skala tertentu. Setiap atribut mempunyai bobot yang menggambarkan seberapa penting suatu atribut dibandingkan dengan atribut lain. Pembobotan dan pemberian peringkat ini digunakan untuk menilai setiap alternatif agar diperoleh alternatif terbaik.
SMART mengunakan linier adaptif model untuk meramal nilai setiap alternatif. SMART lebih banyak digunakan karena kesederhanaannya dalam merespon kebutuhan pembuat keputusan dan caranya menganalisa respon.Analisis yang terbaik adalah transparan sehingga metode ini memberikan pemahaman masalah yang tinggi dan dapat diterima oleh pembuat keputusan.Pembobotan pada SMART mengunakan skala 0 sampai 1, sehingga mempermudah perhitungan dan perbandingan nilai pada masing-masing alternatif. Model yang digunakan dalam SMART yaitu :
Tahapan-tahapan yang ada dalam metode SMART adalah sebagai berikut (Goodwin and Wright 2004) :
Menentukan kriteria yang digunakan dalam menyelesaikan masalah pengambilan keputusan. Untuk menentukan kriteria-kriteria apa saja yang digunakan dalam sistem pengambilan keputusan ini diperlukan data-data dari pengambil keputusan atau pihak yang berwenang/kompeten terhadap masalah yang akan diselesaikan.
Memberikan bobot kriteria pada masing-masing kriteria dengan menggunakan interval 1-100 untuk masing-masing kriteria dengan prioritas terpenting.
Menghitung normalisasi bobot dari setiap kriteria dengan membandingkan nilai bobot kriteria dengan jumlah bobot kriteria, menggunakan persamaan :
Memberikan nilai kriteria untuk setiap alternatif, nilai kriteria untuk setiap alternatif ini dapat berbentuk data kuantitatif (angka) ataupun berbentuk data kualitatif, misalkan nilai untuk kriteria harga sudah dapat dipastikan berbentuk kuantitatif sedangkan nilai untuk kriteria fasilitas bisa jadi berbentuk kualitatif (sangat lengkap, lengkap, kurang lengkap).
Apabila nilai kriteria berbentuk kualitatif maka kita perlu mengubah ke data kuantitatif dengan membuat parameter nilai kriteria, misalkan sangat lengkap artinya 3, lengkap artinya 2 dan tidak lengkap artinya 1.
Menentukan nilai utility dengan mengkonversikan nilai kriteria pada masing-masing kriteria menjadi nilai kriteria data baku. Nilai utility ini tergantung pada sifat kriteria itu sendiri.
Kriteria yang bersifat "lebih diinginkan nilai yang lebih kecil" kriteria seperti ini biasanya dalam bentuk biaya yang harus dikeluarkan (misalkan kriteria harga, kriteria penggunaan bahan bakar per kilometer untuk pembelian mobil, periode pengembalian modal dalam suatu usaha, kriteria waktu pengiriman) dapat dihitung dengan menggunakan persamaan :
Kriteria yang bersifat "lebih diinginkan nilai yang lebih besar", kriteria seperti ini biasanya dalam bentuk keuntungan (misalkan kriteria kapasitas tangki untuk pembelian mobil, kriteria kualitas dan lainnya). Persamaan yang digunakan untuk menentukan nilai utility jenis ini adalah :
Menentukan nilai akhir dari masing-masing dengan mengalikan nilai yang didapat dari normalisasi nilai kriteria data baku dengan nilai normalisasi bobot kriteria. Kemudian jumlahkan nilai dari perkalian tersebut
Hasil dari perhitungan Nilai akhir kemudian diurutkan dari nilai yang terbesar hingga yang terkecil, alternatif dengan nilai akhir yang terbesar menunjukkan alternatif yang terbaik
Huang 2011).Yeh dan Chang 2009).Yeh dan Chang 2009).Yeh dan Chang 2009).Gu et al. 2012).Chen dan Hou 2004; Panagopoulos et al. 2012).Gu et al. 2012).Chen dan Hou 2004).Gu et al. 2012; Chen dan Hou 2004).Panagopoulos dkk. 2012; Afshar dkk. 2011).Dai et al. 2012).Von Winterfeldt dan Edwards 1986).Demirci et al. 2009).Valiris et al. 2005).Benzerra et al. 2012).Manfaat dilakukannya studi kelayakan bisnis ini untuk mengetahui usaha mana saja yang pantas dilanjutkan atau tidak dilanjutkan. Bisnis yang dilanjutkan adalah jika bisnis tersebut dapat memberikan keuntungan serta manfaat yang maksimal.
Kajian kelayakan ekonomis adalah perhitungan tentang kelayakan ekonomis, berupa estimasi-estimasi dengan mempergunakan beberapa metode pendekatan. Menurut Kasmir dan Jakfar (2007) (Afandi 2009), dalam aspek keuangan dan ekonomi terdapat enam kriteria yang biasa digunakan untuk menentukan kelayakan suatu usaha atau usaha, yaitu Payback period (PP), Net Present Value (NPV), Average Rate of Return (ARR), Internal Rate of Return(IRR), Profibility Index (PI), serta berbagai rasio keuangan seperti rasio likuiditas, solvabilitas, aktivitas, dan profitabilitas.
Pengambilan keputusan untuk menentukan kelayakan bisnis ini dapat memanfaatkan kemajuan teknologi komputer saat ini, sehingga dapat dibangun sebuah sistem pendukung keputusan untuk mendukung keputusan yang akan diambil. Sistem ini dibuat bukan untuk mengantikan kedudukan seorang pengambil keputusan tetapi memberi dukungan berupa informasi sehingga membantu seorang pengambil keputusan dalam mengambil keputusan untuk suatu permasalahan. Permasalahan pengambilan keputusan yang sedang dibahas disini adalah sistem pendukung keputusan multikriteria.
Terdapat sejumlah 5 usaha yang akan dianalisa, yaitu : Warung Persada, Agen Sembako Sejahtera, Travel Agen Jaya, Loundry Langgeng, Peternakan Buana
Dalam contoh kasus ini, untuk kriteria kelayakan usaha secara finansial yang diperhitungkan (Dewi and Yadnya 2013) adalah:
Merupakan metode yang dilakukan dengan cara membandingkan nilai sekarang dari aliran kas masuk bersih (proceeds) dengan nilai sekarang dari biaya pengeluaran suatu usaha (outlays). Persamaan yang digunakan adalah :
Ketentuannya adalah jika NPV > 0 maka usaha layak dilanjutkan dan jika NPV < 0 maka usaha tidak layak dilanjutkan.
Merupakan metode yang digunakan untuk menghitung lama periode yang diperlukan untuk mengembalikan uang yang telah diusahakan dari aliran kas masuk. Persamaan yang digunakan untuk menghitung Payback Period sebagai berikut:
Kriteria penilaiannya adalah jika jika Payback Period suatu proyek lebih pendek dibanding dengan Payback Period maksimum maka usaha layak dipertahankan.
Merupakan cara untuk mengukur rata-rata pengembalian bunga dengan cara membandingkan antara rata-rata laba setelah pajak (EAT) dengan rata-rata usaha.
Untuk menghitung tingkat bunga yang dapat menyamakan antara nilai sekarang dari semua aliran kas masuk dengan aliran kas keluar dari suatu usaha proyek. Persamaannya adalah sebagai berikut :
Profitability Index dapat dicari dengan menghitung perbandingan antara nilai penerimaan kas bersih dimasa yang akan datang (proceeds) dengan nilai usaha sekarang (outlays). Persamaan yang digunakan adalah :
Jika PI > 1 maka usaha layak dilanjutkan, tapi jika PI < 1 maka usaha tidak layak dilanjutkan.
Sebaga contoh data-data untuk masing-masing kriteria dari tiap alternatif adalah seperti dalam TABEL 1 berikut ini (data-data tersebut adalah BUKAN data real, data-data tersebut digenerate secara otomatis oleh sistem):
| Alternatif | Kriteria | |||||
|---|---|---|---|---|---|---|
| Kode | Nama | C1 | C2 | C3 | C4 | C5 |
| A1 | Warung Persada | 542.00 | 2.01 | 240.00 | 35.30 | 1.30 |
| A2 | Agen Sembako Sejahtera | 621.00 | 2.00 | 571.00 | 30.40 | 1.40 |
| A3 | Travel Agen Jaya | 397.00 | 2.51 | 235.00 | 44.10 | 1.80 |
| A4 | Loundry Langgeng | 661.00 | 2.16 | 635.00 | 23.80 | 1.50 |
| A5 | Peternakan Buana | 184.00 | 3.08 | 265.00 | 15.90 | 1.40 |
Memberikan bobot kriteria dengan nilai 1 s.d. 100 berdasarkan tingkat kepentingan kriteria. Nilai yang diberikan pada bobot kriteria ini berdasarkan pada penilaian pengambil keputusan (dalam hal ini nilainya digenerate secara otomatis oleh sistem), seperti yang ditunjukkan dalam TABEL 2 berikut :
| Kode | Kriteria | Bobot Kriteria (w'i) |
|---|---|---|
| C1 | NVP | 78 |
| C2 | PP | 75 |
| C3 | ARR | 53 |
| C4 | IRR | 90 |
| C5 | PI | 75 |
Normalisasi bobot kriteria dihitung berdasarkan persamaan [SMT-01], yaitu dengan membagi nilai masing-basing bobot dengan jumlah total nilai bobot, sehingga diperoleh hasil seperti dalam TABEL 3 di bawah ini:
| Kode | Kriteria | Bobot Kriteria (w'i) | Normalisasi Bobot Kriteria (wi) |
|---|---|---|---|
| C1 | NVP | 78 | $\frac{78}{371}=0.210$ |
| C2 | PP | 75 | $\frac{75}{371}=0.202$ |
| C3 | ARR | 53 | $\frac{53}{371}=0.143$ |
| C4 | IRR | 90 | $\frac{90}{371}=0.243$ |
| C5 | PI | 75 | $\frac{75}{371}=0.202$ |
Dalam memberikan nilai parameter untuk setiap kriteria, diperlukan untuk data yang berbentuk kualitatif, misalkan untuk kriteria kualitas (sangat baik = 5, baik = 4, cukup = 3, kurang = 2 dan sangat kurang = 1). Pada contoh kasus ini, nilai untuk setiap kriteria berbentuk kuantitatif sehingga tidak perlu diberi nilai parameter lagi.
Menentukan nilai utility ini tergantung dari sifat masing-masing kriteria. Sifat/tipe dari masing-masing kriteria dalam contoh kasus ini ditunjukkan dalam TABEL 4 berikut ini :
| Kode | Kriteria | Tipe Kriteria |
|---|---|---|
| C1 | NVP | lebih besar lebih baik (benefit criteria) |
| C2 | PP | lebih besar lebih baik (benefit criteria) |
| C3 | ARR | lebih besar lebih baik (benefit criteria) |
| C4 | IRR | lebih besar lebih baik (benefit criteria) |
| C5 | PI | lebih besar lebih baik (benefit criteria) |
Penentuan Nilai utility NVP, PP, ARR, IRR, PI untuk masing-masing usaha dihitung menggunakan persamaan [SMT-02] atau [SMT-03] sebagai berikut
Dalam menghitung nilai utility kriteria NVP, terlebih dahulu dicari nilai $C_{max(NVP)}$ dan nilai $C_{min(NVP)}$-nya sebagai berikut:
$C_{max(NVP)}=\{542 ; 621 ; 397 ; 661 ; 184\} = 661$
$C_{min(NVP)}=\{542 ; 621 ; 397 ; 661 ; 184\} = 184$
Karena kriteria NVP merupakan benefit criteria, sehingga berdasarkan persamaan [SMT-03] dapat dihitung masing-masing nilai utility dari tiap alternatif sebagai berikut:
$u_{NVP(a_1)}=\frac{(C_{out(a_1)} - C_{min(NVP)})}{(C_{max(NVP)} - C_{min(NVP)})} = \frac{(542 - 184)}{(661 - 184)} = 0.751$Dalam menghitung nilai utility kriteria PP, terlebih dahulu dicari nilai $C_{max(PP)}$ dan nilai $C_{min(PP)}$-nya sebagai berikut:
$C_{max(PP)}=\{2.01 ; 2 ; 2.51 ; 2.16 ; 3.08\} = 3.08$
$C_{min(PP)}=\{2.01 ; 2 ; 2.51 ; 2.16 ; 3.08\} = 2$
Karena kriteria PP merupakan benefit criteria, sehingga berdasarkan persamaan [SMT-03] dapat dihitung masing-masing nilai utility dari tiap alternatif sebagai berikut:
$u_{PP(a_1)}=\frac{(C_{out(a_1)} - C_{min(PP)})}{(C_{max(PP)} - C_{min(PP)})} = \frac{(2.01 - 2)}{(3.08 - 2)} = 0.009$Dalam menghitung nilai utility kriteria ARR, terlebih dahulu dicari nilai $C_{max(ARR)}$ dan nilai $C_{min(ARR)}$-nya sebagai berikut:
$C_{max(ARR)}=\{240 ; 571 ; 235 ; 635 ; 265\} = 635$
$C_{min(ARR)}=\{240 ; 571 ; 235 ; 635 ; 265\} = 235$
Karena kriteria ARR merupakan benefit criteria, sehingga berdasarkan persamaan [SMT-03] dapat dihitung masing-masing nilai utility dari tiap alternatif sebagai berikut:
$u_{ARR(a_1)}=\frac{(C_{out(a_1)} - C_{min(ARR)})}{(C_{max(ARR)} - C_{min(ARR)})} = \frac{(240 - 235)}{(635 - 235)} = 0.013$Dalam menghitung nilai utility kriteria IRR, terlebih dahulu dicari nilai $C_{max(IRR)}$ dan nilai $C_{min(IRR)}$-nya sebagai berikut:
$C_{max(IRR)}=\{35.3 ; 30.4 ; 44.1 ; 23.8 ; 15.9\} = 44.1$
$C_{min(IRR)}=\{35.3 ; 30.4 ; 44.1 ; 23.8 ; 15.9\} = 15.9$
Karena kriteria IRR merupakan benefit criteria, sehingga berdasarkan persamaan [SMT-03] dapat dihitung masing-masing nilai utility dari tiap alternatif sebagai berikut:
$u_{IRR(a_1)}=\frac{(C_{out(a_1)} - C_{min(IRR)})}{(C_{max(IRR)} - C_{min(IRR)})} = \frac{(35.3 - 15.9)}{(44.1 - 15.9)} = 0.688$Dalam menghitung nilai utility kriteria PI, terlebih dahulu dicari nilai $C_{max(PI)}$ dan nilai $C_{min(PI)}$-nya sebagai berikut:
$C_{max(PI)}=\{1.3 ; 1.4 ; 1.8 ; 1.5 ; 1.4\} = 1.8$
$C_{min(PI)}=\{1.3 ; 1.4 ; 1.8 ; 1.5 ; 1.4\} = 1.3$
Karena kriteria PI merupakan benefit criteria, sehingga berdasarkan persamaan [SMT-03] dapat dihitung masing-masing nilai utility dari tiap alternatif sebagai berikut:
$u_{PI(a_1)}=\frac{(C_{out(a_1)} - C_{min(PI)})}{(C_{max(PI)} - C_{min(PI)})} = \frac{(1.3 - 1.3)}{(1.8 - 1.3)} = 0.000$Hasil perhitungan nilai utility tersebut dirangkum dalam TABEL 5 sebagai berikut:
| Alternatif | Kriteria | |||||
|---|---|---|---|---|---|---|
| Kode | Nama | C1 | C2 | C3 | C4 | C5 |
| A1 | Warung Persada | 0.751 | 0.009 | 0.013 | 0.688 | 0.000 |
| A2 | Agen Sembako Sejahtera | 0.916 | 0.000 | 0.840 | 0.514 | 0.200 |
| A3 | Travel Agen Jaya | 0.447 | 0.472 | 0.000 | 1.000 | 1.000 |
| A4 | Loundry Langgeng | 1.000 | 0.148 | 1.000 | 0.280 | 0.400 |
| A5 | Peternakan Buana | 0.000 | 1.000 | 0.075 | 0.000 | 0.200 |
Perhitungan nilai akhir/preferensi menggunakan persamaan [SMT-04]; dan diperoleh hasil sebagai berikut :
Perhitungan nilai akhir untuk alternatif A1 (Warung Persada) adalah sebagai berikut :
$\begin{align}u(a_1) &=\sum_{j=1}^{m} w_j*u_j(a_1) \\&=(w_{NVP}*u_{NVP}(a_1))+(w_{PP}*u_{PP}(a_1))+(w_{ARR}*u_{ARR}(a_1))+(w_{IRR}*u_{IRR}(a_1))+(w_{PI}*u_{PI}(a_1))\\&=(0.751 * 0.210)+(0.009 * 0.202)+(0.013 * 0.143)+(0.688 * 0.243)+(0.000 * 0.202)\\&=0.158+0.002+0.002+0.167+0.000\\&=0.328\end{align}$Diperoleh nilai akhir u(a1) sebesar = 0.328
Perhitungan nilai akhir untuk alternatif A2 (Agen Sembako Sejahtera) adalah sebagai berikut :
$\begin{align}u(a_2) &=\sum_{j=1}^{m} w_j*u_j(a_2) \\&=(w_{NVP}*u_{NVP}(a_2))+(w_{PP}*u_{PP}(a_2))+(w_{ARR}*u_{ARR}(a_2))+(w_{IRR}*u_{IRR}(a_2))+(w_{PI}*u_{PI}(a_2))\\&=(0.916 * 0.210)+(0.000 * 0.202)+(0.840 * 0.143)+(0.514 * 0.243)+(0.200 * 0.202)\\&=0.193+0.000+0.120+0.125+0.040\\&=0.478\end{align}$Diperoleh nilai akhir u(a2) sebesar = 0.478
Perhitungan nilai akhir untuk alternatif A3 (Travel Agen Jaya) adalah sebagai berikut :
$\begin{align}u(a_3) &=\sum_{j=1}^{m} w_j*u_j(a_3) \\&=(w_{NVP}*u_{NVP}(a_3))+(w_{PP}*u_{PP}(a_3))+(w_{ARR}*u_{ARR}(a_3))+(w_{IRR}*u_{IRR}(a_3))+(w_{PI}*u_{PI}(a_3))\\&=(0.447 * 0.210)+(0.472 * 0.202)+(0.000 * 0.143)+(1.000 * 0.243)+(1.000 * 0.202)\\&=0.094+0.095+0.000+0.243+0.202\\&=0.634\end{align}$Diperoleh nilai akhir u(a3) sebesar = 0.634
Perhitungan nilai akhir untuk alternatif A4 (Loundry Langgeng) adalah sebagai berikut :
$\begin{align}u(a_4) &=\sum_{j=1}^{m} w_j*u_j(a_4) \\&=(w_{NVP}*u_{NVP}(a_4))+(w_{PP}*u_{PP}(a_4))+(w_{ARR}*u_{ARR}(a_4))+(w_{IRR}*u_{IRR}(a_4))+(w_{PI}*u_{PI}(a_4))\\&=(1.000 * 0.210)+(0.148 * 0.202)+(1.000 * 0.143)+(0.280 * 0.243)+(0.400 * 0.202)\\&=0.210+0.030+0.143+0.068+0.081\\&=0.532\end{align}$Diperoleh nilai akhir u(a4) sebesar = 0.532
Perhitungan nilai akhir untuk alternatif A5 (Peternakan Buana) adalah sebagai berikut :
$\begin{align}u(a_5) &=\sum_{j=1}^{m} w_j*u_j(a_5) \\&=(w_{NVP}*u_{NVP}(a_5))+(w_{PP}*u_{PP}(a_5))+(w_{ARR}*u_{ARR}(a_5))+(w_{IRR}*u_{IRR}(a_5))+(w_{PI}*u_{PI}(a_5))\\&=(0.000 * 0.210)+(1.000 * 0.202)+(0.075 * 0.143)+(0.000 * 0.243)+(0.200 * 0.202)\\&=0.000+0.202+0.011+0.000+0.040\\&=0.253\end{align}$Diperoleh nilai akhir u(a5) sebesar = 0.253
Dari hasil-hasil perhitungan nilai akhir tersebut dapat disajikan dalam bentuk tabel seperti pada TABEL 6 berikut ini:
| Alternatif | Kriteria | Nilai Akhir | |||||
|---|---|---|---|---|---|---|---|
| Kode | Nama | C1 | C2 | C3 | C4 | C5 | u |
| A1 | Warung Persada | 0.158 | 0.002 | 0.002 | 0.167 | 0.000 | 0.328 |
| A2 | Agen Sembako Sejahtera | 0.193 | 0.000 | 0.120 | 0.125 | 0.040 | 0.478 |
| A3 | Travel Agen Jaya | 0.094 | 0.095 | 0.000 | 0.243 | 0.202 | 0.634 |
| A4 | Loundry Langgeng | 0.210 | 0.030 | 0.143 | 0.068 | 0.081 | 0.532 |
| A5 | Peternakan Buana | 0.000 | 0.202 | 0.011 | 0.000 | 0.040 | 0.253 |
Dari hasil perhitungan nilai akhir sebelumnya, dengan mengurutkan nilai data dari yang terbesar hingga yang terkecil diperoleh hasil sebagai berikut:
| Ranking | Alternatif | Nilai Akhir | |
|---|---|---|---|
| Kode | Nama | u | |
| 1 | A3 | Travel Agen Jaya | 0.63408855888386 |
| 2 | A4 | Loundry Langgeng | 0.5318702885945 |
| 3 | A2 | Agen Sembako Sejahtera | 0.47777820819821 |
| 4 | A1 | Warung Persada | 0.32833616863776 |
| 5 | A5 | Peternakan Buana | 0.25330188679245 |
Dari data pada tabel TABEL 7 maka dapat diputuskan bahwa usaha Travel Agen Jaya adalah yang paling layak dengan nilai akhir 0.63408855888386
Untuk melengkapi artikel ini, berikut ini akan diberikan gambaran implementasi Metode SMART dengan menggunakan PHP untuk menyelesaikan masalah pengambilan keputusan pemilihan kelayakan bisnis seperti dalam contoh kasus yang ditunjukkan sebelumnya.
Uraian diberikan secara langkah per langkah agar memudahkan pemahaman dalam pembuatan aplikasinya. Dimulai dari rancangan schema database-nya hingga langkah-langkah implemantasi proses sesuai Metode SMART yang sudah dijelaskan sebelumnya, dengan menggunakan data sesuai dengan contoh kasus yang diberikan.
Sebagai bahan pembelajaran aplikasi dengan SMART Method ini, dibuat database db_dss(dalam hal ini menggunakan MySQL/MariaDB Database server) sebagai berikut:
CREATE DATABASE IF NOT EXISTS db_dss; USE db_dss;
Awalnya membuat dulu database dengan nama db_dss jika belum ada database dengan nama tersebut, kemudian gunakan database tersebut dengan memakai sintak USE db_dss;
smt_kriteria
Data-data mengenai kriteria, bobot serta jenisnya (seperti data dalam [TABEL 2] dan [TABEL 4]) dimasukkan dalam tabel smt_kriteria sebagai berikut
-- menghapus tabel smt_kriteria jika sudah ada
DROP TABLE IF EXISTS smt_kriteria;
-- membuat tabel smt_kriteria jika tidak ada
CREATE TABLE IF NOT EXISTS smt_kriteria(
id_kriteria TINYINT(3) UNSIGNED AUTO_INCREMENT,
kriteria VARCHAR(100) NOT NULL,
bobot SMALLINT UNSIGNED,
tipe SET('max','min'),
PRIMARY KEY(id_kriteria)
)ENGINE=MyISAM;
-- memasukkan data-data kriteria
INSERT INTO smt_kriteria(id_kriteria,kriteria,bobot,tipe)
VALUES
(1,'NVP',78,'max'),
(2,'PP',75,'max'),
(3,'ARR',53,'max'),
(4,'IRR',90,'max'),
(5,'PI',75,'max');
Kriteria dengan tipe max menandakan kriteria itu adalah benefit criteria (lebih besar lebih baik) sedangkan min adalah cost criteria (lebih kecil lebih baik).
smt_alternatif
Berikutnya adalah data mengenai nama-nama alternatif yang akan diperhitungkan -- sesuai dengan contoh kasus di atas -- dengan dibuatkan satu tabel baru bernama smt_alternatif.
-- menghapus tabel smt_alternatif jika sudah ada DROP TABLE IF EXISTS smt_alternatif; -- membuat tabel smt_alternatif jika tidak ada CREATE TABLE IF NOT EXISTS smt_alternatif( id_alternatif TINYINT(3) UNSIGNED AUTO_INCREMENT, alternatif VARCHAR(100) NOT NULL, PRIMARY KEY(id_alternatif) )ENGINE=MyISAM; -- memasukkan data-data alternatif INSERT INTO smt_alternatif(id_alternatif,alternatif) VALUES (1,'Warung Persada'), (2,'Agen Sembako Sejahtera'), (3,'Travel Agen Jaya'), (4,'Loundry Langgeng'), (5,'Peternakan Buana');
Pada contoh ini, tabel smt_alternatif hanya memuat field id_alternatif dan alternatif saja; dalam implementasi praktisnya bisa ditambahkan field-field lain yang diperlukan, seperti alamat, nomor telepon dan sebagainya, karena sifatnya optional dan tidak dipakai dalam perhitungan.
smt_data
Tabel smt_data digunakan untuk menyimpan data-data awal dari tiap-tiap alternatif dan kriteria (seperti yang ada dalam Tabel 1). Tabel smt_data ini berelasi dengan tabel smt_alternatif dan tabel smt_kriteria
-- hapus tabel smt_data jika sudah ada DROP TABLE IF EXISTS smt_data; -- buat tabel smt_data jika tidak ada CREATE TABLE IF NOT EXISTS smt_data( id_data INT(11) UNSIGNED AUTO_INCREMENT, id_alternatif TINYINT(3) UNSIGNED, id_kriteria TINYINT(3) UNSIGNED, nilai FLOAT() NOT NULL, PRIMARY KEY(id_data) )ENGINE=MyISAM; -- memasukkan data sample ke tabel smt_data INSERT INTO smt_data(id_alternatif,id_kriteria,nilai) VALUES (1,1,542),(1,2,2.01),(1,3,240),(1,4,35.3),(1,5,1.3), (2,1,621),(2,2,2),(2,3,571),(2,4,30.4),(2,5,1.4), (3,1,397),(3,2,2.51),(3,3,235),(3,4,44.1),(3,5,1.8), (4,1,661),(4,2,2.16),(4,3,635),(4,4,23.8),(4,5,1.5), (5,1,184),(5,2,3.08),(5,3,265),(5,4,15.9),(5,5,1.4);
Sebelum dilakukan perhitungan-perhitungan menggunakan metoda SMART dengan menggunakan PHP, maka terlebih dahulu kita menyiapkan data yang akan diolah dengan mengambil (fetching) data dari database, dan disimpan (assign) ke dalam variabel-variabel PHP.
Data-data yang diambil tersebut meliputi data-data primer -- yaitu data kriteria dan parameternya -- serta data-data sekunder yaitu data alternatif dan data nilai
Sebelum melalukan operasi dengan data dari database, perlu dibuat script untuk koneksi ke database terlebih dahulu. Dari database yang sudah dibuat, kita bisa membuat script php untuk membuat koneksi ke database server dengan extension mysqli sebagai berikut:
<?php
//-- konfigurasi database
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'db_dss';
//-- koneksi ke database server dengan extension mysqli
$db = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
//-- hentikan program dan tampilkan pesan kesalahan jika koneksi gagal
if ($db->connect_error) {
die('Connect Error ('.$db->connect_errno.')'.$db->connect_error);
}
?>
Sesuaikan nilai-nilai $dbhost,$dbuser,$dbpass dan $dbname dengan konfigurasi database yg digunakan.
Data kriteria yang akan digunakan dalam perhitungan metode SMART ini diambil dari tabel smt_kriteria dan dimasukkan ke dalam variabel $kriteria yang berupa array multidimensi. Variabel $kriteria ini mempunyai index berupa id_kriteria dan berisi item data nama, bobot dan tipe kriteria dari masing-masing kriteria tersebut.
<?php
//-- query untuk mendapatkan semua data kriteria di tabel smt_kriteria
$sql = 'SELECT * FROM smt_kriteria';
$result = $db->query($sql);
//-- menyiapkan variable penampung berupa array
$kriteria=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
while ($row = $result->fetch_assoc()) {
$kriteria[$row['id_kriteria']]=array($row['kriteria'],$row['bobot'],$row['tipe']);
}
?>
Kode PHP berikutnya adalah merupakan script untuk mengambil nilai data alternatif yang tersimpan pada tabel smt_alternatif dan menyimpannya ke dalam variabel $alternatif
<?php
//-- query untuk mendapatkan semua data kriteria di tabel smt_alternatif
$sql = 'SELECT * FROM smt_alternatif';
$result = $db->query($sql);
//-- menyiapkan variable penampung berupa array
$alternatif=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
while($row=$result->fetch_assoc()) {
$alternatif[$row['id_alternatif']]=$row['alternatif'];
}
?>;
Data sample penilaian yang tersimpan pada tabel smt_data di-fetching dan di-assign ke variabel array dua dimensi $sample. Kode script PHP-nya adalah seperti berikut ini :
<?php
//-- query untuk mendapatkan semua data sample penilaian di tabel smt_data
$sql = 'SELECT * FROM smt_data ORDER BY id_alternatif,id_kriteria';
$result = $db->query($sql);
//-- menyiapkan variable penampung berupa array
$sample=array();
//-- melakukan iterasi pengisian array untuk tiap record data yang didapat
while($row=result->fetch_assoc()) {
//-- jika array $sample[$row['id_alternatif']] belum ada maka buat baru
//-- $row['id_alternatif'] adalah id kandidat/alternatif
if (!isset($sample[$row['id_alternatif']])) {
$sample[$row['id_alternatif']] = array();
}
$sample[$row['id_alternatif']][$row['id_kriteria']] = $row['nilai'];
}
?>
Setelah data-data yang diperlukan dalam perhitungan diambil dari database, kemudian data-data tersebut diolah sebagai berikut:
Sesuai dengan persaaan SMT-01 dilakukan perhitungan normalisasi bobot, yang dituliskan dalam kode PHP sebagai berikut:
<?php
//-- inisialisasi variabel array bobot
$bobot=array();
foreach($kriteria as $k=>$vk){
$bobot[$k]=$vk[1];
}
//-- menghitung nilai total bobot
$jml_bobot=array_sum($bobot);
//-- inisialisasi variabel array w (bobot ternormalisasi)
$w=array();
//-- normalisasi bobot
foreach($bobot as $k=>$b){
$w[$k]=$b/$jml_bobot;
}
?>
Dalam perhitungan nilai utility, maka dicari dulu nilai $c_{max}$ dan $c_{min}$-nya, yaitu nilai terbesar ($c_{max}$) dan nilai terkecil ($c_{min}$) untuk masing-masing kriteria. Sesuai dengan tipe dari kriterianya (benefit criteria atau cost criteria) kemudian dihitung nilai utilitynya berdasarkan persamaan SMT-02 atau SMT-03 dengan script PHP sebagai berikut:
<?php
//-- inisialisasi variabel array tranpose_d untuk menyimpan data tranpose dari data sample
$tranpose_d=array();
foreach($alternatif as $a=>$v){
foreach($kriteria as $k=>$v_k){
if(!isset($tranpose_d[$k]))$tranpose_d[$k]=array();
$tranpose_d[$k][$a]=$sample[$a][$k];
}
}
//-- inisialisasi variabel array c_max dan c_min
$c_max=array();
$c_min=array();
//-- mencari nilai max dan min utk tiap-tiap kriteria
foreach($kriteria as $k=>$v){
$c_max[$k]=max($tranpose_d[$k]);
$c_min[$k]=min($tranpose_d[$k]);
}
//-- inisialisasi variabel array U
$U=array();
//-- menghitung nilai utility utk masing-masing alternatif dan kriteria
foreach($kriteria as $k=>$v){
foreach($alternatif as $a=>$a_v){
if(!isset($U[$a])) $U[$a]=array();
if($kriteria[$k]['tipe']=='max'){
//-- perhitungan nilai utility untuk benefit criteria
$U[$a][$k]=($sample[$a][$k]-$c_min[$k])/($c_max[$k]-$c_min[$k]);
}else{
//-- perhitungan nilai utility untuk cost criteria
$U[$a][$k]=($c_max[$k]-$sample[$a][$k])/($c_max[$k]-$c_min[$k]);
}
}
}
?>
Dalam kode PHP tersebut, nilai $U[$a][$k] adalah nilai utility dari alternatif ke $a pada kriteria ke $k
Perhitungan nilai akhir dari tiap-tiap alternatif merupakan penjumlahan dari perkalian nilai utility dengan nilai bobot yang sudah ternormalisasi untuk masing-masing kriteria. Sesuai dengan persamaan SMT-04, dan dituliskan dalam kode PHP sebagai berikut:
<?php
//-- inisialisasi variabel array V
$V=array();
//-- melakukan iterasi utk setiap alternatif
foreach($U as $a=>$a_u){
$V[$a]=0;
//-- perhitungan nilai Preferensi V untuk tiap-tiap kriteria
foreach($a_u as $k=>$u){
$V[$a]+=$u*$w[$k];
}
}
?>
Nilai akhir/preferensi dari alternatif ke $a pada script di atas dinyatakan dengan $V[$a]
Proses perangkingan dilakukan dengan mengurutkan nilai preferensi berdasarkan besar nilainya, dari yang terbesar sampai dengan yang terkecil; dimana kandidat/alternatif dengan nilai preferensi yang terbesar adalah yang terpilih. Proses perangkingan ini dituliskan dalam PHP seperti berikut ini :
<?php
//--mengurutkan data secara descending dengan tetap mempertahankan key/index array-nya
arsort($V);
//-- mendapatkan key/index item array yang pertama
$index=key($V);
//-- menampilkan hasil akhir:
echo "Hasilnya adalah alternatif <b>{$alternatif[$index]}</b> ";
echo "dengan nilai akhir <b>{$V[$index]}</b> yang terpilih";
?>
Hasil akhir dari aplikasi PHP ini adalah berupa teks :
'Hasilnya adalah alternatif Travel Agen Jaya dengan nilai akhir 0.63408855888386 yang terpilih '.
Source code selengkapnya bisa dilihat di tautan ini source
Berikut ini beberapa kesimpulan dari implementasi Metode SMART menggunakan PHP ini