• Tidak ada hasil yang ditemukan

Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra

N/A
N/A
Protected

Academic year: 2017

Membagikan "Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra"

Copied!
35
0
0

Teks penuh

(1)

PENENTUAN LOKASI IDEAL BERDASARKAN TOTAL

JARAK TEMPUH TERPENDEK DARI BERBAGAI LOKASI

MENGGUNAKAN ALGORITME DIJKSTRA

RENDY ADITAMA

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(2)
(3)

PERNYATAAN MENGENAI SKRIPSI DAN

SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA

Dengan ini saya menyatakan bahwa skripsi berjudul Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.

Bogor, September 2014

Rendy Aditama

(4)

ABSTRAK

RENDY ADITAMA. Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra. Dibimbing oleh MUHAMMAD ASYHAR AGMALARO dan KARLINA KHIYARIN NISA.

Salah satu cara untuk memaksimalkan efisiensi waktu perjalanan ialah dengan memilih rute tempuh yang paling pendek. Suatu lokasi yang baik adalah lokasi yang memiliki jarak tempuh terpendek dengan beberapa lokasi pengaksesnya. Lokasi ini memiliki potensi untuk difungsikan sebagai fasilitas publik, komplek perumahan, dsb. Pada penelitian ini, teori graf digunakan untuk menyelesaikan masalah penentuan lokasi terbaik dengan jarak tempuh minimal dari lokasi-lokasi yang mengaksesnya. Suatu pemetaan wilayah direpresentasikan menjadi sebuah graf, dengan titik lokasi dan lokasi akses sebagai node dan variasi jalur sebagai arc. Selanjutnya akan dicari sebuah shortest path untuk setiap node

-node lokasi kandidat dari node lokasi yang mengaksesnya menggunakan algoritme Dijkstra. Penelitian ini menghasilkan aplikasi berbasis web yang menyajikan peta wilayah dan user dapat menentukan beberapa kandidat lokasi dan lokasi-lokasi aksesnya. User akan diperlihatkan satu titik lokasi terbaik dari beberapa kandidat lokasi.

Kata kunci: algoritme Dijkstra, graf, pemetaan wilayah, rute terpendek

ABSTRACT

RENDY ADITAMA. Ideal Location Determination Based on Shortest Path from Various Locations Using Dijkstra’s Algorithm. Supervised by MUHAMMAD ASYHAR AGMALARO and KARLINA KHIYARIN NISA.

(5)

PENENTUAN LOKASI IDEAL BERDASARKAN TOTAL

JARAK TEMPUH TERPENDEK DARI BERBAGAI LOKASI

MENGGUNAKAN ALGORITME DIJKSTRA

RENDY ADITAMA

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

BOGOR 2014 Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer

pada

(6)
(7)

Judul Skripsi : Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra

Nama : Rendy Aditama

NIM : G64100009

Disetujui oleh

Muhammad Asyhar Agmalaro, SSi MKom Karlina Khiyarin Nisa, SKomp MT Pembimbing Pembimbing

Diketahui oleh

Dr Ir Agus Buono, MSi MKom Ketua Departemen

(8)

PRAKATA

Puji dan syukur kehadirat Allah subhanahu wa ta’ala atas segala karunia -Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian yang dilaksanakan sejak bulan November 2013 ini ialah lokasi ideal, dengan judul Penentuan Lokasi Ideal Berdasarkan Total Jarak Tempuh Terpendek dari Berbagai Lokasi Menggunakan Algoritme Dijkstra.

Terima kasih terbesar penulis ucapkan kepada ibunda penulis Sukaisih yang atas kasih sayang, doa, dan dukungannya sehingga penulis dapat menyelesaikan pendidiikan di Institut Pertanian Bogor. Juga terima kasih penulis sampaikan kepada ayahanda Rustendi, adik-adik, serta seluruh keluarga atas segala doa dan dukungannya. Ungkapan terima kasih sebesarnya juga penulis sampaikan kepada Bapak Muhammad Asyar Agmalaro, SSi Mkom dan Ibu Karlina Khiyarin Nisa, SKomp MT selaku pembimbing yang telah banyak membantu dan mendukung penulis dalam pengerjaan karya ilmiah ini. Terima kasih juga kepada mahasiswa Departemen Ilmu Komputer angkatan 47 yang telah memberikan semangat dan kebersamaannya selama tiga tahun ini. Semoga karya ilmiah ini bermanfaat.

Bogor, September 2014

(9)

DAFTAR ISI

DAFTAR ISI vii

DAFTAR TABEL viii

DAFTAR GAMBAR viii

DAFTAR LAMPIRAN viii

PENDAHULUAN 1

Latar Belakang 1

Perumusan Masalah 1

Tujuan Penelitian 2

Manfaat Penelitian 2

Ruang Lingkup Penelitian 2

METODE PENELITIAN 2

Penentuan Wilayah Penelitian 3

Penentuan Data dan Sumber Data 3

Pengumpulan Data 4

Pemodelan Graf dari Data 4

Implementasi Fungsi Dijkstra dan Fungsi Lokasi Terbaik 4

Implementasi Sistem 6

Evaluasi Hasil 6

Lingkungan Pengembangan 6

HASIL DAN PEMBAHASAN 8

Penentuan Wilayah Penelitian dan Pengumpulan Data 8

Pemodelan Graf dari Data 10

Implementasi Fungsi lokasi terbaik dan Fungsi Algoritme Dijkstra 11

Implementasi Sistem 12

Evaluasi Hasil 14

SIMPULAN 16

SARAN 16

DAFTAR PUSTAKA 17

(10)

DAFTAR TABEL

1 Lokasi akses yang dijadikan input untuk evaluasi hasil 15 2 Lokasi kandidat yang dijadikan input untuk evaluasi hasil 15 3 Perbandingan jarak tempuh setiap lokasi dari Google Maps dan keluaran

sistem 15

DAFTAR GAMBAR

1 Skema metode penelitian 3

2 Diagram alir langkah-langkah yang dijalankan fungsi lokasi terbaik 7

3 Peta wilayah penelitian 8

4 Titik lokasi yang terpilih sebagai node 9

