Friday, December 8, 2017

Metode Pencarian: Blind and Heuristic

Dalam post kali ini penulis akan membahas tentang metode pencarian buta (blind search) dan heuristik (heuristic search).

A. Metode Pencarian Buta

Secara umum metode pencarian buta didefinisikan sebagai sebuah metode pencarian pada sistem berbasis kecerdasan buatan yang didesain untuk tidak memiliki informasi awal pada sistemnya. Sebagai gantinya, metode ini hanya memiliki kemampuan untuk membedakan sebuah tujuan dengan hal-hal lainnya yang bukan bersifat sebagai tujuan. Hal ini dikarenakan sistem hanya bertugas untuk mencari sesuatu di dalam sebuah pohon pencarian, dengan cara yaitu membuka tiap titik (node) yang ada pada tiap tingkatan (level) dari pohon tersebut. Adapun sebuah titik pada pohon pencarian melambangkan sebuah kondisi, dengan sebagian di antara kumpulan titik pada pohon tersebut merupakan tujuan pencarian dari metode pencarian buta tersebut (walaupun terkadang pada pohon tersebut semua titik yang ada tidak berisi titik tujuan pencarian oleh sistem). Sejatinya pohon pencarian merupakan lambang dari area pencarian yang disasar oleh sistem, dimana hal ini untuk mempermudah proses pencarian node tujuan dengan cara menyusunnya menjadi sebuah pohon yang dapat ditelusuri oleh sistem dengan mudah.

Ada beberapa jenis algoritma yang tergolong sebagai bagian dari metode pencarian buta, namun dua di antaranya adalah algoritma untuk metode pencarian buta yang paling banyak dipergunakan, yaitu:

1. Breadth First Search (BFS)
Penggambaran struktur graf pohon untuk algoritma BFS | Sumber: https://en.wikipedia.org/wiki/Breadth-first_search
Konsep paling awal dari algoritma ini pertama kali dikonsepkan oleh Konrad Zuse pada tahun 1945 dalam tesis Ph.Dnya pada bahasa pemrograman Plankalkül (Formal System for Planning) yang dimana pada konsep yang dikemukakan oleh Zuse tersebut algoritma ini ditujukan sebagai sebuah cara untuk menelusuri komponen yang saling terhubung pada sebuah graf. Konsep algoritma ini kemudian disempurnakan oleh Edward F. Moore untuk pencarian jalan paling singkat untuk keluar dari sebuah labirin. Secara sederhana proses pencarian simpul graf dengan menggunakan algoritma BFS menggunakan teknik non-rekursif, dengan proses yang dilakukan yaitu:
  1. Kunjungi simpul paling awal dari graf
  2. Setelahnya kunjungi simpul yang bertetangga dengan simpul paling awal tersebut
  3. Jika ada simpul yang belum dikunjungi dan bertetangga dengan simpul yang sudah dikunjungi, kunjungi simpul tersebut hingga semua simpul telah dikunjungi
Namun apabila graf tersebut berbentuk pohon yang memiliki akar, maka prosesnya menjadi:
  1. Kunjungi simpul akar dari graf
  2. Setelahnya kunjungi simpul cabang yang ada di satu tingkat lebih tinggi dari simpul akar
  3. Jika ada simpul yang belum dikunjungi dan berada di satu tingkat yang lebih tinggi dari tingkatan simpul yang sudah dikunjungi, kunjungi simpul tersebut hingga semua simpul telah dikunjungi
Karena umumnya graf direpresentasikan sebagai sebuah array berbentuk antrian (queue), maka secara umum operasi pengunjungan simpul pada graf dengan menggunakan algoritma BFS dilakukan dengan cara yaitu menelusuri masing-masing elemen data pada array graf tersebut secara keseluruhan. Selain menggunakan array antrian, algoritma BFS juga menggunakan linked list sebagai media penggambaran dari graf yang isinya akan ditelusuri satu per satu untuk mencari simpul tujuan dari graf tersebut. Namun pada dasarnya penggunaan array maupun linked list dalam algoritma BFS sama-sama menggambarkan bahwa operasi dari algoritma tersebut akan menelusuri masing-masing elemen dalam sebuah graf untuk mencapai elemen tujuan tanpa mengetahui elemen apa yang akan dilalui selama mencari jalan tersingkat menuju elemen tujuan tersebut.

Contoh dari pengaplikasian BFS dalam pemecahan suatu masalah yaitu pada kasus pencarian rute angkutan umum dari suatu lokasi ke lokasi lainnya. Pada kasus ini titik awal pencariannya adalah Terminal Senen, dengan titik akhirnya yaitu Terminal Kampung Rambutan. Prosesnya yaitu:
  1. Kunjungi titik Terminal Senen.
  2. Setelahnya bangkitkan simpul cabang dari titik Terminal Senen yaitu Blok M, Pulo Gadung dan Manggarai, lalu kunjungi simpul cabang tersebut.
  3. Karena titik tujuan belum tercapai, maka bangkitkan simpul cabang dari masing-masing simpul cabang yang telah dikunjungi pada tahap nomor 2, yaitu Grogol, Lebak Bulus, Bekasi, Cililitan dan Harmoni.
  4. Dikarenakan titik tujuan masih belum tercapai, bangkitkan simpul cabang dari masing-masing simpul cabang yang telah dikunjungi pada tahap nomor 3 yaitu Kalideres, Ciputat, Kampung Rambutan, Kota dan Tanah Abang.
  5. Pada tahap ini titik tujuan (yaitu Kampung Rambutan) sudah ditemukan, sehingga proses selesai.
Di sini sistem tidak mengetahui isi dari titik cabang untuk Terminal Senen, sehingga sistem akan terlebih dahulu membuka lalu mengunjungi masing-masing titik cabang tersebut dengan menggunakan algoritma BFS untuk mengetahui isi dari titik selanjutnya. Ketika dibuka dan dikunjungi, ternyata isinya adalah Terminal Blok M, Terminal Pulo Gadung dan Terminal Manggarai. Maka di sini sistem akan mengulangi prosesnya untuk mengetahui isi dari titik selanjutnya. Proses ini terus dilakukan hingga akhirnya sistem menemukan salah satu titik cabang dari titik cabang yang telah dikunjungi pada tahap sebelumnya adalah titik tujuannya yaitu Terminal Kampung Rambutan. Kemampuan untuk membedakan titik tujuan dari titik bukan tujuan sangatlah dibutuhkan karena hal ini digunakan untuk mencegah sistem menemui kebuntuan ketika mencari titik tujuan.

2. Depth First Search (DFS)
Penggambaran struktur graf pohon untuk algoritma DFS | Sumber: https://en.wikipedia.org/wiki/Depth-first_search
Algoritma ini pada dasarnya memiliki kesamaan struktur dengan algoritma BFS, dimana sistem akan mencari titik tujuan dengan mengunjungi semua titik pada satu tingkat sebelum kemudian beranjak ke tingkat selanjutnya untuk mengunjungi titik lainnya hingga titik tujuannya berhasil ditemukan. Namun perbedaannya adalah algoritma DFS bekerja dengan cara yang terbalik dibanding dengan BFS, dimana algoritma DFS menerapkan prinsip berupa penelusuran dari tingkat pertama langsung ke titik paling kiri dari tingkat selanjutnya. Adapun cara kerjanya yaitu sistem terlebih dahulu mengunjungi titik paling kiri dari tingkat selanjutnya pada graf untuk mencari titik tujuannya. Jika pada posisi tersebut titik tujuannya tidak ditemukan, maka sistem kemudian mencari hingga ke titik paling kiri dari tingkat terdalam. Apabila tidak juga ditemukan, maka penelusuran akan dilakukan dari titik sebelah kanannya. Proses ini dilanjutkan secara berulang hingga titik tujuan ditemukan oleh sistem. Jika titik tujuannya sudah ditemukan, maka proses backtracking yang berfungsi untuk menelusuri balik untuk mendapatkan jalur yang diinginkan tidak perlu dilakukan.

DFS secara umum hanya membutuhkan memori yang sedikit untuk melakukan proses penelusuran sebuah graf secara keseluruhan. Hal ini dikarenakan DFS hanya akan menyimpan titik yang terdapat di lintasan yang aktif saja. Selain itu apabila titik tujuannya berada di posisi paling kiri yang pertama kali ditelusuri maka sistem dapat langsung mengakhiri proses pencariannya tanpa perlu menelusuri titik lainnya dalam graf. Ini tentunya berbeda dengan BFS yang harus menyimpan semua titik yang telah dibangkitkan dan dikunjungi dalam graf, yang dimana ini membebani kinerja memori. Maka dapat dikatakan bahwa algoritma DFS bekerja secara lebih cepat dibandingkan dengan BFS. Namun kelemahannya adalah DFS berpotensi tidak mampu bekerja dengan baik jika berhadapan dengan graf yang jumlah tingkatannya sangat banyak. Bahkan algoritma DFS sendiri juga berpotensi untuk tidak menemukan titik tujuan yang diharapkan.

Contoh pengaplikasian dari algoritma DFS dalam suatu kasus pada dasarnya sama dengan yang ada di algoritma BFS, namun untuk lebih detailnya ada suatu kasus berupa penggunaan algoritma DFS untuk pembuatan aplikasi yang membantu pencarian rute bus terpendek di wilayah kota Solo. Pada kasus ini terdapat banyak bus kota yang beroperasi di dalam wilayah kota Solo, dengan pengoperasian masing-masing trayek dilakukan oleh perusahaan yang berbeda dan rute dari trayeknya berbeda pula. Ini tentunya menyulitkan semua orang yang ingin menggunakan jasa angkutan bus di Solo, sehingga dari sini lahirlah ide pembuatan aplikasi tersebut. Secara singkat pola kerja algoritma DFS pada aplikasi tersebut yaitu mencari rute bus mana yang paling pendek untuk mencapai suatu tempat. Misalkan titik awal pencarian adalah di daerah Palur, sedangkan titik tujuannya yaitu Pasar Klewer. Ada 2 rute bis yang dioperasikan oleh perusahaan yang berbeda, dengan proses penelusurannya yaitu sebagai berikut:
  1. Kunjungi Palur sebagai titik awal pada graf rute.
  2. Selanjutnya bangkitkan dan kunjungi Panggung sebagai titik selanjutnya pada graf tersebut.
  3. Kemudian bangkitkan dan kunjungi Stasiun Solo Balapan sebagai titik selanjutnya. Karena di sini tidak ditemukan titik tujuan yaitu Pasar Klewer, maka proses penelusuran dikembalikan ke titik sebelumnya (Panggung) untuk berpindah ke rute selanjutnya.
  4. Hapus titik Solo Balapan dari memori. Dari Panggung penelusuran diarahkan ke titik yang berada di sisi kanan graf rute yaitu Pasar Gede. Bangkitkan dan kunjungi titik tersebut.
  5. Pada tahap ini bangkitkan dan kunjungi titik selanjutnya. Di sini titik selanjutnya adalah titik tujuan yaitu Pasar Klewer, maka proses penelusuran selesai.

B. Metode Pencarian Heuristik

