Dosen Pengampu: Muhammad Zidny Naf’an, M.Kom Pencarian Heuristik Dosen Pengampu: Muhammad Zidny Naf’an, M.Kom
Pencarian buta tidak selalu dapat diterapkan dengan baik, hal ini disebabkan waktu aksesnya yang cukup lama serta besarnya memori yang dibutuhkan. Kelemahan ini sebenarnya dapat diatasi jika ada informasi tambahan (fungsi heuristik) dari domain yang bersangkutan.
“Heuristic” berarti menemukan atau mencari Heuristic dalam pencarian suatu fungsi yang memberikan suatu nilai berupa biaya perkiraan (estimasi) dari suatu solusi Fungsi heuristik digunakan untuk menghitung biaya perkiraan dari suatu simpul tertentu menuju ke simpul tujuan. Fungsi h(N), memperkirakan biaya dari jalur termurah dari node n ke node tujuan. Jika h(N) = 0 berarti solusi ditemukan
Fungsi heuristik Misalkan pada kasus 8-puzzle Ada 4 operator yang dapat digunakan untuk menggerakkan dari satu keadaan (state) ke keadaan yang baru. Geser ubin kosong ke kiri Geser ubin kosong ke kanan Geser ubin kosong ke atas Geser ubin kosong ke bawah
Fungsi heuristik State Awal kiri atas kanan
Fungsi heuristik Informasi yang diberikan dapat berupa jumlah ubin yang menempati posisi yang benar. Jumlah yang lebih tinggi adalah yang diharapkan. Sehingga langkah selanjutnya yang harus dilakukan dari state awal adalah menggeser ubin kosong ke kiri.
Fungsi heuristik Informasi yang diberikan berupa straight-line distance (jarak dalam garis lurus) antara tiap kota dengan Bucharest.
Informed (Heuristic) Search Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Greedy Best-First Search A*
Generate-and-Test (GT) Metode Generate-and-Test (GT) adalah metode yang paling sederhana dalam teknik pencarian heuristik. Di dalam GT, terdapat dua prosedur penting: Pembangkit (generate), yang membangkitkan semua solusi yang mungkin. Test, yang menguji solusi yang dibangkitkan tersebut. Pada bagian generate dapat menggunakan prosedur Depth First Search.
Generate-and-Test (GT) Dengan penggunaan memori yang sedikit, DFS bisa digunakan sebagai prosedur pembangkit yang menghasilkan suatu solusi. Prosedur Test bisa menggunakan fungsi heuristik.
Algoritma Generate-and-Test Bangkitkan sebuah solusi yang mungkin. Solusi bisa berupa suatu keadaan (state) tertentu. Solusi juga bisa berupa sebuah jalur dari satu posisi asal ke posisi tujuan, seperti dalam kasus pencarian rute dari satu kota asal ke kota tujuan. Tes apakah solusi yang dibangkitkan tersebut adalah sebuah solusi yang bisa diterima sesuai dengan kriteria yang diberikan. Jika solusi telah ditemukan, keluar. Jika belum, kembali ke langkah 1.
Generate-and-Test (GT) Contoh: Traveling Salesman Problem (TSP) Seorang salesman ingin mengunjungi sejumlah n kota. Akan dicari rute terpendek di mana setiap kota hanya boleh dikunjungi tepat 1 kali. Jarak antara tiap-tiap kota sudah diketahui. Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti terlihat pada gambar berikut. http://www.dogonews.com/2012/9/30/scientists-learn-how-bumblebees-solve-complex-traveling-salesman-problem-so-effortlessly
Contoh kasus TSP A B C D 2 4 1 3 5 Sebuah rute yng harus dilewati seorang sales dimana sales tersebut harus merlewati setiap kota tepat sekali. Terdapat 4 kota, dengan jarak masing-masing kota : AB=2, AC=4, AD=1, BC=5, BD=3, CD=3. Tujuannya adalah mencari jarak terpendek bagi sales untuk mengunjungi semua kota sekali. Penyelesaian menggunakan generate-test adalah dengan membangkitkan solusi-solusi yang mungkin ada sesuai permasalahan yang dihadapi oleh sales tersebut. Kombinasi abjad sebagai solusi yang mungkin adalah n! = 4! = 24. Tujuannya adalah mencari solusi dengan panjang terpendek.
Panjang Lintasan yang dipilih B C D 2 4 1 3 5 No Pencarian Lintasan Panjang Lintasan Lintasan yang dipilih Panjang Lintasan yang dipilih 1 ABCD 10 2 ABDC 8 3 ACBD 12 4 ACDB …. …….. ………. …………… ………… 24 DCBA BADC / CDAB 6
A B C D 2 4 1 3 5 No Pencarian Lintasan Panjang yang dipilih 1 ABCD 10 2 ABDC 8 3 ACBD 12 ABDC 8 4 ACDB 10 ABDC 8 …. …….. ………. …………… ………… 24 DCBA 10 BADC / CDAB 6
Contoh kasus TSP TSP - generation of possible solutions is done in lexicographical order of cities: 1. A - B - C - D 2. A - B - D - C 3. A - C - B - D 4. A - C - D - B ... A B C D Characteristics with generate-and-test: Requires that an entire possible solution is generated at each step, which may be expensive It may be difficult to develop a generation scheme that provides a good order. The big problem is that the algorithm is blind - it does not make use of any knowledge that becomes available during the search. 1. Can modify to use brand-and-bound techniques to skip some solutions. 2. Perhaps we can use information about the likelyhood of success to change the generated possible solutions. IMPORTANT: TSP is a bad example because it is hard to see the state space. Consider a problem like the water jug problem and describe how this algorithm would work in that domain.
Dari tabel diatas, solusi pertama yang dibangkitkan adalah ABCD = 10, solusi kedua ABDC=8. Ternyata solusi kedua menghasilkan jarak yang lebih pendek sehingga dipilih lintasan ABDC=8. Lakukan untuk langkah selanjutnya. Pada tabel didapat solusi terpendek adalah BADC atau CDBA. Kelemahan dari teknik ini perLu dibangkitkan semua kemungkinan yang ada sehingga apabila ditambahkan satu kota untuk permasalahan TSP ini diatas 5 kota. Maka akan diperlukan 120 kombinasi lintasan, kecuali diberikan kondisi tertentu misalnya kota awal bagi sales telah ditentukan.
Latihan Generate-and-Test Algorithm Baca problem di tautan berikut dan selesaikan dengan metode Generate and Test https://training.ia-toki.org/training/curriculums/1/courses/11/chapters/55/problems/253/
Kebaikan dan Keburukan Generate-and-Test Jika penurunan solusi yang mungkin dilakukan secara sistematis, maka procedure diatas akan dapat menemukan solusi suatu saat, jika memang ada. Tapi sayangnya jika ruang permasalahan sangat luas maka saat ditemukannya solusi akan menjadi sangat lama. Cara terbaik menerapkan generate-and-test yang sistematis adalah pada tree dari depth-first search dengan backtracking, yaitu kembali ke state sebelumnya bila ditemui state yg sudah pernah di test atau memodifikasi prosedurnya untuk menelusuri state pada bentuk graph.
Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Simulated Annealing Greedy Best-First Search A*
Hill Climbing (HC) Terdapat 2 jenis HC yang sedikit berbeda, yakni Simple Hill Climbing (HC sederhana) dan Steepest- Ascent Hill Climbing (HC dengan memilih kemiringan yang paling tajam/curam). Simple HC, langsung memilih new state yang memiliki jalur yang lebih baik (“curam”) daripada jalur-jalur sebelumnya tanpa memperhitungkan jalur-jalur lain yang lebih “curam”. Sedangkan Steepest-Ascent HC, akan mengevaluasi semua state yang berada di bawah current state dan memilih state dengan jalur yang paling “curam”.
Algoritma Simple HC Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state, lanjutkan proses dengan initial state sebagai current state. Ulangi sampai solusi ditemukan atau sampai tidak ada operator baru yang dapat diaplikasikan terhadap current state: Pilih sebuah operator yang belum diaplikasikan terhadap current state dan aplikasikan operator tersebut sehingga menghasilkan new state. Evaluasi new state: Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state tetapi lebih baik daripada current state, maka jadikan state ini sebagai current state. Jika state ini tidak lebih baik daripada current state, kembali ke langkah 2.a.
Pencarian solusi menggunakan Simple HC S menyatakan initial state, sedangkan G menyatakan goal state. Variable f di setiap state menyatakan biaya antara state tersebut dengan goal state. Nilai f pada goal state = 0.
Pencarian solusi menggunakan Simple HC Simple HC langsung memilih state B sebagai next state karena nilai f pada state B lebih kecil dibandingkan nilai f pada state S. Di sini tidak dipertimbangkan nilai f pada state C. Misalkan pada akhir iterasi, Simple HC mengembalikan solusi G yang berada di level 6, padahal ada solusi yang lebih baik pada level 2. Dengan demikian Simple HC tidak optimal.
Contoh Simple Hill Climbing pada TSP Operator yang digunakan adalah operator yang dapat menghasilkan kombinasi lintasan kota yang berbeda-beda, yaitu dengan cara menukar posisi masing-masing kota. Untuk mempermudah penukaran posisi, kita cukup menukar posisi 2 kota, operator untuk kombinasi lintasan dengan menukar posisi 2 kota dapat dihitung dengan kalkulasi: Yaitu : (1,2) menukar posisi kota kesatu dan kedua (1,3) menukar posisi kota kesatu dan ketiga (1,4) menukar posisi kota kesatu dengan keempat (2,3) menukar posisi kota kedua dengan kota ketiga (2,4) menukar posisi kota kedua dengan keempat (3,4) menukar posisi kota ketiga dengan keempat Penggunaan pengurutan operator harus konsisten, tidak boleh berbeda tiap levelnya. urutan penggunaan operator juga sangat menentukan kecepatan dalam menemukan solusii
Pencarian simple hill climbing dimulai dari anak kiri Pencarian simple hill climbing dimulai dari anak kiri. Apabila nilai heuristik anak kiri lebih baik maka digunakan sebagai current state pencarian selanjutnya. Jika tidak maka akan dilihat tetangga dari anak kiri tersebut, dan seterusnya. Level 1 : (ABCD=10 > BACD =9) buka node BACD tanpa harus mengecek node yang selevel dengan BACD. Level 2 : node ABCD dilewati. (BACD=9 = CABD=9) periksa node tetangga CABD (BACD=9 < DABC=10) periksa node tetangga DABC (BACD=9 < BCAD=10) periksa node tetangga BCAD (BACD=9 < BDAC=10) periksa node tetangga BDAC (BACD=9 > BADC=6 ) buka node BADC Level 3 : (BADC=6 < ABDC=8) periksa tetangga ABDC (BADC=6 < DABC=8) periksa tetangga DABC (BADC=6 < CADB=8) periksa tetangga CADB (BADC=6 < BDAC=8) periksa tetangga BDAC (BADC=6 < BCDA=9) periksa tetangga BCDA (BADC=6 < BADC=9) selesai.
Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Greedy Best-First Search A*
Steepest-Ascent Hill Climbing Sebenarnya hampir sama dengan simple hill climbing. Hanya saja gerakan pencarian tidak dimulai dari posisi paling kiri. Gerakan selanjutnya dicari berdasarkan nilai heuristik terbaik. Dalam hal ini urutan penggunaan operator tidak menentukan penemuan solusi.
Algoritma Steepest-Ascent Hill Climbing Mulai dari keadaan awal, lakukan pengujian: jika merupakan tujuan, maka berhenti ; dan jika tidak, lanjutkan dengan keadaan sekarang sebagai keadaan awal. Kerjakan hingga tujuan tercapai atau hingga iterasi tidak memberikan perubahan pada keadaan sekarang. Tentukan SUCC sebagai nilai heuristik terbaik dari successor- successor Kerjakan untuk tiap operator yang digunakan oleh keadaan sekarang Gunakan operator tersebut dan bentuk keadaan baru. Evaluasi keadaan baru tersebut. Jika merupakan tujuan, keluar, Jika bukan, bandingkan nilai heuristiknya dengan SUCC. Jika lebih baik, jadikan nilai heuristic keadaan baru tersebut sebagai SUCC. Namun jika tidak lebih baik, nilai SUCC tidak berubah. Jika SUCC lebih baik daripada nilai heuristik keadaan sekarang, ubah node SUCC menjadi keadaan sekarang.
Pencarian solusi menggunakan Steepest-Ascent HC Dari state S, Steepest-Ascent HC akan mengevaluasi semua state yang menjadi next state atau suksesornya, yaitu A, B, dan C. Dari ketiga suksesor tersebut dipilih suksesor dengan nilai f yang terkecil. State C akan dipilih sebagai suksesor S. Misalkan, hasil penelusuran menemukan solusi G di level 4, padahal ada solusi optimal di level 2, dalam hal ini Steepest-Ascent HC dikatakan terjebak pada solusi lokal atau local minimum. Jadi Steepest-Ascent HC juga tidak optimal.
Contoh Steepest-Ascent Hill Climbing Keadaan Awal Tujuan 1 2 3 7 8 4 6 5 1 2 3 8 4 7 6 5 5 6 4 8 7 3 2 1 kiri kanan atas Hb= 6 Hb= 4 Hb= 5 5 6 4 8 7 3 2 1 kanan atas Hb= 5 Hb= 7
Contoh Steepest-Ascent Hill Climbing 5 6 7 4 8 3 2 1 atas Hb= 7 5 6 7 4 8 3 2 1 kanan atas bawah Hb= 8 Hb= 6 Jadi urutan penyelesaian game 8-puzzle diatas dengan menggunakan metode Steepest-Ascent Hill Climbing dan menghitung nilai heuristik berupa jumlah ubin yang menempati posisi yang BENAR adalah ubin kosong bergeser ke KIRI, ATAS, KANAN dengan nilai heuristik terakhir adalah 8.
Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Simulated Annealing Greedy Best-First Search A*
Permasalahan Pada Hill Climbing Terjebak pada local minima
Simulated Anealing (SA) SA memanfaatkan analogi cara pendinginan dan pembekuan metal menjadi sebuah kristal dengan energi yang minimal. SA menggunakan sebuah rumus probabilitas yang memungkinkannya bisa keluar dari local minimum. Ketika new state tidak lebih baik dari current state, maka new state tersebut masih mungkin dipilih dengan probabilitas sebagai berikut: p(E) = e-E/T ……………(4.1)
Algoritma Simulated Annealing Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state, lanjutkan proses dengan initial state sebagai current state. Inisialisasi BEST-SO-FAR dengan current state. Inisialisasi T sesuai dengan annealing schedule. Ulangi sampai solusi ditemukan atau sampai tidak ada lagi operator baru yang dapat diaplikasikan terhadap current state: Pilih sebuah operator yang belum diaplikasikan terhadap current state dan aplikasikan operator tersebut sehingga menghasilkan new state. Evaluasi new state. Hitung: E = f(current state) – f(new state) Jika new state adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika new state bukan goal tetapi lebih baik daripada current state (E > 0), maka set current state ke new state. Juga set BEST-SO-FAR ke new state.
Algoritma Simulated Annealing Jika new state tidak lebih baik daripada current state (E ≤ 0), maka set current state ke new state dengan probabilitas p seperti didefinisikan oleh persamaan 4.1 di atas. Langkah ini biasanya diimplementasikan dengan membangkitkan sebuah bilangan acak dalam interval [0,1]. Jika bilangan tersebut lebih besar dari p, maka jangan mengerjakan apa pun. Jika diperlukan, revisi nilai T berdasarkan annealing schedule. Kembalikan BEST-SO-FAR sebagai solusi. BEST-SO-FAR adalah solusi minimum global yang diharapkan.
Pencarian solusi menggunakan Simulated Annealing Misalkan S adalah current state dan A adalah new state. Ketika dievaluasi, ternyata new state tidak lebih baik daripada current state. Tetapi, ketika dibangkitkan bilangan acak dalam interval [0,1] menghasilkan angka kurang dari probabilitas p, maka A dipilih sebagai current state. Pada akhirnya, SA dapat menemukan solusi optimum di level 2. Karena bergantung pada suatu nilai probabilitas, maka SA tidak selalu optimal.
ContohTSP dengan SA APLIKASI SIMULATED ANNEALING UNTUK MENYELESAIKAN TRAVELLING SALESMAN PROBLEM
Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Greedy Best-First Search A*
Best First Search Sesuai dengan namanya, Best First Search membangkitkan simpul berikutnya dari sebuah simpul (yang sejauh ini) terbaik di antara semua leaf node (simpul daun) yang pernah dibangkitkan. Penentuan simpul terbaik dapat dilakukan dengan menggunakan informasi berupa biaya perkiraan dari suatu simpul menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut.
Best First Search Terdapat 2 jenis algoritma Best First Search: Greedy Best First Search, yang hanya memperhitungkan biaya perkiraan saja. Algoritma A* yang memperhitungkan gabungan dua biaya, biaya sebenarnya dan biaya perkiraan.
Algoritma Best First Search OPEN berisi initial state dan CLOSED masih kosong. Ulangi sampai goal ditemukan atau sampai tidak ada lagi node di dalam OPEN: Ambil simpul terbaik yang ada di OPEN. Jika simpul tersebut sama dengan goal, maka sukses. Jika tidak, masukkan simpul tersebut ke dalam CLOSED. Bangkitkan semua suksesor dari simpul tersebut. Untuk setiap suksesor kerjakan: Jika suksesor tersebut belum pernah dibangkitkan, evaluasi suksesor tersebut, tambahkan ke OPEN, dan catat parent atau orang tuanya. Jika suksesor tersebut sudah pernah dibangkitkan, ubah parent-nya jika jalur melalui parent ini lebih baik daripada jalur melalui parent yang sebelumnya. Selanjutnya perbarui biaya untuk suksesor tersebut dan nodes lain yang berada di level bawahnya.
Best First Search Pada algoritma tersebut, OPEN adalah list yang digunakan untuk menyimpan simpul-simpul yang pernah dibangkitkan dan nilai heuristiknya telah dihitung tetapi belum dipilih sebagai simpul terbaik. CLOSED digunakan untuk menyimpan simpul-simpul yang sudah pernah dibangkitkan dan sudah pernah terpilih sebagai simpul terbaik.
Greedy Best First Search Greedy Best First Search hanya memperhitungkan biaya perkiraan (estimated cost) saja, yakni: f(n) = h(n) di mana h(n)= perkiraan biaya dari simpul n ke goal. Biaya yang sebenarnya (actual cost) tidak diperhitungkan. Dengan hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya maka algoritma ini menjadi tidak optimal.
Menghitung Jarak Perkiraan Euclidean Distance: ℎ 𝑛 = ( 𝑥 𝑛 − 𝑥 𝑔 ) 2 + ( 𝑦 𝑛 − 𝑦 𝑔 ) 2 Manhattan Distance ℎ 𝑛 = 𝑥 𝑛 − 𝑥 𝑔 + 𝑦 𝑛 − 𝑦 𝑔 xn dan yn adalah posisi node saat ini xg dan yg adalah posisi node seharusnya
Greedy Best First Search f(n) = h(n) h(n) = jarak garis lurus dari node n ke goal (Bucharest)
Greedy Best-First Search
Greedy Best-First Search
Greedy Best-First Search
Greedy Best-First Search Solusi yang ditemukan adalah: Arad, Sibiu, Fagaras, Bucharest. Ternyata solusi ini tidak optimal karena ada solusi lain yang lebih baik, yaitu: Arad, Sibiu, Rimnicu Vilcea, Pitesti, Bucharest yang lebih pendek 32 kilometer.
Algoritma A* f(n) = g(n) + h(n) Algoritma ini merupakan algoritma Best First Search yang menggabungkan Uniform Cost Search dan Greedy Best First Search. Algoritma ini memperhitungkan biaya dari biaya sebenarnya ditambah dengan biaya perkiraan. Dalam notasi matematika dituliskan sebagai: f(n) = g(n) + h(n) g(n) = biaya sebenarnya untuk mencapai simpul n h(n) = perkiraan biaya dari simpul n ke goal. f(n) = perkiraan total biaya jalur yang melalui simpul n ke goal. Dengan perhitungan biaya seperti ini, algoritma A* adalah complete dan optimal.
A* f(n) = g(n) + h(n) g(n) = biaya sebenarnya untuk mencapai sebuah node (kota) n h(n) = jarak garis lurus dari node n ke goal (Bucharest)
A* search example
A* search example
A* search example
A* search example
A* search example
A* search example
A* search example Solusi yang ditemukan adalah solusi optimal, yaitu: Arad, Sibiu, Rimnicu Vilcea, Pitesti, Bucharest.
Contoh:
Greedy Best First Search
Greedy Best First Search
A*
A*
A*
A*
A*
Latihan Pada suatu provinsi terdapat kota A, B, C, D, E, dan F dengan jarak antar kota seperti pada gambar di bawah ini. Pak Anto yang berasal dari kota A hendak pergi ke kota D. Bantulah Pak Anto untuk mencari jalur yang paling dekat dari kota A ke kota B dengan menggunakan algoritma Greedy Best First Search dan A*. Tuliskan langkah-langkahnya secara urut (Langkah 1 hingga ditemukan solusi) dan juga tuliskan CLOSED list dan OPEN list pada tiap langkah
Referensi Suyanto. Kecerdasan Buatan. IT Telkom Hersa Farida Qoriani. Informed Heuristic Search. Akses: http://hersa.dosen.narotama.ac.id/files/2011/12/Informed-Heuristic-Search.ppt