5 Penggambaran graf yang merepresentasikan wilayah penelitian 11

6 Tampilan antar muka sistem 13

7 Sistem menerima input lokasi kandidat dan lokasi akses 13 8 Sistem menampilkan hasil berupa lokasi terbaik dari lokasi kandidat 13 9 Sistem menampilkan perhitungan jarak tempuh setiap lokasi kandidat 14

DAFTAR LAMPIRAN

1 Daftar node yang digunakan 18

2 Lanjutan 19

3 Lanjutan 20

4 Daftar arc yang digunakan 21

5 Lanjutan 22

(11)

PENDAHULUAN

Latar Belakang

Perkembangan penduduk yang pesat menyebabkan area pembangunan permukiman untuk hunian maupun fasilitas umum semakin bertambah serta menyebar luas. Hal ini berdampak pada semakin banyaknya pembangunan yang dilakukan baik perumahan, pertokoan, perkantoran, atau pembangunan fasilitas umum lainnya. Akan tetapi, pembangunan yang bertambah seringkali tidak memperhatikan jarak tempuh titik lokasi ke berbagai lokasi akses. Contohnya pembangunan fasilitas umum seperti rumah sakit yang sangat jauh dari area lokasi permukiman. Akibatnya fasilitas umum tersebut tidak ramai dikunjungi dan digunakan, karena penduduik di area permukiman akan mencari akses ke fasilitas umum yang lebih dekat jarak tempuhnya. Hal tersebut memperlihatkan titik lokasi pembangunan yang ideal dipengaruhi oleh salah satunya ialah pilihan jalur dengan jarak tempuh terpendek dari berbagai lokasi aksesnya. Sementara itu.pemilihan jalur dengan jarak tempuh terpendek juga menjadi salah satu tuntutan dalam memaksimalkan efisiensi waktu tempuh sehingga dalam memilih suatu titik lokasi, efisiensi waktu menjadi salah satu kriteria yang digunakan. Lokasi ditentukan berdasarkan seberapa pendek jarak tempuh yang dihasilkan untuk mencapai lokasi tersebut dari titik-titik lokasi yang mengaksesnya. Banyaknya pilihan jalur dengan variasi jarak tempuh ke berbagai lokasi akses, membuat sulitnya penentuan titik lokasi pembangunan sehingga menjadi suatu tantangan tersendiri. Kesalahan dalam pemilihan lokasi berakibat kepada tidak efektifnya pembangunan yang dilakukan, sehingga penempatan lokasi pembangunan yang ideal dirasakan perlu untuk mengatasinya.

Graf merupakan representasi dari sekumpulan objek yang terhubung melalui

link (Chartgrand dan Oellerman 1997). Graf disusun dari dua objek yaitu node

yang merepresentasikan suatu objek, dan arc yang merepresentasikan jalur yang menghubungkan dua buah objek. Graf umumnya diaplikasikan untuk memodelkan suatu wilayah dengan node sebagai lokasi dan arc sebagai jalur yang menghubungkan dua lokasi, seperti penelitian yang dilakukan Utari (2013) yang memodelkan rute dari Dramaga ke Baranangsiang, penelitian yang dilakukan Rifa’i (2010) yang memodelkan rute operasi bus Trans Jogja, juga penelitian yang dilakukan Fauzi (2011) yang memodelkan jalan raya Blok M.

Dari graf yang terbentuk dapat diaplikasikan algoritme graf untuk memecahkan suatu masalah pencariah jalur (path) terpendek. Algoritme graf merupakan algoritme yang diaplikasikan pada suatu graf untuk mencapai suatu tujuan tertentu (Cormen et al. 2009). Seperti pada penelitian yang dilakukan Utari (2013), dari graf yang terbentuk diaplikasikan algoritme Dijkstra untuk mencari rutedengan jarak tempuh terpendek dari dua node.

Perumusan Masalah

(12)

2

direpresentasikan ke dalam sebuah graf, dengan objek yang saling terhubung dinamakan node dan jalur yang menghubungkannya dinamakan arc. Penelitian ini memodelkan wilayah menjadi sebuah graf, dengan node berperan sebagai pilihan lokasi titik pembangunan, dan arc berperan sebagai calon jalur terpendek yang menghubungkan antar lokasi. Dari graf yang terbentuk, dapat ditetapkan node-node sebagai lokasi kandidat yaitu lokasi dipertimbangkan sebagai tempat pembangunan, dan lokasi akses yaitu lokasi yang menjadi titik awal untuk mengakses lokasi pembangunan. Selanjutnya algorime Dijkstra

diimplementasikan untuk menghitung total panjang path dari lokasi-lokasi akses ke lokasi-lokasi kandidat, sehingga dapat ditentukan lokasi yang terbaik dari lokasi-lokasi kandidat berdasarkan path yang terpendek.

Tujuan Penelitian

Tujuan dari penelitian ini adalah untuk memodelkan suatu wilayah menjadi sebuah graf terhubung yang kemudian dapat diterapkan algorime graf. Dari graf yang telah dimodelkan digunakan algoritme Dijkstra untuk implementasi fungsi yang dapat menentukan lokasi terbaik berdasarkan total jarak tempuh terpendek dari berbagai lokasi lain.

Manfaat Penelitian

Hasil penelitian ini diharapkan dapat menjadi solusi untuk menentukan lokasi dengan total jarak tempuh terpendek dari berbagai lokasi lain. Aplikasi berbasis web yang merupakan hasil penelitian ini dapat digunakan di berbagai hal, salah satunya adalah memilih tempat untuk mendirikan bangunan yang mengharuskan terletak pada titik strategis.

Ruang Lingkup Penelitian

Ruang lingkup pada penelitian ini adalah:

1 Wilayah penelitian yang dipilih pada penelitian ini adalah wilayah yang mencakup kawasan kampus IPB Dramaga, kawasan CIFOR, kawasan Balumbang Jaya.

2 Data yang digunakan pada penelitian adalah data spatial yang berupa titik-titik lokasi yang terpilih sebagai node, dan jalur yang menghubungkan antar titiksebagai arc.

3 Sumber data pada penelitian ini adalah data yang merupakan hasil studi pustaka dari layanan Google Maps.

