• Tidak ada hasil yang ditemukan

2.2. Sistem Pendukung Keputusan

2.2.6. Pemrograman Heuristic

Heuristic (bahasa Yunani untuk kata discovery) adalah aturan keputusan yang mengatur bagaimana sebuah masalah harus dipecahkan (Turban et al, 2005). Heuristic juga didefinisikan sebagai kriteria, metode, atau prinsip untuk menemukan jalan dari beberapa alternatif tindakan yang paling efektif untuk mencapai tujuan tertentu (Pearl, 1984). Sedangkan menurut George Polya, heuristic didefinisikan sebagai studi metode dan aturan penemuan (Setiawan, 1993, hal: 80). Biasanya, heuristic dikembangkan berdasarkan basis analisis yang solid terhadap masalah, kadang-kadang melibatkan eksperimen yang didesain secara cermat. Sebaliknya, petunjuk biasanya dikembangkan sebagai hasil dari pengalaman coba-salah. Beberapa heuristic diambil dari petunjuk. Heuristic search (atau pemrograman) adalah prosedur langkah-demi- langkah (seperti algoritma) yang diulang sampai ditemukan sebuah solusi yang memuaskan. Contoh-contoh heuristic didaftarkan pada Tabel 2.3.

Tabel 2.3 Contoh-contoh heuristic

Pekerjaan berurutan melalui sebuah mesin

Melakukan pekerjaan yang pertama-tama memerlukan least time.

Pembelian saham Jika rasio harga dibanding pengeluaran

lebih dari 10, tidak membeli saham.

Travel Tidak menggunakan jalan bebas hambatan

Investasi kapital pada proyek teknologi tinggi

Mempertimbangkan hanya proyek-proyek dengan periode pengembalian terestimasi kurang dari 2 tahun.

Pembelian sebuah rumah Membeli hanya di lingkungan yang bagus,

tetapi hanya membeli dalam rentang harga yang lebih rendah.

Pengambil keputusan menggunakan heuristic atau aturan utama dengan berbagai alasan, beberapa alasan lebih masuk akal daripada alasan yang lainnya. Sebagai contoh, pengambil keputusan dapat menggunakan sebuah heuristic jika mereka tidak tahu cara terbaik untuk memecahkan sebuah masalah atau jika teknik- teknik optimalisasi belum dilakukan.

Proses heuristic dapat dijelaskan sebagai pengembangan berbagai aturan untuk membantu memecahkan masalah-masalah rumit, menemukan cara-cara mendapatkan dan menginterpretasikan informasi yang terus berubah, dan kemudian mengembang- kan metode-metode yang memimpin kepada suatu algoritma komputasional atau solusi umum.

Sekalipun heuristic dilakukan terutama untuk memecahkan masalah yang tidak terstruktur, namun heuristic juga dapat digunakan untuk memberikan solusi yang memuaskan untuk masalah tertentu yang kompleks namun terstruktur, dengan jauh lebih cepat dan lebih murah ketimbang algoritma optimalisasi. Kesulitan utama menggunakan heuristic adalah heuristic bukan satu algoritma umum. Dengan demikian, heuristic dapat digunakan hanya untuk situasi spesifik.

Pemrograman heuristic merupakan pendekatan yang melibatkan cara heuristic (role of thumb) yang dapat menghasilkan solusi yang layak dan cukup baik pada pelbagai permasalahan yang kompleks. Cukup baik (good enough) biasanya dalam jangkauan 90 sampai dengan 99,99 persen dari solusi optimal sebenarnya (Subakti, 2002).

Pemikiran heuristic tidak perlu berjalan dalam cara yang langsung. Pemikiran ini meliputi pencarian, pembelajaran, evaluasi, penilaian, dan kemudian pencarian ulang, pembelajaran ulang, dan penilaian ulang saat terjadi eksplorasi dan pembuktian. Pengetahuan yang didapatkan dari kesuksesan atau kegagalan pada saat yang sama merupakan umpan balik dan memodifikasi proses pencarian. Biasanya tujuan atau masalah atau pemecahan yang terkait atau masalah yang disederhanakan perlu ditentukan kembali sebelum masalah utama dapat dipecahkan (Turban et al, 2005).

2.3. Algoritma A*

Secara umum, pencarian jalur terpendek dapat dibagi menjadi dua metode yaitu metode algoritma konvensional dan algoritma heuristic. Metode algoritma konvensional diterapkan dengan cara perhitungan matematis biasa, sedangkan metode algoritma heuristic diterapkan dengan perhitungan kecerdasan buatan dengan menentukan basis pengetahuan dan perhitungannya (Mutakhiroh et al, 2007).