Metode ini didefinisikan sebagai sebuah teknik pencarian yang didesain untuk menemukan suatu solusi pemecahan masalah secara cepat dan efisien tanpa harus menghabiskan banyak waktu dalam pelaksanaan prosesnya. Umumnya pemecahan masalah yang membutuhkan penggunaan komputer diselesaikan dengan program yang memanfaatkan teknik konvensional seperti pemrograman linear, pemrograman dinamis dan sebagainya. Namun teknik pencarian berbasis heuristik memungkinkan adanya pemecahan terhadap suatu masalah yang tidak dapat diselesaikan dengan teknik konvensional karena berbagai hal yang membuat teknik konvensional tidak dapat memecahkan masalah tersebut, salah satunya seperti tingginya tingkat kerumitan dari masalah tersebut. Meskipun tidak ada jaminan bahwa hasil pencariannya akan sangat lengkap atau optimal sesuai dengan harapan dari pengguna, namun teknik heuristik mampu menghasilkan solusi yang konkrit untuk memecahkan masalah skala besar secara adaptif dan dapat menggunakan modul tambahan dalam mengakses informasi yang berkaitan dengan pemecahan masalah tersebut. Selain itu teknik heuristik biasanya didukung dengan penggunakan antarmuka pengguna yang berbasis grafis (GUI) untuk memudahkan pengguna dalam memahami hasil pencariannya. Bahkan penggunaan teknik heuristik dalam proses pemecahan suatu masalah sendiri memungkinkan didapatnya lebih dari satu solusi untuk memecahkan satu masalah saja, yang dimana ini menandakan teknik heuristik memiliki fleksibilitas yang tinggi.

Seperti halnya metode pencarian buta, terdapat beberapa jenis algoritma dari metode pencarian heuristik. Namun yang akan dibahas dalam artikel ini hanyalah algoritma Generate and Test dan Hill Climbing saja. Pembahasan dari masing-masing algoritma tersebut adalah sebagai berikut:

1. Generate and Test

Secara umum algoritma ini akan melakukan pencarian terhadap suatu solusi dengan memfokuskan pada pencarian solusi yang mungkin untuk dapat dipergunakan dalam memecahkan suatu masalah. Pola dari pencariannya sendiri yaitu membangkitkan suatu kemungkinan solusi (yang pada dasarnya adalah titik dalam suatu graf) untuk kemudian diuji apakah isinya sesuai dengan tujuan yang diharapkan atau tidak. Algoritma ini menjamin ditemukannya solusi yang diharapkan jika prosesnya dilakukan secara sistematis. Tetapi apabila ruang lingkup kerja (graf) yang ditelusuri tersebut sangat luas, maka prosesnya akan membutuhkan waktu yang sangat lama untuk menyelesaikannya. Adapun algoritma ini menggunakan salah satu prinsip dasarnya yaitu dari algoritma Depth-First Search (DFS), dimana prinsipnya dipergunakan untuk proses pembangkitan solusi yang hanya membutuhkan penggunaan memori yang sedikit. Sedangkan untuk proses pengujiannya sendiri menggunakan metode backtracking untuk memastikan apakah solusinya sesuai dengan harapan atau tidak. Secara lengkap pola berikut menggambarkan bagaimana cara kerja dari algoritma Generate and Test ketika mencari solusi (titik tujuan):
  1. Bangkitkan suatu kemungkinan solusi yang ditemukan.
  2. Ujicoba apakah yang telah dibangkitkan adalah benar-benar solusi dengan membandingkan titik yang diuji dengan tujuan yang diharapkan.
  3. Jika yang dibangkitkan merupakan solusi, akhiri proses dan keluar dari sistem. Jika solusi belum ditemukan, ulangi prosesnya ke langkah 1.
Salah satu contoh kasusnya adalah Travelling Salesman Problem (TSP), dimana dalam kasus tersebut diceritakan bahwa seorang salesman ditugaskan untuk mengunjungi beberapa kota sebanyak n. Adapun persyaratan yang ditetapkan adalah sang salesman hanya boleh mengunjungi tiap kota sebanyak sekali, dan yang ingin diketahui adalah rute terpendek yang mampu menghubungkan tiap kota tanpa harus melewati salah satu kota sebanyak dua kali atau lebih. Untuk itu dilakukanlah proses pencarian dengan menggunakan algoritma Generate and Test. Sebagai contoh yaitu ada empat kota yang harus dikunjungi, yaitu kota A, kota B, kota C dan kota D. Jika digambarkan sebagai sebuah graf, maka tiap ruas penghubung masing-masing titik (yang merupakan analogi untuk jarak dari rute antar tiap kota) dalam graf tersebut yaitu:
Graf analogi untuk rute penghubung antar kota | Sumber: http://fryunfirst.blogspot.co.id/2015/06/pencarian-heuristik-heuristic-search.html
Jika ditelusuri dengan menggunakan algoritma ini, maka ada beberapa rute yang memungkinkan untuk diambil pada tiap langkah pencarian, yaitu:
  1. ABCD (jarak: 19) - rute terpilih: ABCD (jarak: 19)
  2. ABDC (jarak: 18) - rute terpilih: ABDC (jarak: 18)
  3. ACBD (jarak: 12) - rute terpilih: ACBD (jarak: 12)
Dari tiap langkah pencarian tersebut dipilihlah rute yang jaraknya paling pendek yaitu ACBD dengan jarak yang harus ditempuh sebanyak 12. Ini dikarenakan berdasarkan pembandingan kemungkinan solusi yang ditemukan dari tiap langkah pencarian tersebut didapat hasil yang menyatakan bahwa dari semua pilihan rute yang ada jarak yang paling pendek untuk ditempuh antara tiap kota adalah rute ACBD. Bila dibandingkan dengan rute lainnya seperti ABCD (19), ABDC (18), ACDB (13) dan sebagainya, rute ACBD inilah yang paling pendek, sehingga ditarik kesimpulan bahwa untuk kasus TSP ini rute yang paling direkomendasikan untuk penyelesaian masalah tersebut adalah rute ACBD, karena rute tersebut memenuhi persyaratan berupa "rute yang diambil haruslah rute terpendek tanpa perlu melewati salah satu kota lebih dari satu kali". Adapun gambar contoh untuk graf pohon yang berfungsi untuk membantu penyelesaian masalah tersebut adalah pada gambar berikut:
Graf pohon untuk penyelesaian kasus TSP | Sumber: https://amandainhere.blogspot.co.id/2016/11/contoh-pencarian-generate-and-test.html

2. Hill Climbing

Berdasarkan strukturnya algoritma ini merupakan variasi dari algoritma Generate and Test yang telah dijelaskan sebelumnya. Karena itulah antara kedua algoritma tersebut terdapat beberapa kesamaan, salah satunya yaitu penggunaan algoritma DFS sebagai basis dasar dari pengembangan algoritma berbasis heuristik. Namun terdapat pula beberapa perbedaan mekanisme yang muncul di antara kedua algoritma tersebut, dengan salah satu perbedaan yang paling mencolok dari algoritma Hill Climbing adalah pada penggunaan teknik heuristik untuk proses pengujian hasil terkaan terhadap suatu titik yang dianalisa oleh sistem. Penggunaan teknik heuristik dalam pengujian hasil terkaan ini adalah dalam rangka untuk menguji seberapa baiknya nilai terkaan yang telah didapat dari hasil pencarian terhadap keadaan yang dibangkitkan dalam proses iterasi yang dilakukan pada algoritma tersebut. Untuk proses pembangkitan dari keadaan berikutnya sendiri semuanya bergantung kepada umpan balik dari prosedur pengujian yang dilakukan pada keadaan sebelumnya.

Pola kerja dari algoritma hill climbing adalah:
  1. Definisikan sebuah keadaan sebagai titik awal.
  2. Terapkan sebuah operasi pada keadaan saat ini dan ambil sebuah keadaan baru sebagai titik berikutnya.
  3. Bandingkan keadaan baru yang telah didapat dengan titik tujuan. Jika titik tujuan telah tercapai, maka akhiri operasi ini. Jika tidak tercapai, maka lakukan langkah 4.
  4. Lakukan evaluasi terhadap keadaan baru tersebut dengan fungsi heuristik, kemudian lakukan pembandingan dengan keadaan yang sekarang. Jika keadaan baru yang dibandingkan tersebut mendekati dengan titik tujuan dibandingkan dengan keadaan yang sekarang, maka perbarui keadaan sekarang tersebut.
Untuk algoritma ini, contoh kasusnya yaitu pada penyusunan isi suatu stack dari yang semula tidak beraturan menjadi terurut, dengan kondisi awal dan kondisi yang dijadikan tujuan adalah seperti pada gambar berikut ini:
Kondisi awal dan kondisi tujuan dari penyusunan stack | Sumber: http://www.baeldung.com/wp-content/uploads/2017/06/init_goal.png

Proses penyelesaiannya yaitu:
  1. Keluarkan elemen A yang terletak pada posisi paling atas (top) dari stack. Pada posisi ini elemen top berubah dari elemen A menjadi elemen D. Ulangi langkah ini hingga semua elemen telah dikeluarkan dari dalam stack tersebut, dengan elemen B sebagai elemen terakhir yang dikeluarkan dari stack tersebut adalah elemen yang terletak di dasar stack.
  2. Selanjutnya pilih elemen A sebagai elemen dasar baru dari stack, lalu masukkan ke dalam stack. Kemudian pilih B sebagai elemen top dari stack, dan masukkan ke dalam stack. Ulangi prosesnya hingga elemen D (sebagai elemen final) dimasukkan ke dalam stack. Kemudian tetapkan elemen D sebagai elemen top dari stack tersebut.
Apabila dijelaskan berdasarkan gambar maka polanya menjadi:
Pola penyelesaian operasi pengurutan data pada stack dengan menggunakan algoritma hill climbing | Sumber: http://www.baeldung.com/wp-content/uploads/2017/06/state_iterations.png
C. Sumber