METODE

(13)

3

Gambar 1 Skema metode penelitian

Penentuan Wilayah Penelitian

Wilayah penelitian merupakan area yang dijadikan untuk mengimplementasikan algoritme Dijkstra. Wilayah penelitian dipilih dengan pertimbangan seberapa besar hasil penelitian ini dapat dimanfaatkan. Dengan mempertimbangkan banyaknya area kosong dan perkembangan penduduk yang pesat, maka wilayah penelitian dipilih di sekitar kawasan kampus IPB Dramaga, kawasan CIFOR, kawasan Balumbang Jaya, dan kawasan Bubulak. Kedua pertimbangan tersebut berpengaruh pada kemungkinan banyaknya pertambahan bangunan, sehingga dalam menentukan area yang tepat dapat memanfaatkan hasil penelitian ini.

Seluruh lokasi dan jalur yang menghubungkan antar lokasi akan dibangun menjadi sebuah connected graph. Connected graph adalah graf yang memiliki sembarang titik yang dapat terhubung dengan titik yang lain. Pemilihan titik sebagai node didasari oleh titik tertentu yang mesti dilalui ketika akan mengakses suatu wilayah, sehingga satu node mewakili range tertentu di suatu area.

Penentuan Data dan Sumber Data

(14)

4

pada penelitian ini didapat dari Google Maps, data berupa titik lokasi dan jalur yang menghubungkan antar titik yang terdapat di wilayah penelitian yang disediakan Google Maps dalam bentuk peta.

Pengumpulan Data

Pengumpulan data pada penelitian ini melalui studi pustaka pada data-data yang disediakan Google Maps. Data tersebut merupakan hasil pengukuran langsung dan hasil pengukuran dari satelit yang keduanya memiliki tingkat akurasi yang tinggi. Data berupa lokasi dan jalur yang menghubungkan antar lokasi.

Data yang diambil berupa lokasi, jalur yang menghubungkan antar lokasi, dan panjang setiap jalur yang menghubungkan satu lokasi ke lokasi lain. Data panjang setiap jalur akan dijadikan sebagai bobot pada arc dengan menginisialisasi nilai panjang ke variabel arc di graph. Pengumpulan data tidak memperhitungkan waktu tempuh yang diperlukan untuk menempuh satu jalur.

Pemodelan Graf

Pada tahap pemodelan graf, data yang telah terkumpul diberikan beberapa perlakuan sehingga membentuk sebuah graf yang dibutuhkan di penelitian ini. Beberapa perlakuan tersebut adalah sebagai berikut :

1 Menyatukan setiap node dari masing-masing rute yang telah dikumpulkan menjadi sebuah connected graph (graf terhubung).

2 Gunakan arah perjalanan pada jalur sebagai aliran (flow) sehingga membentuk sebuah directed graph dari connected graph yang ada. Untuk jalur yang dapat dilalui dari dua arah perjalanan, setiap jalur direpresentasikan oleh dua arc berbobot sama dengan node awal dan node

akhir yang berkebalikan.

3 Data berupa jarak tempuh yang didapatkan pada tahap pengumpulan data dijadikan sebagai bobot jarak. Bobot-bobot tersebut diimplementasikan sebagai aliran beban pada directed graph sehingga terbentuk weighted graph (graf berbobot).

Dari hasil perlakuan di atas, terbentuk sebuah weighted graph (graf berbobot). Weighted graph adalah graf yang memiliki bobot atau biaya di setiap

arc yang ada (Cong et al. 1998). Bobot yang digunakan pada penelitian ini adalah bobot jarak, yaitu sebuah nilai panjang suatu arc yang merupakan jarak tempuh yang dibutuhkan untuk berpindah dari satu node ke node lain yang terhubung secara langsung. Satuan yang digunakan pada bobot jarak di penelitian ini adalah meter.

Implementasi Fungsi Dijkstra dan Fungsi Lokasi Terbaik

Fungsi utama yang diimplementasikan pada penelitian ini adalah fungsi penentuan lokasi terbaik. Agar dapat menentukan node dengan total jarak tempuh terpendek dibutuhkan fungsi yang menerima masukan lokasi akses sebagai node

(15)

5

path dari satu node ke node lain dengan mengambil arc dengan bobot terkecil pada setiap perpindahan node (Cormen et al. 2009).

Algoritme Dijkstra merupakan salah satu varian dari algoritme Greedy, yaitu salah satu algoritme yang popular dalam pemecahan permasalahan yang terkait dengan optimasi. Algoritme Greedy sendiri memiliki prinsip mengambil apa saja yang bisa diambil saat ini dan keputusan yang telah diambil pada setiap langkah tidak akan bisa diulang kembali. Intinya algoritme Greedy berupaya untuk mengambil pilihan nilai optimum lokal pada setiap langkah dan berharap agar nilai optimum lokal ini dapat membantu mendapatkan nilai optimum global (Cormen et al. 2009). Penggunaan strategi Greedy pada algoritme Dijkstra terjadi pada setiap langkah, yaitu dengan cara memilih biaya paling minimum dari sebuah

node awal atau node berlabel permanen ke node berlabel sementara.

Ide dasar dari algoritma Dijkstra adalah fakta jika R adalah sebuah node

yang termasuk pada path terpendek dari node P menuju node Q, fakta tersebut juga berlaku untuk path terpendek dari node P menuju node R, terdapat sebuah

node yang termasuk pada path terpendek dari node P menuju node R, fakta tersebut berlanjut sampai node yang terhubung langsung dengan node P. Sehingga solusi untuk pencarian path terpendek dari node P menuju node Q adalah menyambungkan node P dengan node-node lain menggunakan path yang terpendek dengan tujuan menambah jangkauan sampai terjangkaunya node Q (Dijkstra 1959). Fungsi algoritme Dijkstra dalam bentuk pseducode adalah :

function Dijkstra(Graph, source):

Dengan memanfaatkan fungsi algoritme Dijkstra, fungsi penentuan lokasi terbaik yang akan dikembangkan untuk diterapkan pada penelitian ini memiliki langkah-langkah sebagai berikut :