Metode algoritma heuristic dapat menyelesaikan masalah pencarian jalur terpendek dengan hasil yang lebih variatif dan dengan waktu perhitungan yang lebih singkat. Pada metode algoritma konvensional, logika yang dipakai hanya dengan membandingkan jarak masing-masing simpul dan kemudian mencari jarak yang terpendek. Namun, kelemahan metode algoritma konvensional pada keakuratan hasil yang didapatkan serta tingkat kesalahan yang dihasilkan pada perhitungan. Hal tersebut tidak akan menjadi masalah jika data yang dibutuhkan hanya sedikit, sebaliknya maka akan menyebabkan peningkatan tingkat kesalahan perhitungan dan penurunan keakuratan. Secara konsep algoritma, metode algoritma konvensional lebih mudah untuk dipahami, tetapi hasil yang diperoleh dari metode algoritma heuristic lebih variatif.

Di dalam mempelajari tingkah laku suatu heuristic tidak hanya dibutuhkan solusi, tetapi juga membutuhkan algoritma untuk mendapatkan jalur atau lintasan

terpendek untuk mencapai data yang diinginkan (goal). Hal ini adalah penting jika sebuah aplikasi mempunyai biaya tinggi untuk langkah-langkah solusi ekstranya, seperti misalnya merencanakan sebuah jalur untuk sebuah robot autonomous pada sebuah lingkungan yang berbahaya. Heuristic yang menemukan lintasan terpendek kapan saja dan di mana berada disebut admissible. Suatu algoritma pencarian disebut admissible jika algoritma tersebut terjamin dalam hal pencarian jalur yang minimal pada suatu solusi di manapun jalur tersebut berada (Kristanto, 2004).

Salah satu metode algoritma heuristic yang digunakan untuk melakukan pencarian jalur terpendek adalah algoritma A*. A* (admissible heuristic) adalah strategi best first search yang menggunakan estimasi solusi biaya terkecil untuk mencapai suatu tujuan dengan jarak tempuh terdekat dan memiliki nilai heuristic yang digunakan sebagai dasar pertimbangan (Seminar Nasional Sains dan Teknologi-II, 2008). Algoritma A* menghasilkan jalur optimal mulai dari tempat awal kemudian melalui simpul menuju tempat yang dituju.

Notasi yang dipakai oleh algoritma A* adalah:

f(n) = g(n) + h(n) (2.4)

Dalam notasi standar yang dipakai untuk algoritma A* di atas, digunakan g(n) untuk mewakili biaya rute dari simpul awal ke simpul n. Lalu h(n) mewakili perkiraan biaya dari simpul n ke simpul tujuan, yang dihitung dengan fungsi heuristic. A* ‘menyeimbangkan’ kedua nilai ini dalam mencari jalan dari simpul awal ke simpul tujuan. Dalam menentukan simpul yang akan dikembangkan, algoritma ini akan memilih simpul dengan nilai f(n) = g(n) + h(n) yang paling kecil (Adipranata et al, 2007).

Beberapa terminologi dasar yang terdapat pada algoritma A* (Viktor et al, 2010) adalah:

b. simpul (nodes) merupakan petak-petak kecil sebagai representasi dari pathfinding. Bentuknya dapat berupa persegi, lingkaran, maupun segitiga. c. A merupakan simpul yang sedang dijalankan dalam algoritma pencarian jalan

terependek.

d. open list merupakan tempat menyimpan data simpul yang mungkin diakses

dari starting point maupun simpul yang sedang dijalankan.

e. closed list merupakan tempat menyimpan data simpul sebelum A yang juga

merupakan bagian dari jalur terpendek yang telah berhasil didapatkan. f. harga (cost) merupakan nilai dari f(n).

g. halangan (unwalkable) merupakan sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A.

Berikut ini adalah algoritma A* (Pearl, 1984):

1. Letakkan simpul awal s pada OPEN. 2. Jika OPEN kosong, pencarian berakhir.

3. Pindahkan simpul n yang memiliki nilai f minimum dari OPEN ke CLOSED. 4. Jika n adalah simpul tujuan, pencarian berhasil dan berakhir dengan

menelusuri kembali pointer dari n sampai s.

5. Ekspansikan n, bangkitkan semua successor dari simpul n, dan tambahkan ke pointer tersebut kembali ke n. Untuk setiap successor n’ dari simpul n:

a. Jika n’ tidak ada pada OPEN atau CLOSED, estimasi h(n’) (sebuah perkiraan dari biaya perjalanan terbaik dari n’ ke beberapa simpul tujuan), dan hitung f(n’) = g(n’) + h(n’) dimana g(n’) = g(n) + c(n, n’) dan g(s) = 0.

b. Jika n’ sudah berada pada OPEN atau CLOSED, letakkan pointer

perjalanan pada hasil g(n’) yang terendah.