1. Kendall, Graham. 2001. G5AIAI - Introduction to Artificial Intelligence. http://www.cs.nott.ac.uk/~pszgxk/courses/g5aiai/003blindsearches/blind_searches.htm. 21 November 2017.
2. Novik, Naomi. 1999. Blind Search Algorithms. http://cse.unl.edu/~choueiry/S03-476-876/searchapplet/. 21 November 2017.
3. Anonim. 1998. Blind Search-Part 2. http://web.cs.ucdavis.edu/~vemuri/classes/ecs170/search3b-blind.ppt. 21 November 2017.
4.  Zuse, Konrad. 1972. Der Plankalkül (The Formal System for Planning). http://zuse.zib.de/item/gHI1cNsUuQweHB6. 22 November 2017.
5. Moore, Edward F. 1959. The Shortest Path Through A Maze. Proceedings of the International Symposium on the Theory of Switching. Harvard University Press. pp. 285–292.
6. Wijanarto. Algoritma BFS dan DFS. http://eprints.dinus.ac.id/14269/1/slide_13b.pdf. 22 November 2017.
7. Anonim. 2015. Makalah Algoritma Breadth-First Search (BFS). http://yoursknowladge.blogspot.co.id/2015/04/makalah-algoritma-breadth-first-search.html. 22 November 2017
8. Even, Shimon (2011), Graph Algorithms (2nd ed.), Cambridge University Press, pp. 46–48
9. Herwanto, Arif dan Bambang Eka Purnama. 2013. Penerapan Metode Depth First Search pada Pencarian Rute Bus Kota Berbasis Web Mobile di Solo. Solo: Jurnal Ilmiah Go Infotech. Vol. 19, No. 1: 7-13.
10. Marcoulides, George A. 1998. Modern Methods for Business Research. Psychology Press. pp. 147–173
11. Tru, Cao Hoang. 2009. Heuristic Search - Part 3. http://www.cse.hcmut.edu.vn/~tru/AI/chapter3.pdf. 30 November 2017.
12. Welianto, Selvy dkk. 2011. Implementasi Algoritma Generate and Test Pada Pencarian Rute Terpendek. Yogyakarta: Jurnal Informatika . Vol. 7, No. 2: 1-10.
13. Anonim. 2017. Example of Hill Climbing Algorithm. http://www.baeldung.com/java-hill-climbing-algorithm. 5 Desember 2017.
14. Anonim. 2016. Contoh Pencarian Generate and Test. https://amandainhere.blogspot.co.id/2016/11/contoh-pencarian-generate-and-test.html.  6 Desember 2017.

Saturday, November 18, 2017

Sistem Pakar: Sebuah Pembahasan Singkat

Pada post kali ini, penulis akan membahas tentang sistem pakar (expert system), yang dimana pembahasannya meliputi sejarah singkat dan tujuan dari pembuatan sistem

A. Sejarah Singkat Sistem Pakar