Tahap 1 : Menentukan node-node yang menjadi kandidat lokasi ideal, setiap node

(16)

6

Tahap 2 : Menentukan node-node yang menjadi titik akses, setiap node ini diinisialisasi sebagai node awal.

Tahap 3 : Dengan algoritme Dijkstra dihitung jarak tempuh setiap node awal menuju setiap node akhir satu per satu.

Tahap 4 : Nilai jarak tempuh dijumlahkan berdasarkan node akhir. Sehingga setiap node akhir memiliki total jarak tempuh dari semua node awal. Tahap 5 : Dari semua kandidat lokasi diurutkan dan diambil yang paling kecil.

Lokasi yang diambil merupakan lokasi terpilih dengan total jarak tempuh minimum.

Untuk lebih mudahnya langkah-langkah yang dijalankan fungsi lokasi terbaik ditampilkan pada Gambar 2.

Implementasi Sistem

Pada tahap ini dilakukan implementasi hasil penelitian yang berupa graf dan fungsi lokasi terbaik. Tujuan dari tahapan ini adalah menghasilkan sistem yang dapat digunakan untuk memanfaatkan hasil penelitian. Implementasi sistem dilakukan dalam lingkungan pengembangan aplikasi menggunakan bahasa pemrograman PHP, dan Javascript, libray penyedia peta Open Street Map, dan web server LAMP.

Sistem yang dikembangkan berbentuk aplikasi web yang menyediakan peta wilayah penelitian dan fungsi untuk menentukan lokasi terbaik. Pengguna aplikasi dapat menentukan lokasi kandidat dan lokasi akses pada peta, kemudian sistem akan menentukan lokasi terbaik dari kandidat-kandidat lokasi.

Evaluasi Hasil

Evaluasi hasil dilakukan untuk mengevaluasi hasil dari penelitian yang telah dilakukan. Tujuan dari tahap ini adalah memastikan fungsi lokasi terbaik yang telah dikerjakan berjalan dengan benar dan dapat diterapkan di graf yang ada dan dapat menentukan titik lokasi terbaik berdasarkan jarak tempuh terpendek dari berbagai lokasi lain. Langkah yang dikerjakan pada tahapan ini adalah memberi masukan pada sistem, dan memeriksa keluaran yang dihasilkan menggunakan perhitungan manual.

Lingkungan Pengembangan

Spesifikasi perangkat keras dan perangkat lunak yang digunakan dalam penelitian ini adalah sebagai berikut :

1 Perangkat keras berupa komputer personal dengan spesifikasi

 Prosesor Intel Core i3 2.24 GHz, dan

 Memori RAM 6 GB. 2 Perangkat lunak

 Sistem Operasi Linux Fedora 17 64bit,

 Web Server LAMP,

 Bahasa Pemrograman PHP, Javascript, Ajax, dan

(17)

7

(18)

8

HASIL DAN PEMBAHASAN

Penentuan Wilayah Penelitian dan Pengumpulan Data

Wilayah penelitian merupakan daerah yang berada di sekisar kawasan kampus IPB Dramaga, kawasan CIFOR, kawasan Balumbang Jaya, dan kawasan Bubulak. Peta wilayah penelitian yang akan dijadikan graf ditampilkan pada Gambar 3.

Wilayah tersebut dipilih menjadi wilayah penelitian dengan tujuan untuk memaksimalkan manfaat yang ingin dicapai pada penelitian ini, dengan masih banyaknya lahan kosong dan belum terdapat banyak bangunan. Pada wilayah ini juga pertambahan bangunan semakin marak dan tersebar di berbagai bagian wilayah, sehingga butuh perencanaan yang baik khususnya dalam pembangunan fasilitas umum agar fungsi dari bangunan dapat termaksimalkan.

Data penelitian dikumpulkan dari sebuah peta wilayah dengan pemetaan sistem koordinat geografis. Sistem koordinat geografis merupakan sistem koordinat yang menyediakan seluruh lokasi di permukaan bumi, biasanya berupa kumpulan angka atau abjad (Svennerberg 2010). Pada penelitian ini koordinat yang dipakai berupa latlng yaitu pasangan latitude dan longitude. Latitude adalah titik permukaan bumi diantara garis khatulistiwa dan garis lurus yang melintasi titik-titik tersebut, sedangkan longtitude adalah titik permukaan bumi berupa sudut timur atau barat dari suatu meridian ke meridian lain (Ibid 2010). Untuk lebih mudahnya, permukaan bumi dipetakan dengan koordinat x dan y, dengan x

merupakan latitude dan y merupakan longitude. Wilayah pada penelitian ini mencakup wilayah koordinat latlng dari (-6.56738 , 106.7453) sampai (-6.57042 , 106.75097).

Data yang diperlukan untuk membangun sebuah graf adalah node dan arc. Dengan node yang merupakan lokasi dan arc yang merupakan jalur penghubung antar lokasi. Data yang dikumpulkan dari wilayah penelitian adalah titik-titik lokasi tertentu yang berperan sebagai node, dan jalur penghubung antartitik terpilih yang berperan sebagai arc.

(19)

9 Pemilihan titik lokasi yang akan menjadi node adalah dengan membagi area dalam wilayah berdasarkan jalur yang diperlukan untuk mengakses suatu range

tersebut. Titik yang merepresentasikan node adalah titik utama di setiap area yang merupakan titik yang harus diakses ketika mengakses setiap lokasi di area tersebut. Data node yang dikumpulkan berupa koordinat latitude dan longitude

setiap range area. Seluruh node yang terpilih ditampilkan pada Gambar 4 dengan lokasi setiap node dapat dilihat pada Lampiran 1.

Gambar 4 Titik-titik lokasi yang terpilih sebagai node