c. Jika n’ membutuhkan penyesuaian pointer dan ditemukan pada CLOSED, buka kembali n’.

2.4. Delphi 7.0

Borland Delphi atau yang biasa disebut Delphi saja merupakan sarana pemrograman aplikasi visual. Bahasa pemorgraman yang digunakan adalah bahasa pemrograman Pascal atau yang kemudian juga disebut bahasa pemrograman Delphi. Delphi merupakan generasi penerus dari Turbo Pascal. Turbo Pascal dirancang untuk dijalankan pada sistem opersai DOS, sedangkan Delphi dirancang untuk beroperasi di bawah sistem operasi Windows (Wahana Komputer, 2003).

Borland Delphi versi pertama dirilis pada tahun 1995, kemudian berlanjut sampai Delphi 7.0 yang dirilis pada tahun 2002 dan kini versi terbarunya adalah Delphi 8.0 dan 2005.

Keunggulan bahasa pemrograman Delphi terletak pada produktivitas, kualitas, pengembangan perangkat lunak, kecepatan kompilasi, pola desain yang menarik serta diperkuat dengan pemrogramannya yang terstruktur. Keunggulan lain dari Delphi adalah dapat digunakan untuk merancang program aplikasi yang memiliki tampilan seperti program aplikasi lain yang berbasis Windows (Madcoms, 2003).

Delphi memiliki sarana yang tangguh untuk pembuatan aplikasi, mulai dari sarana untuk pembuatan form, menu, toolbar, hingga kemampuan untuk menangani pengelolaan basis data yang besar. Kelebihan-kelebihan yang dimiliki Delphi antara lain karena pada Delphi, form dan komponen-komponennya dapat dipakai ulang dan dikembangkan, tersedia template aplikasi dan form template, memiliki lingkungan pengembangan visual yang dapat diatur sesuai kebutuhan, serta kemampuan mangakses data dari bermacam-macam format.

2.5. MySQL

MySQL adalah database server relasional yang gratis di bawah lisensi GNU General Public License. MySQL dikembangkan oleh MySQL AB, sebuah perusahaan komersial yang membangun layanan bisnisnya melalui basis data MySQL. Awal mula

pengembangan MySQL adalah pengguanaan mSQL untuk koneksi ke tabel mempergunakan rutin level rendah (ISAM). Setelah beberapa pengujian diperoleh kesimpulan mSQL tidak cukup cepat dan fleksibel untuk memenuhi kebutuhan. Sehingga dihasilkan suatu antarmuka SQL baru pada basis data tetapi dengan Application Programming Interface (API) yang mirip SQL. API ini dipilih sedemikian sehingga memudahkan porting kode (Utdirartatmo, 2002).

MySQL juga disebut sebagai suatu sistem manajemen basis data. Suatu basis data adalah sebuah kumpulan data yang terstruktur. Untuk menambahkan, mengakses, dan memproses data yang tersimpan pada suatu basis data komputer diperlukan sistem manajemen basis data seperti MySQL. MySQL mampu menangani basis data berukuran besar yaitu bisa memuat 60 ribu tabel dan 50 juta record. Karena komputer sangat unggul dalam menangani sejumlah besar data, sistem manajemen basis data memainkan suatu peranan yang penting dalam komputasi, baik sebagai utility stand- alone maupun bagian dari aplikasi lainnya.

Perintah-perintah dasar Structured Query Language (SQL) yang dipergunakan pada MySQL adalah sebagai berikut (Utdirartatmo, 2002).

a. CREATE DATABASE

Perintah ini berfungsi untuk membuat database baru

b. DROP DATABASE

Berfungsi untuk menghapus database.

c. CREATE TABLE

Perintah ini berfungsi untuk membat table baru.

d. DESCRIBE

Perintah ini berguna untuk menampilkan deskripsi dari sebua tabel.

e. ALTER TABLE

Perintah ini berfungsi untuk melakukan modifikasi tabel.

f. DROP TABLE

Perintah ini digunakan untuk menghapus tabel.

g. DELETE

h. GRANT

Perintah ini berfungsi untuk memberikan privilege akses kepada pengguna terhadap tabel dan dapat juga digunakan untuk membuat pengguna baru.

i. LOCK TABLES

Perintah ini berfungsi untuk menutup akses pengguna terhadap tabel.

j. UNLOCK TABLES

Perintah ini berfungsi untuk membuka akses yang sebelumnya dikunci.

k. INSERT INTO

Perintah ini berfungsi untuk memasukkan data ke dalam tabel.

l. LOAD DATA INFILE

Perintah ini gunakan untuk membaca data dari file teks.

m. SELECT

Perintah ini berfungsi untuk menampilkan record dari suatu tabel.

n. UPDATE

BAB III

Dokumen terkait