Komputer Symbolics 3640 yang menjadi salah satu platform pengembangan sistem pakar pada masa dahulu kala | Original Author: Michael L. Umbricht and Carl R. Friend (displayed on https://en.wikipedia.org/wiki/Expert_system)
Sistem pakar secara umum dapat dipahami sebagai sebuah sistem yang dibuat untuk dapat mengemulasikan kemampuan pengambilan keputusan dari seorang pakar dalam suatu bidang (terutama ilmu pengetahuan) ke dalam sebuah komputer. Perkembangannya sendiri dimulai sejak era 1970an, dimana pengembangan tahap lebih lanjut dilakukan sejak 1980an. Awalnya sistem pakar dibuat pertama kali oleh Edward Feigenbaum bersama dengan rekan-rekannya yang tergabung dalam Stanford Heuristic Programming Project dalam rangka mengidentifikasi bidang ilmu yang menjunjung tinggi keberadaan pakar yang memiliki keahlian di bidang ilmu tersebut. Meskipun sistem yang dibuat oleh Feigenbaum dan timnya menggunakan prinsip berupa penggunaan kemampuan yang didasarkan pada pengetahuan yang dimiliki dibandingkan dengan mekanisme yang ada pada sistem konvensional, namun sistem tersebut menciptakan sebuah batu loncatan dalam pengembangan sistem pakar di tahun-tahun berikutnya. Adapun sistem pakar sendiri merupakan salah satu bentuk nyata dari perwujudan paling awal untuk konsep kecerdasan buatan (artificial intelligence, AI) pada era tersebut.

Pada saat yang bersamaan, pengembangan sistem pakar juga dilakukan di Perancis. Namun berbeda dengan sistem buatan ilmuwan Amerika yang mengandalkan sistem berbasis aturan (rule-based system) dan menggunakan bahasa pemrograman Lisp sebagai dasar dari pengembangannya, sistem yang dikembangkan di Perancis menggunakan Prolog (dikembangkan pertama kali oleh Alain Colmerauer dan Philippe Roussel pada tahun 1972). Jika keduanya dibandingkan, sistem yang dikembangkan oleh ilmuwan di Perancis memiliki tingkat kesempurnaan yang lebih tinggi dibandingkan konsep sistem pakar yang dikembangkan oleh ilmuwan Amerika. Hal ini dikarenakan prinsip bahasa yang dimiliki oleh Prolog tidak semata berfokus kepada prinsip "if - then" saja, melainkan kepada berbagai pertimbangan-pertimbangan maupun kondisi lainnya. Maka secara umum dapat dikatakan bahwa sistem pakar yang menggunakan Prolog memberikan perwujudan dari logika predikat tingkat pertama (First-order Logic) yang digunakan dalam dunia matematika maupun dunia komputer secara lebih sempurna untuk menyelesaikan masalah-masalah yang membutuhkan keberadaan pakar dari bidang yang bersesuaian dengan masalah tersebut.

Pada era 1980an, kemunculan dari konsep sistem pakar memicu berbagai universitas untuk menawarkan pendidikan yang berkaitan dengan pengembangan sistem pakar kepada mahasiswanya. Bahkan pada saat itu pula perusahaan-perusahaan ikut menerapkan teknologi komputer (termasuk pula sistem pakar) di dalam pola kerja sehari-harinya. Namun pada saat yang sama IBM PC yang dilengkapi dengan sistem operasi IBM PC DOS diperkenalkan pada tahun 1981, yang dimana kemampuan pemrosesannya yang relatif setara dengan mainframe pada saat itu (meskipun ukuran dari chip yang dipergunakan jauh lebih kecil dibandingkan yang ada di mainframe) membuat perkembangan sistem pakar menjadi sangat berubah. Kemunculan dari arsitektur client-server yang bersamaan dengan diperkenalkannya IBM PC membuat perusahaan pengembang sistem pakar memilih untuk mengubah orientasi pengembangan produknya dari yang semula ditujukan untuk lingkungan sistem mainframe berbasis Lisp ke sistem yang berbasis PC. Meskipun begitu, pada tahun 1982 sebuah program sistem pakar berbasis Lisp yang bernama SID (Synthesis of Integral Design) berhasil dikembangkan, dimana ujicobanya dilakukan pada komputer VAX 9000 buatan Digital Equipment Corporation (DEC). Sayangnya, kesuksesan itu tidak bertahan lama karena program tersebut dihentikan pasca selesainya proyek ujicoba sistem tersebut sebagai akibat dari rumitnya struktur program SID. Bahkan istilah sistem pakar (bersama dengan konsep AI yang dapat berdiri sendiri) kemudian tidak lagi dipergunakan di dalam kamus bahasa dunia IT sejak era 1990an dikarenakan pengembang sistem pakar kemudian memilih untuk mengubah konsep pengembangan sistem pakar menjadi pengembangan komponen berbasis pengetahuan untuk program-program standar, seiring dengan semakin pesatnya perkembangan komputer kelas PC dan juga komputer server yang dapat dijangkau oleh perusahaan dengan harga yang lebih murah ketimbang komputer mainframe pada saat itu.

B. Tujuan, Cara Merancang dan Basis Dasar Sistem Pakar

Struktur dasar dari sistem pakar | Original: pubs.cs.uct.ac.za
Sebuah sistem pakar dibuat dengan tujuan yaitu untuk membantu pengalihan sebuah keahlian atau ilmu pengetahuan dari seorang pakar yang menguasai bidang keahlian atau ilmu tersebut ke mereka yang bukan ahlinya. Hal ini dalam rangka untuk menjaga agar keahlian atau ilmu yang disimpan di dalam sistem tersebut dapat terjaga dan terus dapat diturunkan dari generasi ke generasi. Definisi dari pakar sendiri yaitu seseorang yang mampu memberikan penjelasan tentang berbagai hal yang berkaitan dengan suatu masalah maupun mempelajari hal-hal baru seputar topik masalah tersebut, serta menyusun sebuah pengetahuan yang baru (jika kondisinya diperlukan untuk menyelesaikan masalah). Adapun suatu pengetahuan yang disimpan di dalam sistem pakar disebut sebagai basis pengetahuan, dimana basis pengetahuan tersebut terdiri dari fakta dan aturan. Dalam merancang sebuah sistem pakar, tahapan-tahapan yang harus dilalui adalah sebagai berikut:
  1. Mengidentifikasi masalah dan kebutuhan
  2. Menentukan problema yang cocok
  3. Menentukan alternatif pilihan sistem
  4. Menghitung pengembalian biaya investasi pembuatan sistem pakar
  5. Memilih alat untuk pengembangan sistem pakar
  6. Merekayasa pengetahuan
  7. Merancang dasar dari sistem
  8. Melengkapi pengembangan sistem
  9. Menguji, mencari dan memperbaiki kesalahan pada sistem
  10. Memelihara sistem secara keseluruhan
Berbagai tahapan di atas sangat menentukan kesuksesan dari sistem pakar yang dibuat, karena apabila salah satu tahap terlewatkan maka sistem pakar tersebut tidak akan dapat bekerja dengan baik. Bahkan apabila tahap paling awal yaitu mengidentifikasi masalah dan kebutuhan tidak dilalui dengan baik (misalkan masalah yang telah dikaji ternyata tidak cocok untuk diselesaikan dengan bantuan sistem pakar), sebuah sistem pakar tidak dapat dibuat sama sekali. Oleh karenanya dalam proses merancang sistem pakar kesepuluh tahapan tersebut harus dilalui agar sistem pakar yang dirancang dapat bekerja secara maksimal. Terutama ketika menghitung pengembalian biaya investasi pembuatan sistem pakar hingga ke merekayasa pengetahuan, dibutuhkan ketelitian dan kehati-hatian yang sangat tinggi saat melakukan eksekusi dari tahap-tahap tersebut. Hal ini demi mewujudkan sebuah sistem pakar yang berfungsi secara maksimal dan juga bermanfaat bagi penggunanya, tanpa menghasilkan masalah baru di belakang hari.

Sebuah sistem pakar pada dasarnya memiliki dua jenis basis pengetahuan, yaitu:
  1. Penalaran berbasis aturan - di sini sistem dibuat untuk melakukan penalaran terhadap suatu hal dengan berdasarkan aturan yang telah dibuat. Aturannya sendiri berbentuk If - Then, yang dimana ketika dijalankan sistem akan terlebih dahulu memeriksa apakah fakta yang ada sudah sesuai dengan aturan tersebut atau tidak. Jika sesuai, maka sistem akan menampilkan hasil yang menyatakan bahwa fakta yang dimasukkan adalah benar. Namun jika tidak sesuai, sistem akan menampilkan hasil berupa pesan bahwa faktat tersebut salah. Adapun basis pengetahuan jenis ini dibuat jika terdapat beberapa pengetahuan pakar yang dijadikan acuan dalam penyelesaian suatu masalah, dan juga apabila dibutuhkan langkah-langkah yang berkaitan dengan penjelasan tentang pencapaian solusi terhadap masalah yang diselesaikan dengan sistem pakar tersebut.
  2. Penalaran berbasis kasus - untuk jenis ini solusi yang diisikan ke dalam basis pengetahuan dari sistem pakar adalah semua solusi yang telah dicapai sebelumnya untuk kemudian diturunkan menjadi sebuah solusi baru yang relevan dengan fakta yang sedang dikonsultasikan ke sistem pakar tersebut. Biasanya basis pengetahuan yang didasarkan pada penalaran berbasis kasus dibutuhkan ketika pengguna menginginkan adanya perbandingan antara fakta yang sedang dikonsultasikan dengan fakta-fakta lain yang memiliki kemiripan dengan fakta tersebut. Selain itu, bentuk ini juga dipergunakan jika sudah ada contoh situasi atau fakta tertentu yang telah dimasukkan di dalam basis pengetahuan tersebut.
Maka dapat dikatakan bahwa pola kerja dari sebuah sistem pakar dalam menyelesaikan masalah yang dikonsultasikan ke sistem tersebut bergantung dari jenis basis pengetahuan yang dipergunakan dalam menyusun sistem pakar tersebut. Tentunya basis pengetahuan sendiri berisi pengetahuan-pengetahuan yang dibutuhkan dalam menyelesaikan sebuah masalah, dan apa yang dimasukkan ke dalam basis pengetahuan tersebut menentukan bagaimana hasil dari proses penyelesaian masalah yang sedang dikonsultasikan ke sistem pakar tersebut.

C. Contoh Penerapan Sistem Pakar

Tampilan SWI-Prolog
Salah satu contoh paling sederhana dari program sistem pakar yang dapat ditemui dan dipergunakan oleh pengguna awam secara gratis yaitu program SWI-Prolog (SWI merupakan akronim dari Sociaal-Wetenschappelijke Informatica atau bahasa Inggrisnya yaitu Social Science Informatics). Program ini dirancang dan dibuat dengan menggunakan bahasa pemrograman Prolog yang telah teruji sebagai salah satu bahasa pemrograman yang mudah dipergunakan dalam membangun sebuah sistem kecerdasan buatan (Artificial Intelligence / AI). Secara umum pola kerja dari SWI-Prolog mengikuti teknik dasar dari Prolog itu sendiri, dimana program sistem pakar yang dirancang dengan menggunakan SWI-Prolog akan dieksekusi dengan cara menjalankan query di atas hubungan-hubungan fakta dan aturan yang telah didefinisikan di dalam program tersebut. Adapun SWI-Prolog sendiri juga dapat dipergunakan untuk membangun sebuah aplikasi berbasis web yang menggunakan web framework berbasis definition clause grammar. Ini memungkinkan seorang pengembang sistem pakar untuk dapat membangun sebuah sistem pakar yang berbasis online dan juga dapat diakses oleh siapapun, dimana saja dan kapan saja.

Selain itu sistem pakar juga semakin banyak dipergunakan pada tingkat yang lebih luas. Salah satunya yaitu pada perpustakaan, dimana sejak tahun 2004 akhir mulai banyak perpustakaan yang menggunakan sistem pakar untuk membantu pengunjung perpustakaan dalam mencari buku yang ingin dibaca tanpa harus menyebutkan judulnya secara lengkap, yang dimana sistem akan mencari judul buku yang memiliki kata-kata yang cocok dengan input pencarian yang diberikan oleh pengunjung perpustakaan. Penggunaan sistem pakar untuk perpustakaan sendiri tidak hanya ditemukan di Indonesia saja, namun penggunaan sistem pakar untuk perpustakaan juga marak di berbagai perpustakaan yang ada di seantero dunia. Hal ini disebabkan oleh prinsip logika yang dimiliki oleh sistem pakar yang memungkinkan adanya pemberian output berupa suatu solusi meskipun data yang dimasukkan sebagai input untuk proses pencarian solusinya sendiri tidaklah lenglap. Maka dapat dikatakan bahwa sistem pakar memberi kemudahan dalam mencari dan mendapatkan solusi dari suatu masalah dengan menggunakan pengetahuan yang tertanam di dalamnya.

D. Sumber:

1. Magdalena, Merry. 2005. Kecerdasan Buatan Kini Hadir di Perpustakaan. http://lipi.go.id/berita/kecerdasan-buatan-kini-hadir-di-perpustakaan/731. 2 November 2017.
2. Jackson, Peter (1998), Introduction To Expert Systems (3 ed.), Addison Wesley, p. 2, ISBN 978-0-201-87686-4
3. Russell, Stuart; Norvig, Peter (1995). Artificial Intelligence: A Modern Approach. Simon & Schuster. pp. 22–23. ISBN 0-13-103805-2.
4. University of Missouri-St.Louis. Expert Systems and Applied Artificial Intelligence. 2 November 2017. http://www.umsl.edu/~joshik/msis480/chapt11.htm
5. Carl S. Gibson, et al, VAX 9000 SERIES, Digital Technical Journal of Digital Equipment Corporation, Volume 2, Number 4, Fall 1990, pp118-129.
6. Leondes, Cornelius T. (2002). Expert systems: the technology of knowledge management and decision making for the 21st century. pp. 1–22. ISBN 978-0-12-443880-4.
7. Durkin, J. Expert Systems: Catalog of Applications. Intelligent Computer Systems, Inc., Akron, OH, 1993.
8. A. Michiels. Introduction A Prolog: Et Au Traitement Du Langage Naturel. http://promethee.philo.ulg.ac.be/engdep1/download/prolog/htm_docs/prolog.htm. 3 November 2017
9. Kowalski, R. A. (1988). "The early years of logic programming". Communications of the ACM. 31: 38.
10. Colmerauer, A.; Roussel, P. (1993). "The birth of Prolog". ACM SIGPLAN Notices. 28 (3): 37.

11. Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 1–10. ISBN 0-471-15325-7.
12. Dahria, Muhammad. 2011. Pengembangan Sistem Pakar Dalam Membangun Suatu Aplikasi. https://lppm.trigunadharma.ac.id/public/fileJurnal/hp633-Jurnal-DAR-Sistem%20Pakar.pdf. 5 November 2017.
13. Clocksin, William F.; Mellish, Christopher S. (2003). Programming in Prolog. Berlin ; New York: Springer-Verlag.
14. Ogborn, Anne. 2015. "Tutorial — Creating Web Applications in SWI-Prolog". http://www.pathwayslms.com/swipltuts/html/index.html. 8 November 2017
15.  Lloyd, J. W. (1984). Foundations of Logic Programming. Berlin: Springer-Verlag.

Sunday, October 29, 2017

Tugas Grafik Komputer dan Pengolahan Citra: Membuat Garis Menggunakan Java dan OpenGL


Pada kesempatan kali ini penulis membuat sebuah tugas yang dimana tugasnya yaitu membuat sebuah program sederhana yang dapat menggambar garis horizontal, vertikal dan diagonal dengan berdasarkan input titik awal garis dan titik akhir garis dari pengguna, dimana program ini memanfaatkan library grafis OpenGL sebagai library untuk menampilkan outputnya di layar monitor. Bahasa pemrograman yang dipergunakan yaitu Java, dengan pembuatannya menggunakan program NetBeans versi 8.2. Adapun untuk library penghubung yang dipergunakan dalam menghubungkan Java dan OpenGL pada program ini yaitu LWJGL (LightWeight Java Game Library) versi 2.9.1.

Program ini dibuat dengan menggunakan empat file kelas Java, yaitu:
  1. Pr_Main.java - file kelas utama yang menampilkan menu utama program.
  2. Pr_Horizontal.java - file kelas yang berfungsi untuk menerima input dan menampilkan output garis horizontal (garis mendatar).
  3. Pr_Vertikal.java - file kelas yang berfungsi untuk menerima input dan menampilkan output garis vertikal (garis tegak lurus).
  4. Pr_Diagonal.java - file kelas yang berfungsi untuk menerima input dan menampilkan output garis diagonal (garis miring).
Seperti yang telah disebutkan di awal, program ini menggambar garis dengan berdasarkan titik awal dan titik akhir garis yang dimasukkan oleh pengguna. Maka dari sini dapat dikatakan bahwa program tersebut harus menggambar garis di layar dari suatu titik ke titik lain secara jelas dengan berdasarkan permintaan dari pengguna (dalam hal ini yaitu input titik awal dan titik akhir garis dari pengguna).

Di bawah ini adalah link untuk mengunduh program dan source code serta file dokumentasinya:
  1. Program + Source Code: klik di sini
  2. Dokumentasi + User Guide: klik di sini
Sekian dan terima kasih atas kunjungannya ke blog ini!

Saturday, October 21, 2017

PEAS: Sebuah Definisi

Kategori: Tulisan

Dalam tulisan kali ini akan dijelaskan tentang definisi dari pola PEAS yang dipergunakan dalam intelligent agent.

A. Definisi

PEAS merupakan sebuah pola pendeskripsian lingkungan kerja dari intelligent agent yang berfungsi untuk menjelaskan berbagai parameter yang tepat dalam mendefinisikan intelligent agent. Istilah ini merupakan kependekan dari Performance, Environment, Actuators dan Sensors, dimana keempat hal ini secara harafiah dijelaskan sebagai kumpulan parameter masalah yang diperlukan dalam proses pendefinisian dari suatu intelligent agent yang dapat menyelesaikan masalah-masalah tersebut.

Dalam praktiknya, PEAS dijadikan sebagai model utama dalam menentukan pendefinisian sebuah rational agent yang ideal. Hal ini dikarenakan apa yang dijabarkan dalam pola PEAS mencakup poin-poin penting dari sebuah masalah yang harus diselesaikan oleh agent tersebut secara rasional dan juga proporsional. Maka dari sini dapat dikatakan bahwa agent akan menyelesaikan semua permasalahan yang ditemui berdasarkan pada poin permasalahan yang ditentukan menggunakan parameter dari PEAS, sehingga masalah-masalah yang ditemui dapat diselesaikan secara baik.

Secara dasar, PEAS sendiri dapat dijelaskan menjadi seperti berikut:
  1. Performance: di sini kinerja agent menjadi tolok ukur penentu dari derajat kesuksesan sebuah proses penyelesaian masalah.
  2. Environment: menentukan lingkungan yang dijadikan sebagai sasaran dari proses penyelesaian masalah oleh sang agent.
  3. Actuators: perangkat yang digunakan agent untuk menyalurkan usahanya sangat menentukan seberapa besar usaha yang dibutuhkan dalam memecahkan masalah.
  4. Sensors: agent akan menentukan solusi yang dibutuhkan untuk memecahkan suatu masalah dengan berdasarkan apa yang ditangkap oleh sensor yang dimiliki agent tersebut.
Keempat poin di atas apabila dicontohkan pengaplikasiannya maka dapat seperti berikut ini (dengan contoh agent yaitu sistem diagnosa medis):
  1. Performance: kesembuhan pasien pasca pengobatan, biaya perawatan yang minim dan sengketa dalam proses pengobatan
  2. Environment: pasien, rumah sakit dan dokter
  3. Actuators: layar monitor untuk komunikasi
  4. Sensors: keyboard
Maka di sini dapat dikatakan bahwa penggunaan prinsip PEAS sebagai sebuah metode dalam mendefinisikan intelligent agent sangatlah berguna untuk menentukan ketepatan dan keefektifan kinerja dari agent secara baik.

B. Sumber

http://www4.ncsu.edu/~stamant/411/lectures/02-agents/peas.pdf
https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_agents_and_environments.htm
http://www.cs.csi.cuny.edu/~imberman/ai/Intelligent%20Agents.pdf
https://web.northeastern.edu/magy/courses/AI/lectures/IA.pdf
http://maukar.staff.gunadarma.ac.id/Downloads/files/42871/Agent.pdf
Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2, chpt. 2

Intelligent Agents: Definisi, Konsep dan Contoh

Kategori: Tulisan

Dalam tulisan kali ini akan dijelaskan tentang Intelligent Agents, mulai dari definisi, konsep dan contohnya dalam kehidupan sehari-hari.

A. Definisi

Secara umum Intelligent Agents dapat dipahami sebagai sebuah entitas berdiri sendiri yang bekerja dengan cara melakukan observasi terhadap lingkungan sekitar melalui sensor dan bertindak terhadap lingkungan melalui aktuator dalam mengarahkan aktivitasnya untuk mencapai tujuannya. Jika dilihat dari siapa yang menjadi agen, maka apa yang menjadi sensor dan aktuatornya dapat dijelaskan sebagai berikut:
  1. Manusia - sensor: mata, telinga dan organ panca indera lainnya, aktuator: tangan, kaki, mulut dan lainnya.
  2. Robot - sensor: kamera, alat penjejak inframerah, aktuator: motor penggerak yang ditanamkan ke dalam sistem.
  3. Perangkat lunak - sensor: input dari keyboard, pembacaan isi file dan penerimaan paket pada jaringan, aktuator: tampilan pada layar, penulisan file dan pengiriman paket pada jaringan.
Apabila dijelaskan dalam diagram, maka secara dasar pola dari intelligent agent menjadi seperti di gambar berikut ini:
Pola kerja dari intelligent agent terhadap lingkungan sekitarnya
Sehingga dapat dikatakan bahwa intelligent agent berfungsi sebagai agen yang memetakan persepsi yang diterima dari lingkungan untuk kemudian diproses menjadi tindakan yang akan diterapkan kepada lingkungan. Adapun fungsinya sendiri yaitu [f: P* -> A], dengan simbol P* menggambarkan persepsi, dan A menggambarkan sang agent itu sendiri. Ada beberapa tipe dari sebuah agent dalam praktik sehari-harinya, yaitu:
  1. Goal-based - mementingkan tujuan tanpa mensyaratkan cara-cara tertentu dalam menempuh jalan untuk mencapai tujuannya, sehingga satu tujuan dapat dicapai dengan cara yang berbeda.
  2. Utility-based - membutuhkan tujuan untuk mengetahui situasi mana yang diharapkan.
  3. Learning - agent akan mempelajari lingkungan terlebih dahulu sebelum kemudian melakukan tindakan untuk mencapai tujuannya.
  4. Simple reflex - dalam prosesnya agent akan melakukan tindakan berdasarkan persepsi yang diterima hanya berdasarkan apa yang dilihatnya.
  5. Model-based reflex - sebelum melakukan tindakan, agent terlebih dahulu melihat contoh dari tindakan yang seharusnya dilakukan terhadap lingkungan.
Sedangkan untuk jenis dari lingkungannya sendiri, terdapat beberapa jenis lingkungan dalam hubungan intelligence yang dimana jenisnya yaitu sebagai berikut:
  1. Fully observable
  2. Deterministic
  3. Episodic
  4. Static
  5. Discrete
  6. Single agent
B. Konsep

Dalam intelligent agent, terdapat konsep rasionalitas yang mencerminkan tentang bagaimana sebuah agent dapat bekerja secara benar dan ideal. Konsep rasionalitas ini menetapkan standar tentang pengukuran kemampuan dari agent dalam menyelesaikan masalah secara objektif dan rasional, yang dimana kedua poin ini adalah poin yang paling penting dalam menentukan kesempurnaan hasil pekerjaan dari agent tersebut. Pada konsep rasionalitas intelligent agent, yang dapat dianggap sebagai yang benar adalah agent yang paling sukses dalam menyelesaikan seluruh pekerjaannya, dengan 4 hal berikut menjadi penentu dari kesuksesan tersebut:
  1. Kemampuan yang terukur
  2. Pengetahuan tentang lingkungan yang didapat sebelumnya
  3. Tindakan yang dilakukan
  4. Urutan persepsi dalam penyelesaian pekerjaan
Adapun agent dapat melakukan tindakannya sesuai dengan yang diharapkan untuk memodifikasi persepsi yang akan datang dengan memanfaatkan informasi yang didapat dari tindakan yang telah dilakukan sebelumnya. Informasi-informasi yang bermanfaat tersebut menentukan seberapa besar pengalaman yang dimiliki oleh agent tersebut, sehingga ke depannya agent dapat bekerja secara otonom dengan mengandalkan pengalaman serta kemampuan untuk belajar dan beradaptasi dengan lingkungan yang senantiasa terus berubah dari waktu ke waktu.

C. Contoh

Ada beberapa contoh dari intelligent agent yang dapat ditemui di kehidupan sehari-hari, dengan beberapa di antaranya yaitu:
  • Sistem Diagnosa Medis
    • Performance measure: kesembuhan pasien, biaya perawatan yang minim dan sengketa
    • Environment: pasien, rumah sakit, dokter
    • Actuators: layar monitor
    • Sensors: keyboard
  • Robot Pabrik Penjamin Mutu
    • Performance measure: persentase jumlah komponen yang diletakkan secara benar
    • Environment: ban berjalan, komponen yang diuji, wadah tampungan
    • Actuators: gerak lengan dan tangan robot
    • Sensors: kamera, sensor fisik
Dari beberapa contoh di atas ada sebuah pola pendeskripsian lingkungan kerja dari intelligent agent yang dinamakan sebagai PEAS, yaitu Performance, Environment, Actuators dan Sensors. Definisi dari pola ini akan dijelaskan di entry berikutnya dari blog ini.

D. Sumber

http://maukar.staff.gunadarma.ac.id/Downloads/files/42871/Agent.pdf
Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2, chpt. 2
http://artikel-teknologi-informasi.blogspot.co.id/2012/11/pengertian-agent-pada-ai-artificial.html
http://share.its.ac.id/pluginfile.php/1358/mod_resource/content/1/2._Agent_Cerdas.pdf
http://www.academia.edu/8327033/SWARM_INTELLIGENCE_INTELLIGENT_AGENT_Penerapan_Intelligent_Agent_Pada_E-Commerce

Saturday, September 30, 2017

Artificial Intelligence: Sejarah, Definisi dan Contoh Penerapan

Kategori: Tulisan

Post kali ini akan membahas seputar tentang Artificial Intelligence (AI), atau yang dalam bahasa Indonesia disebut sebagai "kecerdasan buatan". Adapun pembahasannya berkisar pada sejarah, definisi dan contoh dari penerapan AI pada teknologi yang dipergunakan di kehidupan sehari-hari.

A. Sejarah AI

Konsep terawal dari AI sudah dikenal jauh sebelum ilmu komputer muncul dan berkembang di dunia, dimana konsep AI sendiri berawal dari mitos, fiksi dan juga spekulasi yang beredar di antara kaum manusia pada masa lalu. Salah satunya seperti robot emas dari Hephaestus dan Galatea yang muncul dalam kisah mitologi Yunani pada masa dahulu kala, yang dimana ini menggambarkan bahwa manusia pada masa lalu sudah membayangkan keberadaan alat-alat mekanik yang dapat bekerja selayaknya seorang manusia. Dengan kata lain, konsep AI pertama kali muncul di dunia sebagai konsep manusia buatan (artificial human) dan mesin yang dapat berpikir (thinking machine) dengan cara yang mirip seperti cara berpikir manusia.

Pada abad ke-19, pemikiran tentang manusia buatan dan mesin yang dapat berpikir dikembangkan di dalam cerita-cerita fiksi seperti Frankenstein (karangan Mary Shelly), atau dalam spekulasi seperti Darwin Among the Machines (karangan Samuel Butler). Selain itu, L. Frank Baum (penulis cerita The Wonderful Wizard of Oz) membuat pula berbagai karakter fiktif manusia mekanik (yang di kemudian hari disebut robot), salah satunya karakter bernama Tiktok pada tahun 1907. Beliau mendeskripsikan karakter tersebut sebagai manusia mekanik yang "sangat responsif, dapat berpikir dan berbicara selayaknya seorang manusia secara sempurna". Alhasil penggambaran fiksi ini menjadi titik awal dari penggambaran tentang wujud akhir yang dituju dalam pengembangan AI yang dilakukan oleh para peneliti.

Dengan penemuan berbagai teknologi alat elektronik pada awal abad ke-20 serta pengembangan teknologi komputer pada periode 1940-an, kedua hal tersebut memicu dimulainya pengembangan dari konsep AI yang kita kenal pada masa sekarang ini. Istilah AI sendiri pertama kali dikemukakan oleh John McCarthy dalam konferensi yang diadakan di Dartmouth College pada tahun 1956, namun pemikiran terhadap AI sudah dimulai sejak tahun 1945, dimana Vannevar Bush mengemukakan tentang "sistem yang dapat memperkuat pengetahuan dan pemahaman seseorang" pada karyanya yang berjudul As We May Think. Selain itu Alan Turing menulis sebuah paper yang diterbitkan di jurnal Mind 49 yang terbit pada 1950 dengan topik utamanya berkisar pada konsep yang menyatakan bahwa "sebuah mesin dapat mensimulasikan seorang manusia dan kemampuannya untuk melakukan tindakan yang membutuhkan kecerdasan, salah satunya yaitu bermain catur".

Awalnya pada saat itu usaha yang dilakukan untuk mengembangkan AI lebih mengarah ke usaha untuk mengaplikasikan teknik robotika ke mesin secara mekanika, dibanding dengan menciptakan sistem yang dapat mengendalikan pergerakan dari mesin tersebut berdasarkan pemrograman yang dibuat untuk membentuk sejenis kecerdasan buatan. Walaupun begitu, dimulainya penggunaan komputer di institusi pendidikan serta badan pemerintahan secara luas sejak periode 1950-an membuat jumlah dari penelitian yang dilakukan untuk mengembangkan AI yang berdasarkan pada teknologi komputer meningkat secara tajam. Bahkan pada akhirnya pengembangan robot pun kemudian dilakukan bersama dengan pengembangan AI, sehingga terwujudlah perangkat yang diimpikan sejak zaman dahulu kala, yaitu mesin yang dapat bekerja secara otomatis dengan menggunakan kecerdasan buatan manusia yang ditanamkan di dalam mesin tersebut.

Jika diurutkan dalam daftar linimasa, maka beberapa peristiwa yang berkaitan dengan pengembangan AI dapat diurutkan sebagai berikut:
  1. 1956 - John McCarthy memperkenalkan istilah AI sebagai topik dalam Dartmouth Conference.
  2. 1957 - General Problem Solver (GPS) didemonstrasikan oleh Newell, Shaw dan Simon.
  3. 1963 - Program ANALOGY yang dibuat oleh Thomas Evans sebagai bagian dari karya untuk meraih gelar PhD di MIT sukses mendemonstrasikan percobaan yang menyimpulkan bahwa komputer dapat menyelesaikan masalah analogi yang sama seperti yang diberikan pada tes IQ.
  4. 1964 - Disertasi milik Danny Bobrow di MIT menunjukkan bahwa kemampuan komputer untuk dapat memahami bahasa natural secara baik memungkinkannya untuk menyelesaikan masalah aljabar dengan benar.
  5. 1967 - Program Dendral berhasil mendemonstrasikan proses penafsiran spektrum massa senyawa kimia organik. Program ini kemudian ditandai sebagai program berbasis pengetahuan paling pertama yang sukses dari segi bidang ilmu pengetahuan. Pada tahun yang sama, Joel Moses berhasil mendemonstrasikan program Macsyma yang berfungsi untuk memecahkan masalah penalaran simbolis dalam perhitungan integrasi matematika, dan program ini ditandai sebagai program berbasis pengetahuan paling pertama yang sukses dari bidang matematika.
  6. 1969 - Robot Shakey buatan SRI mendemonstrasikan penggabungan gerak, persepsi dan pemecahan masalah secara otomatis. Pada tahun yang sama, Roger Schank mendefinisikan model ketergantungan konseptual untuk pemahaman bahasa alamiah, dengan pengembangan lanjutan oleh Robert Wilensky dan Wendy Lehnert untuk model pemahaman cerita, dan Janet Kolodner untuk model pemahaman terhadap ingatan.
  7. 1973 - Grup The Assembly Robotics yang berlokasi di Edinburgh University membangun robot bernama Freddy yang dibuat untuk dapat menggunakan penglihatan dalam mengalokasikan dan membangun model dengan menggunakan prinsip kendali kecerdasan buatan.
  8. 1976 - Randall Davis mendemonstrasikan kekuatan dari penalaran tingkat meta dalam disertasi PhDnya di Stanford.
  9. 1979 - Hans Moravec sukses membuat dan mengujicoba Stanford Cart sebagai kendaraan tak berawak dengan kendali komputer pertama di dunia yang mampu melintasi ruangan yang dipenuhi dengan kursi serta mengelilingi laboratorium AI milik Stanford.
  10. 1981 - Danny Hillis merancang mesin koneksi yang merupakan sebuah arsitektur paralel berukuran masif yang membawa kekuatan baru terhadap pengembangan AI, dan juga terhadap pengembangan komputer pada umumnya.
  11. 1985 - Harold Cohen mendemonstrasikan program gambar otonom bernama Aaron yang telah dikembangkan oleh dirinya selama lebih dari sepuluh tahun dalam Konferensi Nasional AAAI, bersama dengan hasil karya selanjutnya yang menunjukkan perkembangan besar.
  12. 1989 - Dean Pomerleau dari CMU menciptakan ALVINN (An Autonomous Land Vehicle in a Neural Network), yang kemudian dikembangkan secara lebih lanjut menjadi sebuah sistem yang dapat mengendarai mobil dalam jarak tempuh jarak jauh di bawah kendali komputer.
  13. 1990-an - AI mengalami perkembangan sangat pesat, dengan jumlah demonstrasi ujicoba sistem berbasis AI yang meningkat tajam. Demonstrasi yang dilakukan di antaranya yaitu dalam bidang ilmu pembelajaran mesin, penalaran berbasis kasus, perencanaan multi-agen, penjadwalan, penalaran yang tidak pasti, data mining, realitas maya, permainan, dan berbagai bidang pembahasan lainnya.
  14. 1997 - program catur Deep Blue mengalahkan juara pertandingan olahraga catur tingkat dunia pada saat itu (Garry Kasparov) dalam sebuah pertandingan yang disaksikan secara luas.
  15. Akhir 1990-an - Program ekstrasi informasi yang berbasis AI seperti web crawler menjadi sangat penting dengan semakin berkembangnya World Wide Web (WWW).
  16. 2000 - Robot Nomad menjelajahi daerah terpencil dari Antartika untuk mencari contoh dari meteorit yang jatuh di sana.

B. Definisi AI

Ilustrasi penggambaran AI (sumber: videoblocks.com)

Sesuai dengan namanya, AI tersusun atas kata "artificial" (buatan) dan "intelligence" (kecerdasan), dimana kedua kata tersebut dapat dimaknai secara umum sebagai "sebuah konsep kecerdasan yang dibuat oleh manusia untuk memperkaya fungsi dari sebuah mesin". Namun jika diteliti, terdapat perbedaan definisi dari AI itu sendiri, di antaranya yaitu:
  1. Wilayah studi dari ilmu komputer yang berperan dalam pengembangan komputer yang dapat melakukan tindakan yang dilakukan oleh manusia, seperti belajar, menyimpulkan dan memperbaiki diri.
  2. Konsep yang menyatakan bahwa mesin dapat ditingkatkan kinerjanya untuk memiliki beberapa kemampuan yang secara normal hanya dimiliki oleh manusia.
  3. Perpanjangan tangan dari kecerdasan manusia melalui penggunaan komputer, seperti halnya penggunaan peralatan mekanis sebagai perpanjangan tangan dari tenaga fisik manusia.
  4. Disiplin ilmu yang mendedikasikan seluruh kegiatannya secara penuh terhadap memahami prinsip yang memungkinkan berbagai tindakan kecerdasan untuk dapat terwujud pada sistem alami dan buatan, serta mengembangkan metode untuk mendesain dan menerapkan artifak cerdas yang berguna.
Adapun dalam pendefinisian dari AI itu sendiri terdapat empat pendekatan utama, yaitu:
  1. Sistem yang bertindak seperti manusia - AI dibuat dengan mengedepankan prinsip yang menyatakan bahwa sistem dapat melakukan hal-hal yang membutuhkan kecerdasan ketika dilakukan oleh seorang manusia.
  2. Sistem yang berpikir seperti manusia - dalam pendekatan ini pola yang dikedepankan untuk mengembangkan sebuah AI adalah sistem melakukan otomatisasi seluruh kegiatan yang berkaitan dengan pikiran seorang manusia.
  3. Sistem yang berpikir rasional - pola pendekatan ini menggambarkan bahwa AI merupakan sebuah studi tentang komputasi yang memungkinkan untuk melihat, berpikir dan bertindak.
  4. Sistem yang bertindak rasional - prinsip dasar yang dijadikan pendekatan yaitu menetapkan AI sebagai cabang ilmu komputer yang memperhatikan otomasi terhadap perilaku cerdas dari suatu sistem.
Keempat pendekatan di atas tentu menggambarkan tujuan yang diinginkan dalam pengembangan AI, namun pada kenyataannya sistem AI pada masa sekarang lebih condong menggunakan pendekatan nomor 4. Hal ini dikarenakan sistem berbasis perilaku dapat diuji secara keilmuan dengan lebih mudah ketimbang sistem berbasis pikiran, dan pengujiannya sendiri didasarkan pada seberapa jauh kemampuan sistem AI untuk menyelesaikan sebuah masalah aktual dan juga menyelesaikan masalah tanpa harus sepenuhnya meniru pikiran manusia dalam mencari jalan keluarnya.

C. Contoh Pengaplikasian AI

Contoh antarmuka aplikasi Siri yang berbasis AI (sumber: iphonehacks.com)

Pada masa sekarang ini terdapat banyak contoh dari proses pengaplikasian konsep AI dan segala ide yang berkaitan dengannya dalam kehidupan sehari-hari, terutama dalam bidang teknologi informasi. Di bawah ini adalah beberapa contoh dari pengaplikasian AI yang dapat ditemui pada masa kini:
  1. Siri - aplikasi asisten pribadi yang dikembangkan oleh Apple ini mempergunakan konsep AI sebagai dasar dalam pengembangan sistem penunjang aktivitas pribadi yang dapat membantu sang pengguna dalam menjalani aktivitas sehari-hari. Adapun fungsi yang ditanamkan pada Siri yaitu mencari informasi, menunjukkan arah, menambahkan event ke dalam kalender dan sebagainya. Dengan menggunakan AI yang diaktifkan oleh suara, pengguna cukup mengucapkan perintah yang ingin dikatakan lalu Siri akan bekerja secara otomatis untuk melayani perintah yang diberikan oleh pengguna.
  2. Amazon.com - sistem AI yang dikembangkan oleh tim pengembang IT dari situs web jual-beli barang berbasis daring Amazon.com memungkinkan pengelola untuk dapat memberikan rekomendasi tentang suatu barang terhadap pengunjung dari situs tersebut dengan berdasarkan perilaku yang dilakukan oleh sang pengunjung ketika menjelajahi situs Amazon.com. Prinsip ini tentunya memudahkan pengelola Amazon.com dalam mengetahui barang apa yang diminati oleh pengunjung situs tersebut.
  3. Netflix - penggunaan AI dalam sistem utama Netflix yaitu untuk memberikan rekomendasi judul suatu film kepada penonton dengan berdasarkan reaksi terhadap film yang ditonton sebelumnya. Adapun algoritma dari sistem AI milik Netflix sendiri dibuat untuk dapat mengambil judul film sesuai dengan reaksi dari penonton terhadap film sebelumnya dari database mereka yang berisi ribuan judul film dari masa ke masa, yang tentunya algoritma program AI itu sendiri dibuat untuk memiliki keakurasian yang sangat tinggi.
  4. Nest - untuk memprediksi kebutuhan penghangatan dan pendinginan secara baik, program AI yang ditanamkan ke dalam termostat pintar ini mempergunakan algoritma berbasis perilaku yang dapat menyesuaikan suhu dari suatu ruangan (baik itu di rumah atau di kantor) dengan kebutuhan pribadi dari sang pengguna. Dengan penggunaan algoritma AI yang berbasis perilaku, suhu ruangan dapat diatur oleh pengguna tanpa harus repot-repot menekan tombol pengatur suhu ruangan (baik itu pendingin atau penghangat ruangan) dalam frekuensi yang sangat sering, karena perilaku dari pengguna ketika berada di dalam ruangan tersebut menjadi parameter utama dari penentuan suhu ruangan oleh Nest.
Keempat contoh di atas membuktikan bahwa AI sangatlah membantu manusia untuk dapat menyelesaikan masalah yang sebelumnya tidak dapat diselesaikan oleh tangan manusia saja. Hal ini dikarenakan logika kecerdasan buatan yang ditanamkan di dalam sistem berbasis AI memungkinkan suatu perangkat (baik itu perangkat keras atau perangkat lunak) untuk dapat mengatur kinerja dirinya sendiri ataupun melayani manusia yang membutuhkan keberadaan perangkat tersebut, dengan pola kerja yang dapat mengurangi atau bahkan mengeliminasi campur tangan manusia terhadap operasional perangkat itu sendiri (di luar kondisi darurat). Sehingga dengan adanya AI ini manusia dapat menjalani kehidupan secara lebih nyaman dan lebih teratur tanpa harus terhalang oleh hal-hal yang dapat mengganggu aktivitas mereka.

D. Sumber

1. McCorduck, Pamela (2004), Machines Who Think (2nd ed.), Natick, MA: A. K. Peters, Ltd., ISBN 1-56881-205-1, OCLC 52197627
2. https://courses.cs.washington.edu/courses/csep590/06au/projects/history-ai.pdf
3. http://nzetc.victoria.ac.nz/tm/scholarly/tei-ButFir-t1-g1-t1-g1-t4-body.html
4. https://www.aaai.org/ojs/index.php/aimagazine/article/download/1848/1746
5. https://www.researchgate.net/publication/220605666_A_Very_Brief_History_of_Artificial_Intelligence
6. http://www.eolss.net/sample-chapters/c15/e6-44.pdf
7. https://aiukswgkelompok11.wordpress.com/definisi-artificial-intelligence/
8. http://homepage.divms.uiowa.edu/~hzhang/c145/notes/chap1.pdf
9. https://www.forbes.com/sites/robertadams/2017/01/10/10-powerful-examples-of-artificial-intelligence-in-use-today/2/#7409ac4e3c8b
10. https://www.slideshare.net/iqvis/9-examples-of-artificial-intelligence-in-use-today-71185536

Monday, June 19, 2017

Sekilas Tentang Service Level Agreement dan Operational Level Agreement

Untuk kesempatan kali ini penulis akan membahas tentang Service Level Agreement (SLA) dan Operational Level Agreement (OLA), berikut dengan contoh kasus yang terdapat pada perusahaan yang berkecimpung di dunia teknologi informasi (TI).

A. Service Level Agreement

Gambaran dari Service Level Agreement (sumber: kumitukonsultan.com/wp-content/uploads/2016/04/service-level-agreement-kumitu.jpg)

Secara sederhana, Service Level Agreement atau lebih sering disingkat sebagai SLA adalah suatu kontrak resmi (bersifat formal) pada tingkat layanan yang berisi poin-poin kesepakatan antara pihak penjual produk atau layanan dan pihak pelanggan yang menggunakan produk atau layanan tersebut. Biasanya kesepakatan tersebut dapat dinegosiasikan antar kedua pihak untuk mengidentifikasikan harapan, tanggung jawab dan memfasilitasi komunikasi antar kedua pihak yang diukur dengan jangka waktu tertentu.

SLA sangat diperlukan untuk menjembatani kedua pihak tersebut, karena antara keduanya dapat saja terjadi perbedaan dalam sisi harapan. Pada umumnya, seorang pelanggan menginginkan tersedianya produk atau jasa yang ingin dia nikmati dalam waktu cepat, sedangkan pihak penyedia membutuhkan waktu untuk dapat mewujudkan ketersediaan tersebut. Di sinilah SLA berperan sebagai jembatan antar kedua pihak, dengan fungsi utama dari SLA tersebut yaitu untuk menjembatani perbedaan harapan, mendefinisikan kewenangan dan tanggung jawab dari masing-masing pihak. Selain itu, SLA juga berfungsi sebagai alat ukur dari efektifitas penyediaan produk atau layanan yang ditawarkan oleh pihak yang menyediakan produk atau layanan tersebut.

Tujuan dari disusunnya SLA sendiri di antaranya yaitu:
  • Agar pihak terkait dapat mematuhi persyaratan yang telah dituliskan di dalam kontrak
  • Meningkatkan kepercayaan dan kepuasan dari pengguna
  • Mengawasi kinerja dari kelompok tertentu, individu atau sub-kontraktor
  • Untuk menetapkan harapan pengguna secara tepat mengenai tingkat responsibilitas dari penyedia produk atau layanan
  • Memungkinkan adanya perbaikan sistem untuk keandalan dan stabilitas produk atau layanan
  • Untuk memungkinkan pemberian sanksi kepada pihak yang tidak memiliki kinerja yang baik
  • Untuk menghasilkan data operasional yang akan dianalisa sebagai bagian dari inisiasi suatu tindakan preventif terhadap masalah yang akan terjadi
  • Untuk menunjukkan kinerja dan meningkatkan persepsi nilai fungsi TI dalam bisnis
Dalam SLA yang berlaku di dunia TI, ada beberapa poin yang menentukan apakah produk atau layanan yang ditawarkan pihak penjual telah memenuhi keinginan pengguna, yang di antaranya yaitu:
  • Ketersediaan dari sebuah layanan kepada pengguna
  • Pengambilan tolok ukur dari kinerja suatu sistem secara periodik untuk dibandingkan dengan kinerja sistem yang sebenarnya
  • Waktu pemberian respon dari aplikasi terhadap pengguna
  • Penetapan jadwal untuk memberitahukan pengguna tentang perubahan di sisi jaringan yang dapat berpengaruh terhadap aktivitas pengguna
Poin-poin di atas sangatlah penting untuk diperhatikan oleh kedua belah pihak yang terkait dengan SLA tersebut (baik itu pihak penyedia produk atau layanan maupun pihak pengguna). Ini dikarenakan apa yang tertulis di dalam kontrak SLA sangat menentukan bagaimana langkah yang tepat untuk memenuhi keinginan pengguna secara maksimal, sekaligus memungkinkan penyedia layanan untuk dapat menyelesaikan masalah yang terjadi selama pelaksanaan dari proses yang ditujukan untuk memenuhi keinginan pengguna.

Ketika membuat SLA, ada lima unsur yang harus diperhatikan, yaitu:
  • Supplier - dalam dunia IT, pihak supplier yang dimaksud yaitu mereka yang merupakan penyedia dari produk atau jasa layanan IT.
  • Input - merujuk kepada penyediaan dari berbagai sumber daya yang dibutuhkan untuk menyediakan produk atau layanan tersebut kepada pengguna.
  • Proses - berbagai proses yang terdapat di unsur ini memiliki tujuan yaitu untuk menghasilkan produk atau layanan IT yang selanjutnya akan ditawarkan kepada pengguna. Adapun prosesnya yaitu Proses Utama (contoh: menyusun kode utama program atau membuat desain tampilan suatu aplikasi), Proses Pendukung (contoh: menambahkan fungsi-fungsi pelengkap ke dalam aplikasi yang sedang dibuat) dan Proses Manajemen (contoh: menguji aplikasi yang dihasilkan secara terperinci untuk mencari kekurangan yang dapat diperbaiki sebelum akhirnya diberikan kepada pengguna).
  • Output - unsur ini mencakup semua produk atau layanan IT yang telah dihasilkan dari suatu proses
  • Customer - pihak yang membutuhkan atau menerima produk atau layanan IT yang diberikan oleh pihak supplier dikategorikan ke dalam unsur ini
Kelima unsur di atas harus diposisikan dalam porsi yang saling seimbang demi menjamin hubungan yang baik antara penyedia produk atau layanan dengan pengguna. Apabila porsi kelimanya seimbang, maka akan tercipta kesinambungan yang baik dan ideal dalam hubungan antara penyedia produk atau layanan dengan pengguna untuk jangka waktu yang panjang. Adapun diagram aliran proses dari SLA antara lain yaitu:
  • Mengidentifikasi portofolio layanan
  • Mendefinisikan kontrak yang mendasar
  • Mengidentifikasi parameter penting layanan
  • Mendefinisikan Persetujuan Tingkat Pelayanan (SLA)
  • Mendefinisikan proses peningkatan
  • Memantau SLA yang terkait dengan transaksi
  • Mengidentifikasi kasus spesifik yang dibutuhkan untuk peningkatan
  • Melaksanakan proses peningkatan yang sesuai
  • Mengambil tindakan pencegahan atau perbaikan
  • Mencegah pelanggaran SLA yang mungkin terjadi
  • Melaporkan penyesuaian SLA secara keseluruhan
  • Mengulas kinerja terhadap SLA
  • Menentukan apakah tujuan SLA realistis dan dapat dicapai
  • Negosiasi ulang definisi layanan dan atau tingkat layanan dengan perusahaan
B. Operational Level Agreement

Gambaran Operational Level Agreement (sumber: help.heatsoftware.com/content/resources/images/services_ola.png)

Berdasarkan namanya, Operational Level Agreement (disingkat sebagai OLA) dapat didefinisikan sebagai suatu perjanjian antara beberapa grup yang menangani bidang TI dalam sebuah perusahaan, dengan isi dari perjanjian tersebut menyatakan tentang tanggungjawab antara tiap grup dalam mendukung grup-grup lainnya untuk penyediaan sebuah atau serangkaian layanan berbasis TI di dalam internal perusahaan tersebut. OLA didesain untuk dapat mengidentifikasi dan menyelesaikan masalah-masalah TI dengan cara mendefinisikan sebuah rangkaian kriteria dan layanan TI yang dimana tiap departemen bertanggungjawab terhadap hal-hal tersebut.

Ada beberapa perbedaan antara sebuah OLA dengan sebuah SLA, yang diantaranya yaitu:
  • SLA berfokus pada bagian pelayanan dari suatu perjanjian, sedangkan OLA berkisar di bidang teknik seperti perawatan dan sebagainya
  • SLA merupakan perjanjian yang menjembatani pihak pemberi layanan dan pihak pelanggan, sedangkan OLA berfungsi sebagai perjanjian antar pihak pendukung di dalam suatu institusi yang bersifa sebagai pendukung dari SLA
  • OLA memiliki konten yang bersifat lebih teknis ketimbang SLA
Umumnya OLA dipergunakan oleh perusahaan untuk:
  • Memfokuskan pada penilaian metrik kinerja diskrit seperti ketersediaan perangkat keras dan lunak
  • Menambahkan metrik untuk poin-poin kinerja tim pelayanan, waktu respons teknisi, serta kepuasan pelanggan terhadap pelayanan dari perusahaan
  • Menilai dampak ekonomi dari hilangnya sumber daya pada perusahaan
  • Mempublikasikan data statistik tentang kepuasan ke komunitas pengguna internal
Meskipun OLA bersifat sebagai sebuah perjanjian khusus internal perusahaan, namun OLA memiliki peran yang penting dalam pembuatan sebuah SLA. Hal ini dikarenakan OLA sangat membantu tim pendukung untuk dapat menjamin bahwa kegiatan pendukung yang dilakukan oleh tim tersebut dapat disesuaikan secara jelas dalam menyediakan SLA yang akan diberikan kepada calon pelanggan. Dengan kata lain, OLA tidak dapat menggantikan SLA, atau tidak hadir sama sekali di dalam proses pembuatan SLA. Apabila OLA tidak ada sama sekali, maka akan terjadi masalah dimana perusahaan tidak dapat membuat perjanjian yang bersifat menghubungkan antar tim pendukung dalam usaha untuk memberikan SLA kepada pelanggan secara tepat waktu.

C. Contoh Kasus

Jogjahost merupakan sebuah perusahaan TI yang berlokasi di kota Yogyakarta, dengan produk yang ditawarkan oleh perusahaan ini yaitu jasa pembuatan dan hosting dari nama domain situs web. Untuk memastikan bahwa pelayanan yang diberikan oleh perusahaan ini berada dalam tahap yang maksimal, maka perusahaan ini menetapkan SLA antara pihaknya dengan pelanggan, yang isinya tertera sebagai berikut:

1. SLA yang dibuat oleh Jogjahost hanya berlaku antara Jogjahost sebagai pihak penyedia jasa dan pelanggan yang terdaftar secara langsung di daftar pelanggan Jogjahost
2. Pelanggan dari reseller atau pihak lain yang secara tidak langsung menggunakan layanan Jogjahost namun tidak terdaftar langsung sebagai pelanggan tidak berhak mendapatkan SLA yang diberikan oleh Jogjahost sebagai penyedia

Adapun isi dari SLA yang diberikan oleh Jogjahost yaitu sebagai berikut (dengan pengubahan seperlunya):

1. Uptime 99% - Jaminan Uptime Konektivitas Internet

Jogjahost memberikan jaminan konektivitas internet pada host server sebesar 99% uptime per bulan di luar downtime akibat maintenance yang sebelumnya telah di umumkan melalui Email. Untuk server yang berlokasi di Amerika Serikat, pelanggan mendapatkan jaminan redundancy link ke berbagai backbone internasional, sedangkan untuk server yang berlokasi di Indonesia, pelanggan mendapatkan jaminan konektivitas internasional dan konektivitas langsung ke local exchange (IIX atau OIXP). Kegagalan terhadap penyediaan konektivitas internet oleh Jogjahost pada server hosting akibat gangguan jaringan dapat diklaim apabila berlangsung melebihi batas 1% dalam satu bulan dan terjadi dalam satu waktu, tidak termasuk akumulasi dari gangguan yang terjadi dibawah 1%.

2. Server - Jaminan Uptime Server

Jogjahost memberikan jaminan uptime server sebesar 99% uptime per bulan di luar downtime akibat perawatan yang sebelumnya telah diumumkan melalui surat elektronik. Untuk menjaga kinerja dari server, Jogjahost melakukan perawatan secara rutin pada akhir pekan. Selama masa perawatan, ada kemungkinan server akan direboot tanpa adanya notifikasi. Kegagalan terhadap penyediaan uptime server oleh Jogjahost dapat diklaim apabila berlangsung melebihi batas 1% dalam satu bulan dan terjadi dalam satu waktu, tidak termasuk akumulasi dari gangguan yang terjadi dibawah 1%.

3. Security - Jaminan Keamanan Data

Jogjahost tidak dapat menjamin terhadap isi dari akun hosting pelanggan yang meliputi file, database, email, dan pelanggan bertangung jawab penuh terhadap isi dari akun hosting milik pelanggan. Demi menjaga keamanan data pelanggan, Jogjahost memberikan backup file yang dibackup setiap minggu sekali, tetapi walaupun demikian Jogjahost tetap tidak dapat menjamin seluruh file backup dalam kondisi 100% sempurna. Layanan backup ini hanya diberikan untuk akun dengan maksimal penggunaan hosting sebesar 2GB.

4. Firewall

Untuk pagar keamanan paling depan Jogjahost menggunakan firewall. Pelanggan bisa saja tidak dapat mengakses situs milik pelanggan yang dikarenakan keberadaan dari firewall. Beberapa hal yang dapat mengakibatkan pelanggan terblokir oleh firewall milik Jogjahost:

a. Salah memasukan username dan password ke cpanel/webmail
b. Salah memasukan username dan password ke FTP
c. Koneksi internet anda secara otomatis terputus disaat sedang melakukan upload data melalui FTP
d. Koneksi internet anda secara otomatis berganti ganti IP saat mengakses cpanel/webmail dan juga FTP
e. Isi dari situs terblokir karena mengandung script yang dianggap berbahaya

Pelanggan yang tidak dapat mengakses situs dikarenakan firewall ini tidak termasuk dalam 1% maksimal jaminan uptime network dari Jogjahost

5. Klaim Kegagalan - Klaim Atas Kegagalan Jaminan

a, Klaim atas kegagalan jaminan di atas dapat di klaim dalam waktu maksimal 3 hari setelah terjadinya gangguan.
b. Klaim kegagalan uptime server dan uptime network harus disertai bukti hasil traceroute ke arah domain pelanggan dalam waktu terjadinya gangguan dan akan dilakukan crosscheck dengan data milik Jogjahost.
c. Jaringan milik Jogjahost tidak dapat di monitoring oleh layanan pihak ketiga seperti www.pingdom.com atau www.host-tracker.com, sehingga klaim yang menggunakan layanan seperti ini tidak diterima oleh Jogjahost
d. Klaim akan ditolak apabila terjadinya kegagalan atas Jaminan Uptime Konektivitas Internet disebabkan oleh pihak lain yang berada di luar tanggung jawab Jogjahost, termasuk dan tidak terbatas didalamnya :
  • Gangguan konektivitas internet pada ISP pelanggan
  • Gangguan konektivitas internet yang terjadi pada salah satu rute yang menjadi jalur konektivitas dari pelanggan ke server Jogjahost
  • Gangguan yang disebabkan oleh force majeure
  • Gangguan yang disebabkan oleh adanya gangguan yang ditimbulkan oleh pihak lain
e. Apabila gangguan yang diklaim oleh pelanggan datanya cocok dengan data milik Jogjahost, maka Jogjahost wajib mengembalikan biaya hosting selama 1 bulan penuh dalam bentuk uang atau dalam bentuk kompensasi lain yakni penambahan masa berlaku hosting selama 1 bulan. Klaim kegagalan jaminan otomatis akan batal apabila :
  • Account hosting pelanggan dinyatakan melanggar Terms of Service
  • Account hosting pelanggan telah di suspend atau dihapus
f. Klaim kegagalan layanan hanya berlaku untuk layanan hosting, Dedicated Server dan Virtual Private Server. Sedangkan layanan yang berhubungan dengan pihak ketiga seperti layanan registrasi nama domain dan layanan managed DNS dan domain forwarding yang bersifat gratis tidak dapat diklaim saat terjadi kegagalan layanan. Bagaimanapun juga Jogjahost akan berusaha sebaik-baiknya untuk menyampaikan masalah ini kepada pihak ketiga yang terkait

6. Pajak - Pemungutan Pajak

a. Setiap transaksi penjualan di Jogjahost dikenakan PPN sebesar 10%. Pelanggan dapat meminta kepada Jogjahost untuk mengirimkan faktur pajak dengan melalui email atau melalui surat fisik (dikenakan biaya pengiriman jika menggunakan surat fisik)
b. Untuk Instansi Pemerintah (prefix NPWP 00), jika total pembayaran (termasuk PPN) sejumlah lebih besar dari Rp. 1.000.000,-, maka bendahara instansi pemerintah tersebut wajib memungut, melakukan pembayaran, dan menyerahkan SSP lembar 1 dan 3 ke Jogjahost
c. Untuk Instansi Pemerintah (prefix NPWP 00), jika total pembayaran (termasuk PPN) sejumlah kurang dari Rp. 1.000.000,-, maka bendahara instansi pemerintah tersebut wajib melakukan pembayaran sesuai jumlah invoice yang telah ditambahkan PPN didalamnya. Jogjahost akan mengirimkan faktur dalam waktu 2 minggu setelah pembayaran diterima
d. Untuk informasi lebih lanjut mengenai pemungutan pajak, silahkan hubungi Jogjahost di nomor telepon 0274-8300046

7. Pembayaran - Billing dan Pembayaran

a. Semua layanan kecuali domain dan dedicated server kami berlakukan sistem pro rata, dimana seluruh tagihan akan jatuh tempo pada tangga 1 setiap bulanya.
b. Batas perhitungan pro rata untuk pembelian awal diterapkan sebelum tanggal 1-14 dan 14-akhir bulan akan dikenakan biaya bulan tersebut + bulan berikutnya jika memesan bulanan. Contoh:
  • Tanggal 5 April pelanggan memesan hosting seharga Rp. 100.000, maka tanggal 5 pelanggan berkewajiban membayar Rp83.3333, dan pada awal bulan Mei pelanggan mendapatkan tagihan full Rp100.000
  • Tanggal 20 April pelanggan memesan hosting seharga Rp. 100.000, maka tanggal 20 April pelanggan berkewajiban membayar Rp133.333, dan pelanggan tidak dikenakan tagihan pada bulan Mei. Tagihan akan diperoleh pada 1 Juni
c. Untuk layanan domain dan dedicated server akan mendapatkan tagihan sesuai dengan tanggal pemesanan
d. Jogjahost akan mengeluarkan tagihan pada email dan SMS kontak yang terdaftar pada sistem billing Jogjahost 14 hari sebelum tagihan jatuh tempo.
e. Domain yang expire secara otomatis akan di redirect oleh pihak registrar pada tanggal jatuh tempo dan untuk mengembalikannya agar bisa diakses butuh waktu antara 6 – 72 jam.
f. Hosting yang habis masa berlakunya akan dikenakan suspend 10 hari setelah jatuh tempo pembayaran dan akan dibatalkan layanannya 14 hari setelah jatuh tempo.
g. Hosting yang telah dibatalkan layanannya karena keterlambatan pembayaran dapat diaktifkan kembali dengan tambahan biaya re-aktivasi dan biaya berlangganan.
h. Jogjahost tidak memberikan jaminan backup pada akun yang telah dibatalkan. Walaupun demikian pihak Jogjahost tetap akan mengupayakan melakukan recovery data pelanggan, tetapi akan timbul biaya untuk hal ini
i. Setiap pembayaran yang dilakukan harus dikonfirmasikan terlebih dahulu melalui halaman website http://konfirmasi.jogjahost.co.id
j. Apabila dalam waktu 24 jam setelah mengkonfirmasikan pembayaran ternyata pelanggan belum menerima email, Jogjahost menyarankan untuk segera menghubungi Jogjahost apabila hal ini terjadi untuk melakukan klarifikasi ulang mengenai pembayaran yang telah dilakukan.
k. Jogjahost tidak bertanggungjawab atas pembayaran yang tidak dikonfirmasikan. Konsekuensi - konsekuensi yang timbul akibat hal itu seperti:
  • Domain expire / hilang
  • Akun hosting tersuspend
  • Timbulnya biaya re-aktivasi
  • Konsekuensi lainnya yang sepenuhnya menjadi tanggungjawab pelanggan
D. Sumber Referensi

1. http://www.bppk.kemenkeu.go.id/publikasi/artikel/167-artikel-pajak/12530-mengenal-lebih-dekat-sla-service-level-agreement
2. http://searchitchannel.techtarget.com/definition/service-level-agreement
3. http://modulmakalah.blogspot.co.id/2016/12/Manajemen.SLA.Service.Level.Agreement.Pengertian.Contoh.dan.Fungsi.html
4. http://www.knowledgetransfer.net/dictionary/ITIL/en/Operational_Level_Agreement.htm
5. http://whatis.techtarget.com/definition/operational-level-agreement-OLA
6. https://en.wikipedia.org/wiki/Operational-level_agreement
7. http://saas.y-im.de/smHelpCodeless/Content/sla/concepts/operational_level_agreements.htm
8. https://www.jogjahost.co.id/sla.php
9. http://www.differencebetween.net/miscellaneous/difference-between-ola-and-sla/