Pengumpulan arc dilakukan dengan memperhatikan jalur yang menghubungkan setiap node. Arc dipilih berdasarkan setiap jalur yang menghubungkan dua node secara langsung. Setiap arc memiliki bobot yang merupakan biaya yang diperlukan dalam perpindahan dari satu node ke node lain yang dihubungkan dengan arc tersebut. Pada penelitian ini nilai yang menjadi bobot pada arc adalah panjang jalur yang menghubungkan antar lokasi, agar memenuhi tujuan penelitian yaitu meminimalkan jarak tempuh. Jarak tempuh yang seminimal mungkin diperlukan untuk mempermurah biaya perpindahan dalam mengakses fasilitas agar fungsionalitas dari fasilitas dapat maksimal (Indaryana 2013). Sehingga bobot dari arc mengabaikan aspek kepadatan lalu lintas ataupun waktu tempuh dari setiap jalur. Nilai bobot arc merupakan jarak tempuh dari dua koordinat latlng titik lokasi yang terhubung langsung. Arc yang terkumpul pada penelitian ini dapat dilihat pada Lampiran 2.

Studi pustaka yang digunakan berupa data-data yang disediakan pada layanan Google Maps. Pengumpulan node dilakukan dengan pemilihan koordinat

(20)

10

Pemodelan Graf Dari Data

Data yang telah dikumpulkan berupa titik-titik lokasi yang akan dijadikan

node dan jalur yang menghubungkan antar lokasi yang akan dijadikan arc. Data graf disimpan dalam bentuk script PHP yang merupakan bahasa pemrograman yang dipakai untuk pengimplementasian fungsi Dijkstra dan fungsi lokasi terbaik, sehingga graf yang dihasilkan dapat digunakan untuk fungsi yang akan diimplementasikan. Dalam tahap implementasi graf dan fungsi-fungsi, digunakan

library PHP-Dijkstra (Lawrie 2013) yang merupakan library graf dan fungsi Dijkstra dalam bahasa PHP.

Untuk membangun graf digunakan class graf yang telah disediakan di

library. Langkah pertama yang dilakukan adalah mendeklarasikan class graf yang menjadi sebuah objek, kemudian mendeklarasikan setiap node dan arc ke class

graf tersebut. Kode program untuk membangun graf adalah : $g = new graph();

$g->addedge(“N0001”, “N0002”, 100);

Kode di atas mendeklarasikan graf ke sebuah variabel, kemudian graf yang digunakan disimpan di variabel $g tersebut. Langkah selanjutnya adalah mendeklarasikan node yang berjumlah sebanyak 102, untuk mempermudah pemrosesan node diinisialisasi dengan nama N0001 sampai N0102. Pendeklarasian node dijalankan bersama pendeklarasian arc menggunakan fungsi

addedge(). Kode di atas mendeklarasikan sebuah arc dengan node awal N0001 dan node akhir N0002, dengan bobot 100. Dari setiap arc yang dideklarasikan, fungsi addedge() juga mendeklarasikan kedua node. Dari setiap jalur yang dijadikan arc dideklarasikan dua kali dengan node awal, dan node akhir yang berkebalikan, dan dengan bobot arc yang sama.

Dari tahapan ini dihasilkan sebuah graf yang memiliki node sebanyak 102 buah dan arc sebanyak 105 buah. Graf termasuk connected graph dikarenakan semua node-node terhubung pada graf, tanpa ada satu node ataupun sub-graf yang terisolasi. Graf termasuk weighted graph dikarenakan semua arc memiliki bobot yang merupakan representasi jarak untuk melakukan perpindahan pada node-node

(21)

11

Gambar 5 Penggambaran graf yang merepresentasikan wilayah penelitian Implementasi Fungsi Dijkstra dan Fungsi Lokasi Terbaik

Graf yang telah dibuat sebelumnya diimplementasikan menggunakan algoritme Dijkstra dengan lokasi kandidat dan lokasi akses menjadi masukan, dengan lokasi kandidat sebagai node akhir dan lokasi akses sebagai node awal. Keluaran dari fungsi adalah lokasi terbaik dari lokasi kandidat berdasarkan total jarak tempuh terpendek dari seluruh lokasi akses.

Untuk mendapatkan keluaran yang sesuai diperlukan fungsi untuk menjalankan beberapa tahapan. Tahapan pertama adalah membaca input yang berupa lokasi-lokasi kandidat dan lokasi-lokasi akses. Selanjutnya dari dari input

tersebut dihitung jarak tempuh semua pasangan lokasi kandidat dan lokasi akses, dengan lokasi akses sebagai node awal dan lokasi kandidat sebagai node akhir, nilai jarak tempuh tersebut diinisialisasi ke setiap lokasi akses. Pada tahap ini fungsi yang digunakan untuk menghitung jarak tempuh adalah fungsi yang mengimplementasikan algoritme Dijkstra. Tahapan selanjutnya setelah perhitungan jarak tempuh selesai adalah setiap nilai jarak tempuh tersebut diakumulasikan berdasarkan lokasi akses, kemudian nilai-nilai hasil akumulasi yang sudah didapat diinisialisasikan ke setiap lokasi akses. Sampai tahap ini setiap lokasi akses memiliki nilai yang merupakan total jarak tempuh sehingga lokasi-lokasi kandidat dapat dipilih dengan mengambil lokasi-lokasi yang memiliki nilai jarak tempuh paling minimum.

Pada tahap ini proses komputasi dilakukan dengan menggunakan bahasa pemrograman PHP. Langkah pertama yang dilakukan pada tahap ini adalah dengan mempersiapkan fungsi algoritma Dijkstra yang dapat menentukan jarak tempuhantar node. Dari library PHP-Dijkstra yang digunakan pada penelitian ini terdapat dua fungsi yang mengimplementasikan algoritme Dijkstra yaitu fungsi

path_from() dan path_to(). Fungsi path_form() memberikan hasil inisialisasi biaya rute dari suatu node ke semua node lain di graf. Fungsi path_to() menjalankan fungsi untuk menelusuri path dari suatu node ke node lain, fungsi path_to() hanya bisa digunakan jika node sudah diinisialisasi dengan fungsi path_form(). Contoh penggunaan fungsi path_from() adalah:

(22)

12

Keluaran dari fungsi adalah variabel array $distance yang berupa biaya dari semua node ke node N0001, dan variabel array $prev yang berupa node terakhir pada rute dari setiap node. Contoh fungsi path_to() adalah:

$path = $g->paths_to($prev, “N0002”);

Keluaran fungsi berupa variabel array $path yang merupakan node-node

