Advanced Searchfg
Advanced Searchfg
Advanced Search
3.1 Best-First Search
3.1.1 Greedy Search: minimize estimated cost to reach goal
Hanya menggunakan estimated cost, harga sesungguhnya tidak digunakan. h(n) = harga perkiraan dari node n ke Goal. Goal: h(n) = 0.
Pada kasus di atas, jalur yang terpilih: I - C - D - G = 140 + 160 + 200 = 500 Padahal jalur terbaik adalah: I - A - B - G = 75 + 85 + 300 = 460 Kesimpulan: Greedy Search tidak Optimal.
AI Advanced Search 1 of 17
3.1.2
Merupakan gabungan dari Uniform Cost Search dan Greedy Search. h(n) = harga perkiraan dari node n ke Goal. g(n) = harga sesungguhya dari node n ke Initial. f(n) = g(n) + h(n)
1. OPEN = node asal CLOSE array kosong g=0 f = h 2. Ulangi sampai node tujuan ditemukan If OPEN kosong then Gagal Else BestNode = node yang ada di OPEN dengan f minimal Pindahkan node terbaik tersebut dari OPEN ke CLOSE If BestNode = goal then Sukses Else Bangkitkan semua suksesor BestNode tapi jangan buat pointer Untuk setiap suksesor kerjakan : Hitung g(suksesor) = g(BestNode) + actual cost(dari BestNode ke suksesor) {periksa suksesor} If suksesor ada di OPEN then {sudah pernah digenerate tapi belum diproses} OLD = isi OPEN tersebut Tambahkan OLD sebagai suksesor BestNode Buat pointer dari OLD ke BestNode Bandingkan nilai g(OLD) dengan g(isi OPEN) If g(OLD) lebih baik then Ubah parent isi OPEN ke BestNode Ubah nilai g dan f pada isi OPEN End Else If suksesor ada di CLOSE then {sudah pernah digenerate dan sudah diproses} OLD = isi CLOSE Tambahkan OLD sebagai suksesor BestNode Bandingkan nilai g(OLD) dengan g(isi OPEN) If g(OLD) lebih baik then Ubah parent isi OPEN ke BestNode Ubah nilai g dan f pada isi OPEN Propagasi untuk semua suksesor OLD dengan penelusuran DFS dengan aturan: Ulangi sampai node suksesor tidak ada di OPEN atau node tidak punya suksesor If suksesor ada di OPEN then Propagasi diteruskan Else If nilai g via suksesor lebih baik then Propagasi diteruskan Else Propagasi dihentikan End End End Else {suksesor tidak ada di OPEN maupun CLOSE} Masukkan suksesor ke OPEN Tambahkan suksesor tersebut sebagai suksesor BestNode Hitung f = g(suksesor) + h(suksesor) End End End End
AI Advanced Search 2 of 17
Soal Latihan
Lakukan tracing menggunakan algoritma A* untuk graph di bawah ini, dimana Initial Node adalah I dan Goal Node adalah G.
350
D 200 G
380
280
Pada contoh soal di atas, terdapat kasus-kasus dimana suksesor ada di OPEN, CLOSE, dan tidak ada di OPEN maupun CLOSE. Jalur OPTIMUM yang dihasilkan adalah I - A G = 450.
AI Advanced Search 3 of 17
1 8 6
2 7
3 4 5
1 4 7
2 5 8
Goal State
3 6
Initial State
Ada dua fungsi heuristic yang dapat digunakan, yaitu: h1 = jumlah kotak yang posisinya salah. Untuk masalah di atas, h1 = 5. h2 = jumlah langkah yang diperlukan masing-masing kotak menuju goal state. Biasanya disebut city block distance atau Manhattan distance. Untuk masalah di atas, h2 = 0 + 0 + 0 + 2 + 2 + 3 + 2 + 2 = 11.
Untuk semua kemungkinan state, h2 >= h1. Apakah h2 lebih baik daripada h1? Ataukah sebaliknya? Ukuran yang dapat digunakan adalah jumlah state yang harus dibangkitkan sampai menemukan solusi.
AI Advanced Search 4 of 17
Perbandingan Iterative-Deepening-Search dengan A* menggunakan h1 dan h2. Data adalah rata-rata 100 kasus 8-puzzle untuk panjang solusi yang bervariasi [Stuart Russel & Peter Norvig, 1995]
Search Cost Depth 2 4 6 8 10 12 14 16 18 20 22 24 IDS 10 112 680 6,384 47,127 364,404 3,473,941 A* (h1) 6 13 20 39 93 227 539 1,301 3,056 7,276 18,094 39,135 A* (h2) 6 12 18 25 39 73 113 211 363 676 1,219 1,641 Effective Branching Factor IDS 2.45 2.87 2.73 2.80 2.79 2.78 2.83 A* (h1) 1.79 1.48 1.34 1.33 1.38 1.42 1.44 1.45 1.46 1.47 1.48 1.48 A* (h2) 1.79 1.45 1.30 1.24 1.22 1.24 1.23 1.25 1.26 1.27 1.28 1.26
Hasil percobaan untuk kasus di atas, ternyata h2 lebih baik dibanding h1. Hal ini disebabkan h2 lebih mendekati harga sesungguhnya. Pada kasus di atas, solusi didapat pada langkah ke-11. Fungsi h1 = 5, sedangkan h2 = 11 (kebetulan sama dengan harga sesungguhnya). Dengan kata lain, h2 lebih optimis dibanding h1.
Fungsi heuristic tidak boleh melebihi harga sesungguhnya. Jika ditemukan banyak fungsi heuristic dalam suatu masalah, maka gunakan fungsi heuristic yang paling mendekati harga sesungguhnya.
Kesimpulan: Heuristic terbaik adalah yang paling mendekati harga sesungguhnya, tetapi tidak melebihi harga sesungguhnya.
AI Advanced Search 5 of 17
Algoritma IDA*
function IDA*(problem) returns a solution sequence inputs: problem, a problem local variables: f-limit, the current f-Cost limit root, a node root MAKE-NODE(INITIAL-STATE[problem]) f-limit f-Cost(root) loop do solution,f-limit DFS-CONTOUR(root,f-limit) if solution is non-null then return solution if f-limit is INFINITE then return failure end
function DFS-CONTOUR(node,f-limit) returns a solution sequence and a new f-Cost limit
inputs: node, a node f-limit, the current f-Cost limit local variables: next-f, the f-Cost limit for the next contour, initially INFINITE if f-Cost[node] > f-limit then return null, f-Cost[node] if GOAL-TEST[problem](STATE[node]) then return node,f-limit for each node s in SUCCESSOR(node) do solution,new-f DFS-CONTOUR(s,f-limit) if solution is non-null then return solution,f-limit next-f MIN(next-f,new-f) end return null, next-f
AI Advanced Search 6 of 17
10 C 20+5=25
10 D 20+0=20 16+2=18 H
16 I 24+0=24
10 E 30+5=35
10 F 30+0=30 19+0=19 J
8 K 24+5=29
1
12
2
12 12 B 15 15
A A
3
13 B 15
A 12 G 13
A 1 3 (1 5 ) 1 2 G 13 H 18 ( ) 8
5 A
12 1 5 (1 5 ) G 24 ( ) I 24
A 1 5 1122 B G 24
7
1 5 (2 4 ) B 15 C 25 ( )
A 12
8
2 0 (2 4 ) B 20 ( ) 8
15
D 20
AI Advanced Search 7 of 17
Algoritma SMA*
function SMA*(problem) returns a solution sequence inputs: problem, a problem local variables: Queue, a queue of nodes ordered by f-cost Queue MAKE-QUEUE({MAKE-NODE(INITIAL-STATE[problem])}) loop do if Queue is empty then return failure n deepest least f-cost node in Queue if GOAL-TEST(n) then return success s NEXT-SUCCESSOR(n) insert s in Queue if s is not a goal and is at maximum depth then f(s) INFINITE else f(s) MAX(f(n),g(s)+h(s)) if all of n's successors have been generated then update n's f-cost and those of its ancestors if necessary remove n from Queue if memory is full then delete shallowest, highest f-cost node in Queue remove it from its parent's successor list insert its parent on Queue if necessary end
AI Advanced Search 8 of 17
Graph berarah dilambangkan G = (V,E) V E : himpunan node-node dalam graph (Vertex). : himpunan sisi-sisi yang menghubungkan node-node dalam V.
e(u,v) : sisi-sisi dalam graph E l(u,v) : panjang e(u,v) dalam E. ps(u) : jarak antara node s dengan node u (nilai potensial node u terhadap node s). r(s,d) : rute dari s (source) ke d (destination).
AI Advanced Search 9 of 17
1. 2. 3.
Cari node us yang memiliki nilai ps(vs) + hs(vs) terkecil di S dan tambahkan us ke S. Jika us di D, lakukan langkah 7. Untuk semua node vs dimana sisi (us,vs) di dalam E, jika ps(us) + l(us,vs) lebih kecil dari ps(vs): ganti rute (s,vs) dengan rute (s,us) + sisi (us,vs) dan ganti nilai ps(vs) = ps(us) + l(us,vs) dan hapus vs dari S jika vs di dalam S.
4. 5.
Cari node ud yang memiliki nilai pd(vd) + hd(vd) terkecil di D dan tambahkan ud ke D. Jika ud di S, lakukan langkah 7. Untuk semua node vd dimana sisi (vd,ud) di dalam E, jika l(vd,ud) + pd(ud) lebih kecil dari pd(vd): ganti rute (vd,d) dengan sisi (vd,ud) + rute (ud,d) dan ganti nilai pd(vd) = l(vd,ud) + pd(ud) dan hapus vd dari D jika vd di dalam D.
6. 7.
Kembali ke langkah 2. Cari sisi (u,v) dengan meminimalisasi ps(u) + l(u,v) + pd(v) dimana u di dalam S dan v di dalam D. Jika ps(u) + l(u,v) + pd(v) < ps(us) + pd(ud) maka rute terpendek (s,d) = rute(s,u) + sisi(u,v) + rute(v,d) jika tidak, maka rute terpendek (s,d) = rute(s,us) + rute(ud,d).
Secara detail, algoritmanya sama dengan algoritma bi-directional A* dengan perubahan pada langkah (2) dan (4): (2) Cari node us yang memiliki nilai ps(vs) terkecil di S dan tambahkan us ke S. Jika us di D, lakukan langkah 7. (4) Cari node ud yang memiliki nilai pd(vd) terkecil di D dan tambahkan ud ke D. Jika ud di S, lakukan langkah 7. Dan langkah (3) dan (5): (3) Untuk semua node vs dimana sisi (us,vs) di dalam E, jika ps(us) + l(us,vs) lebih kecil dari ps(vs): ganti rute (s,vs) dengan rute (s,us) + sisi (us,vs) dan ganti nilai ps(vs) = ps(us) + l(us,vs) dan hapus vs dari S jika vs di dalam S. (4) Untuk semua node vd dimana sisi (vd,ud) di dalam E, jika l(vd,ud) + pd(ud) lebih kecil dari pd(vd): ganti rute (vd,d) dengan sisi (vd,ud) + rute (ud,d) dan ganti nilai pd(vd) = l(vd,ud) + pd(ud) dan hapus vd dari D jika vd di dalam D.
AI Advanced Search 10 of 17
f = 20
D f = 12
E f = 15
f=7
function HILL-CLIMBING returns a solution state inputs: problem, a problem local variables: current, a node next: a node current MAKE-NODE(INITIAL-STATE[problem]) loop do next a highest-valued successor of current if VALUE[next] < VALUE[current] then return current current next end
Jika terdapat lebih dari satu best successor, maka algoritma akan memilih next state secara random. Hal ini akan memberikan tiga kekurangan, yaitu: Local Minima, Plateaux, dan Ridges.
f = 20
D f = 12
f=7
f=7
G G solusi di level 8
AI Advanced Search 11 of 17
1. 2. 3. 4.
Evaluate the initial state. If it is also a goal state, then return it and quit. Otherwise, continue with the initial state as the current state. Initialize BEST-SO-FAR to the current state. Initialize T according to the annealing schedule. Loop until a solution is found or until there are no operators left to be applied in the current state. (a) (b) Select an operator that has not yet been applied to the current state and apply it to produce a new state. Evaluate the new state. Compute: E = abs(value of current value of new state) If the new state is a goal state, then return it and quit. If it is not a goal state but is better than the current state, then make it the current state. Also set BEST-SO-FAR to this new state. If it is not better than the current state, then make it the current state with probability p as defined above. This step is usually implemented by invoking a random number generator to produce a number in the range [0,1]. If that number is less than p, then the move is accepted. Otherwise, do nothing. Revise T as necessary according to the annealing schedule.
(c) 5.
AI Advanced Search 12 of 17
AI Advanced Search 13 of 17
AI Advanced Search 14 of 17
AI Advanced Search 15 of 17
Generational GA
Pada skema penggantian populasi generational, dua individu keturunan baru hasil reproduksi akan menggantikan kedua induknya dalam populasi sehingga akan diperoleh keseluruhan populasi yang baru. Setiap satu iterasi GA akan membentuk satu generasi keturunan baru hasil reproduksi. Karena seluruh anggota populasi baru dapat sama sekali berbeda dari populasi lama maka dapat terjadi individu terbaik pada populasi lama tidak muncul pada populasi baru. Hal ini merupakan suatu kerugian karena solusi terbaik yang pernah ditemukan akan menjadi hilang. Untuk itu biasanya digunakan model elitis di mana individu terbaik pada generasi induk akan dimasukkan pada generasi keturunan baru.
Steady-State GA
Pada skema penggantian populasi model steady-state, n individu keturunan baru hasil reproduksi akan menggantikan n individu terjelek pada populasi induk. Metoda ini pertama kali digunakan oleh Whitley (1988) sebagai bagian dari GA yang dikembangkannya yaitu GENITOR[WHI89]. Whitley menyebutnya dengan overlapping population karena pada metoda ini perbedaan antar generasi tidak diketahui secara jelas. Selain itu Syswerda (1989) juga menggunakan metoda ini dan menyebutnya sebagai steady-state. Biasanya nilai n yang digunakan adalah n = 2, sehingga pada tiap iterasi hanya dua induk yang mengalami reproduksi dan dua keturunan baru yang dihasilkan akan menggantikan dua individu terjelek pada populasi. Metoda generational merupakan kasus khusus dari metoda steady-state di mana n = jumlah populasi yang ada. Beberapa peneliti GA menyatakan bahwa steady-state GA lebih inferior daripada generational GA [DAV91]. Tetapi metoda ini dapat diperbaiki sehingga dapat menghasilkan performansi yang lebih baik. Metoda perbaikan ini dinamakan steadystate tanpa duplikasi. Pada steady-state tanpa duplikasi, keturunan baru yang akan dimasukkan ke populasi merupakan individu yang sama sekali berbeda dengan individu anggota populasi yang telah ada. Jadi setiap anggota populasi yang ada selalu berbeda komposisi genetika yang dikandung dalam kromosomnya.
AI Advanced Search 16 of 17
maka waktu yang diperlukan GA juga menjadi terlalu lama dan tidak efisien. Untuk itu perlu dicari jumlah iterasi yang bagus melalui percobaan-percobaan. Kondisi berhenti GA lainnya yang dapat digunakan yaitu berdasarkan batas nilai obyektif yang diberikan user. Iterasi GA akan berhenti jika individu terbaik telah mencapai nilai obyektif ini. Setelah iterasi GA cukup lama terjadi mungkin akan terjadi kondisi di mana GA akan berkonvergen pada satu individu. Pada kondisi yang seperti itu mungkin seluruh anggota populasi merupakan duplikasi dari satu individu sehingga keaneka-ragaman komposisi genetika yang ada menjadi sangat kecil. Jika kondisi tersebut benar-benar terjadi maka iterasi GA sebaiknya dihentikan karena iterasiiterasi berikutnya tidak akan mampu menghasilkan solusi yang lebih baik lagi.
AI Advanced Search 17 of 17