rute dari node awal ke node akhir secara berurutan. Variabel $prev yang dijadikan

input bersama dengan node merupakan output dari pemanggilan fungsi path_from

sebelumnya.

Fungsi Dijkstra yang tersedia telah memenuhi kebutuhan untuk membangun fungsi lokasi terbaik. Fungsi lokasi terbaik membutuhkan jarak tempuh dari semua pasangan lokasi kandidat dan lokasi akses, dengan lokasi kandidat sebagai node akhir dan lokasi akses sebagai node awal. Fungsi lokasi terbaik dibangun dengan memanfaatkan fungsi path_from(), dengan menggunakan perintah perulangan lokasi kandidat dialokasikan ke fungsi path_form() sehingga didapatkan array yang berisi jarak tempuh ke semua node dari setiap node akses. Setelah semua lokasi akses memiliki nilai jarak tempuh ke semua lokasi, fungsi selanjutkan mengakumulasikan nilai jarak tempuh berdasarkan node lokasi kandidat. Sampai tahap ini dihasilkan variabel array yang menyimpan total jarak tempuh dari node lokasi akses dengan berindeks pada node lokasi kandidat. Dari variabel lokasi kandidat tersebut diambil yang paling minimum sebagai lokasi terbaik dari lokasi-lokasi kandidat berdasarkan jarak tempuh terpendek dari berbagai lokasi.

Pada tahap ini berhasil mengembangkan fungsi lokasi terbaik untuk menghitung nilai jarak tempuh dari semua node lokasi akses ke setiap node lokasi kandidat. Untuk menghitung jarak tempuh antar lokasi digunakan fungsi yang menerapkan algoritme Dijkstra. Fungsi yang sudah diimplementasikan selanjutnya diimplementasikan ke sistem agar dapat digunakan dalam menentukan lokasi terbaik berdasarkan jarak tempuh terpendek dari lokasi-lokasi lain.

Implementasi Sistem

(23)

13

Gambar 6 Tampilan antar muka sistem

Gambar 7 Sistem menerima input lokasi kandidat dan lokasi akses

(24)

14

Gambar 9 Sistem menampilkan perhitungan jarak tempuh setiap lokasi kandidat Evaluasi Hasil

(25)

15

Tabel 1 Lokasi akses yang dijadikan input untuk evaluasi hasil

Lokasi Akses Koordinat Posisi Node di graf

Lokasi akses-1 (-6.57017,106.75269) Jalan Bubulak

No.05 N0084

Lokasi akses-2 (-6.56962,106.75199) Jalan Bubulak

No.10 N0092

Lokasi akses-3 (-6.5973,106.74937) Jalan Gardu Raya

No.15-44 N0098

Lokasi akses-4 (-6.57043,106.75144) Jalan Gardu

Dalam No.60 N0023

Lokasi akses-5 (-6.57034,106.74854) Jalan Bubulak

No.18-23 N0088

Lokasi akses-6 (-6.57034, 106.74854) Jalan Gardu

Dalam No.32 N0020

Tabel 2 Lokasi kandidat yang dijadikan input untuk evaluasi hasil

Lokasi kandidat Koordinat Posisi Node di graf

Lokasi kandidat-1 (-6.57044, 106.74793) Jalan Gardu

Dalam No.32-33 N0019 Lokasi kandidat-2 (-6.57044, 106.74793) Jalan Bubulak

No.1 N0091

Lokasi kandidat-3 (-6.57044, 106.74793) Jalan Bubulak

Gardu No.02 N0101

(26)

16

Dari tahap evaluasi menghasilkan output dari sistem merupakan lokasi dengan total jarak tempuh terpendek setelah dihitung melalui Google Maps. Dari tahap evaluasi dapat dilihat jika fungsi yang sudah diimplementasikan sudah mengimplementasikan algoritme Dijkstra dengan benar. Perbedaan hasil jarak tempuh pada sistem dan Google Maps dapat terjadi dikarenakan perbedaan graf yang digunakan. Fungsi lokasi terbaik juga berhasil menentukan titik lokasi dengan jarak tempuh terpendek setelah sebelumnya dihitung nilai total jarak tempuh setiap pasangan lokasi kandidat dan lokasi akses.

SIMPULAN DAN SARAN

Simpulan

Penelitian ini berhasil menengimplementasikan algoritma Dijkstra untuk menentukan titik terbaik berdasarkan jarak tempuh terpendek dari berbagai titik lain. Hasil penelitian diimplementasikan menjadi sebuah sistem berbasis web yang dapat digunakan untuk menentukan lokasi yang menekan biaya perjalanan dengan memilih lokasi ideal dengan jarak tempuh terpendek dari lokasi-lokasi lain yang mengaksesnya.

Saran

Penelitian ini dapat dikembangkan lebih lanjut dengan:

1 Menerapkan algoritma shortest path lain dalam menerapkan fungsi pencarian titik lokasi terbaik, dan dibandingkan efektifitas dan kinerjanya dengan penelitian ini.

(27)

17

DAFTAR PUSTAKA

Cong J, Kahng AB, Leung KS. 1998. Efficient algorithms for the minimum shortest path Steiner Arborescence problem with applications to VLSI physical design. IEEE Transactions On Computer-Aided Design Of Integrated Circuits And Systems. 17(1):24-39.

Cormen TH, Leiserson CE, Rivest RL, Stein C. 2009. Introduction to Algorithms.

Ed ke-3. Massachusetts (US): The MIT Press.

Chartgrand G, Oellermann OR. 1997. Applied and Algorithmic Graph Theory. New York

(US): McGraw-Hill Inc.

Dijkstra EW. 1959. A note on two problems in connexion with graphs.

Numerische Mathematik.1 : 269–271.

Fauzi I. 2011. Penggunaan algoritma Dijkstra dalam pencarian rute tercepat dan

rute terpendek (studi kasus pada jalan raya antara wilayah Blok M dan Kota) [skripsi]. Jakarta(ID): Universitas Islam Negeri Sunan Kalijaga. Indaryana D. 2013. Perancangan Tata Letak Fasilitas. Blog [internet]. [diunduh

2014 Mei 21]. Tersedia pada :

http://dodi84indaryana.blogspot.com/2012/09/perancangan-tata-letak-fasilitas.html

Lawrie D. 2013. Github [internet]. [diunduh 2014 April 24]. Tersedia pada : http://github.com/fluxsauce/OpenSpree/tree/master/contrib/kay-PHP-Dijkstra

Rifa’i H. 2009. Aplikasi graf terhadap sistem transportasi darat bus patas trans Jogja di Daerah Istimewa Yogyakarta (studi kasus : bus patas trans Jogja trayek 3A) [skripsi]. Yogyakarta(ID): Universitas Islam Negeri Syarif Hidayatullah Jakarta.

Svennerberg G. 2010. Beginning Google Maps API 3. New York (US): Apress. Utari RS. 2013. Penentuan jalur tercepat dan terpendek berdasarkan kondisi lalu

(28)

18

Lampiran 1 Daftar node yang digunakan

Nama Node Posisi Koordinat

N0001 Jl Batu Hulung No 1 -6.56825, 106.74639

N0002 Jl Batu Hulung No 47 -6.56904, 106.74681

N0003 Jalan Raya Dramaga No.18 -6.56942, 106.74606

N0004 Jalan Raya Dramaga No.18 -6.56957, 106.74692

N0005 Jalan Batu Hulung No.8 -6.57014, 106.74701

N0006 Jalan Gardu Dalam No.25 -6.57081, 106.74703

N0007 Jalan Gardu Dalam No.41 , -6.57057, 106.74767

N0008 Jalan Gardu Dalam No.39 -6.56967, 106.74767

N0009 Jalan Batu Hulung No.17 -6.57148, 106.74703

N0010 Jalan Batu Hulung 1 No.20 -6.57207, 106.74709

N0011 Jalan Raya Dramaga No.11 -6.57271, 106.74721

N0012 Jalan Raya Dramaga No.28 -6.57247, 106.74835

N0013 Jalan Gugah Sari No.37 -6.57297, 106.74845

N0014 Jalan Raya Dramaga No.28 -6.57187, 106.74821

N0015 Jalan Raya Dramaga No.28 -6.57156, 106.74817

N0016 Jalan Batu Hulung 1 No.20 -6.57157, 106.74766

N0017 Jalan Gardu Dalam No.6 -6.57137, 106.74765

N0018 Jalan Gardu Dalam No.32 -6.57106, 106.74808

N0019 Jalan Gardu Dalam No.32-33 -6.57106, 106.74808

N0020 Jalan Gardu Dalam No.32 -6.57109, 106.74808

N0021 Jalan Gardu Dalam No.47 -6.57012, 106.74873

N0022 Jalan Gardu Dalam No.47 -6.56992, 106.74909

N0023 Jalan Gardu Dalam No.60 -6.56994, 106.74932

N0024 Jalan Gardu Raya No.43 -6.57018, 106.74948

N0025 Jalan Gardu Raya No.37 -6.57011, 106.74967

N0026 Jalan Gardu Raya No.45 -6.57051, 106.74948

N0027 Jalan Gardu Raya No.15 -6.57113, 106.74989

N0028 Jalan Gardu Raya No.15 -6.57135, 106.74999

N0029 Jalan Gardu Raya No.12 -6.57153, 106.74969

N0030 Jalan Raya Dramaga No.21, -6.57226, 106.74924

N0031 Jalan Raya Dramaga No.6 -6.57238, 106.74968

N0032 Jalan Raya Leuwiliang-Bogor -6.57185, 106.75042

N0033 Jalan Raya Dramaga No.20 -6.57278, 106.75027

N0034 Jalan Raya Dramaga No.16-18 -6.57314, 106.75084

N0035 Jalan KH. R. Abdullah Bin Nuh -6.57338, 106.75142

N0036 Jalan KH. R. Abdullah Bin Nuh -6.57313, 106.75212

N0037 Jalan KH. R. Abdullah Bin Nuh -6.57294, 106.75242

N0038 Jalan KH. R. Abdullah Bin Nuh -6.57228, 106.75333

N0039 Jalan KH. R. Abdullah Bin Nuh -6.57185, 106.75398

N0040 Jalan KH. R. Abdullah Bin Nuh -6.57141, 106.75467

N0041 Jalan KH. R. Abdullah Bin Nuh -6.57118, 106.75506

N0042 Jalan KH. R. Abdullah Bin Nuh -6.57084, 106.75558

N0043 Jalan KH. R. Abdullah Bin Nuh -6.57029, 106.75625

N0044 Jalan Raya Leuwiliang-Bogor -6.56935, 106.75531

N0045 Jalan Sindang Barang Sbj No.31 -6.56895, 106.75592

N0046 Jalan Raya Leuwiliang-Bogor -6.56888, 106.75479

(29)

19

Lanjutan

N0048 Jalan Cifor Batu Hulung No.33 -6.56728, 106.75449

N0049 Jalan Cifor Batu Hulung No.19 -6.56774, 106.75364

N0050 Jalan Cifor Batu Hulung No.13 -6.56713, 106.75299

N0051 Jalan Batu Hulung No.66 -6.56774, 106.75237

N0052 Jalan Cifor Batu Hulung No.13 -6.56798, 106.75259

N0053 Jalan Bubulak No.05 -6.56839, 106.75221

N0054 Jalan Bubulak No.05 -6.56858, 106.75305

N0055 Jalan Bubulak No.05 -6.56879, 106.75258

N0056 Jalan Bubulak No.21 -6.56923, 106.75293

N0057 Jalan Bubulak No.21 -6.56951, 106.75279

N0058 Jalan Bubulak No.06 -6.56868, 106.75184

N0059 Jalan Batu Hulung No.27, Bogor -6.56841, 106.75177

N0060 Jalan Batu Hulung No.67, Bogor -6.56765, 106.75158

N0061 Jalan Batu Hulung No.65, Bogor -6.56768, 106.75114

N0062 Jalan Batu Hulung No.48-54, Bogor -6.56782, 106.75066

N0063 Jalan Batu Hulung No.19, Bogor -6.56815, 106.75022

N0064 Jalan Batu Hulung No.11, Bogor -6.56842, 106.74959

N0065 Jalan Raya Leuwiliang-Bogor -6.56944, 106.75406

N0066 Jalan Raya Leuwiliang-Bogor -6.56987, 106.75377

N0067 Jalan Raya Leuwiliang-Bogor -6.57061, 106.75318

N0068 Jalan Raya Leuwiliang-Bogor -6.57107, 106.75345

N0069 Jalan Raya Leuwiliang-Bogor -6.57082, 106.75387

N0070 Jalan KH. R. Abdullah Bin Nuh -6.57141, 106.75366

N0071 Jalan KH. R. Abdullah Bin Nuh, -6.57181, 106.75306

N0072 Jalan KH. R. Abdullah Bin Nuh, -6.57224, 106.75238

N0073 Jalan Raya Leuwiliang-Bogor -6.57145, 106.75281

N0074 Jalan Raya Leuwiliang-Bogor -6.57172, 106.75243

N0075 Jalan Bubulak No.23 -6.57205, 106.75189

N0076 Jalan Raya Leuwiliang-Bogor -6.57104, 106.75255

N0077 Jalan Raya Leuwiliang-Bogor -6.57153, 106.75159

N0078 Jalan Bubulak No.23, Bogor -6.57193, 106.75158

N0079 Jalan Raya Dramaga No.18 -6.57212, 106.75106

N0080 Jalan Bubulak No.18-23 -6.57121, 106.75114

N0081 Jalan Bubulak No.30 -6.57084, 106.75243

N0082 Jalan Raya Leuwiliang-Bogor -6.57064, 106.75278

N0083 Jalan Bubulak No.4 -6.57071, 106.75198

N0084 Jalan Bubulak No.05 -6.57028, 106.75286

N0085 Jalan Raya Leuwiliang-Bogor -6.57028, 106.75319

N0086 Jalan Bubulak Gardu No.17 -6.57019, 106.75184

N0087 Jalan Bubulak Gardu No.02 -6.57039, 106.75134

N0088 Jalan Bubulak No.07 -6.57066, 106.75145

N0089 Jalan Bubulak No.1 -6.57065, 106.75058

N0090 Jalan Bubulak No.17 -6.57092, 106.75041

N0091 Jalan Bubulak No.1 -6.57026, 106.75005

N0092 Jalan Bubulak No.10 -6.56948, 106.75196

N0093 Jalan Bubulak Gardu No.04 -6.56978, 106.75169

N0094 Jalan Bubulak Gardu No.5 -6.56925, 106.75143

(30)

20

Lanjutan

N0096 Jalan Batu Hulung No.24 -6.56872, 106.75118

N0097 Jalan Gardu Raya No.4-5 -6.56914, 106.75026

N0098 Jalan Gardu Raya No.15-44 -6.56936, 106.75032

N0099 Jalan Gardu Raya No.37 -6.56956, 106.74971)

N0100 Jalan Gardu Raya No.5 -6.56883, 106.75099

N0101 Jalan Bubulak Gardu No.02 -6.56997, 106.75116

(31)

21

Lampiran 2 Daftar arc yang digunakan

Node Awal Node Akhir Bobot jarak (meter)

(32)
(33)

23

Lanjutan

N0089 N0090 8

N0089 N0091 73

N0093 N0101 97

N0093 N0094 66

N0094 N0095 59

N0097 N0098 22

N0097 N0100 88

N0098 N0099 70

N0101 N0102 59

(34)

24

RIWAYAT HIDUP

Penulis dilahirkan di Liwa pada tanggal 22 Juli 1992 sebagai anak pertama dari pasangan Sukaisih dan Rustendi. Riwayat akademik penulis dimulai pada tahun 1998 dengan masuk ke SD Negeri Sebarus. Tahun 2004 penulis lulus dari SD kemudian melanjutkan ke SMP Negeri 1 Liwa dan lulus pada tahun 2007. Tahun 2010 penulis lulus dari SMA Negeri 1 Liwa dan pada tahun yang sama diterima pada Jurusan Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor melalui Jalur Seleksi Masuk IPB (USMI).

(35)

Gambar

Gambar 1 Skema metode penelitian
Gambar 2   Diagram alir langkah-langkah fungsi penentuan lokasi terbaik
Gambar 3 Peta wilayah penelitian
Gambar 4 Titik-titik lokasi yang terpilih sebagai node
+5

Referensi

Dokumen terkait

Penelitian ini membahas sebuah SPK untuk melakukan perekomendasian penerima beasiswa mahasiswa tidak mampu dan berprestasi di Sekolah Tinggi Agama Islam (STAI)

Sebagai akibat dari bibit yang lebih baik, maka bibit yang berasal dari benih tanam langsung maupun bahan tanaman berupa semaian dengan stadia atau fase benih

Analisis Yuridis Penjatuhan Sanksi Pidana terhadap Anak yang Berkonflik dengan Hukum (Studi Kasus Putusan Pengadilan Negeri Tegal No.32/PID.Sus-Anak/2014/PN TGL). Implikasi

Hasil dari studi kasus dalam jurnal ini adalah hampir semua siswa merasa senang melakukan proses pembelajaran dengan adanya umpan balik secara formatif karena siswa

Transaksi sewa menyewa jasa dalam bentuk ijarah untuk transaksi multijasa, berdasarkan persetujuan atau kesepakatan antara Bank Syariah (BS) dan atau Unit Usaha Syariah (UUS)

GDQ DQJNXK NHWLND PHOD\DQL ZDUJD PDV\DUDNDW \DQJ GDWDQJ NHLVWDQVLQ\D 7UDGLVL LQL KDUXV GLXEDK GHQJDQ PHQJKDUJDL PHUHND VHEDJDL ZDUJD QHJDUD \DQJ EHUGDXODW GDQ KDUXV GLSHUODNXNDQ

Dengan memannjatkan puji dan syukur kehadirat Allah SWT yang telah melimpahkan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi dengan

Pelayanan farmasi klinis merupakan pelayanan yang berinteraksi dengan pasien secara langsung dengan dibantu oleh tim kesehatan lainnya untuk meningkatkan kualitas