Tugas AI 1 - Searching
Tugas AI 1 - Searching
A. Menentukan Peta
Peta yang digunakan dalam laporan ini adalah peta pulau Jawa yang diambil dari Google Map dan digambarkan dalam bentuk graf untuk memudahkan pencarian rute.
Gambar 2: Graf
Graf terdiri atas 19 simpul berupa kota-kota yang terletak di daerah jawa, dengan simpul awal (start) adalah Depok dan simpul akhir (Goal) adalah Klaten.
Kota Cilegon Serang Jakarta Depok Sukabumi Bandung Pamanukan Subang Indramayu Cirebon Babakan Gerbang Brebes Garut Tasik Purwokerto Kebumen Klaten Semarang Salatiga
Latitude Longitude (x) (y) 106.034 -5.992 106.150 -6.106 106.847 -6.194 106.831 -6.379 106.922 -6.918 107.609 -6.907 107.821 -6.283 107.762 -6.318 108.325 -6.302 108.551 -6.730 108.717 -6.864 109.049 -6.866 107.909 -7.227 108.213 -7.311 109.248 -7.428 109.653 -7.656 110.592 -7.695 110.417 -6.954 110.473 -7.294
Xb-Xa 4.557 4.442 3.744 3.761 3.670 2.982 2.771 2.830 2.267 2.041 1.875 1.542 2.683 2.379 1.344 0.939 0.000 0.175 0.118
Yb-Ya -1.704 -1.589 -1.502 -1.316 -0.777 -0.789 -1.413 -1.377 -1.394 -0.965 -0.831 -0.829 -0.469 -0.384 -0.267 -0.039 0.000 -0.742 -0.401
Xb-Xa (KM) 505.857 493.052 415.615 417.476 407.339 331.045 307.589 314.105 251.606 226.513 208.092 171.185 297.814 264.018 149.168 104.190 0.000 19.436 13.142
Yb-Ya (KM) -189.104 -176.370 -166.671 -146.064 -86.257 -87.544 -156.816 -152.882 -154.700 -107.107 -92.230 -92.008 -52.012 -42.619 -29.655 -4.381 0.000 -82.323 -44.546
h(n) dalam KM 540.047 523.648 447.789 442.291 416.372 342.425 345.257 349.335 295.360 250.559 227.615 194.344 302.322 267.436 152.087 104.282 0.000 84.586 46.444
Keterangan: Node Frontier Explored Cost : Best Node : Open Node : Closed Node : Jarak
: Suksesor
Langkah penelusuran dengan metode UCS Open Iterasi 0 1 Asal Depok Node Depok Jakarta Serang Sukabumi Subang Jakarta Serang Subang Bandung Jakarta Subang Bandung Cilegon Jakarta Subang Bandung Subang Bandung Pamanukan Bandung Pamanukan Indramayu Pamanukan Indramayu Cirebon Garut Garut Cirebon Jarak/Cost (km) 0 132 104 92,4 144 132 104 144 186,8 132 129,5 144 186,8 132 144 186,8 144 186,8 153,8 186,8 153,8 224,3 153,8 224,3 324,8 252,3 252,3 324,8 Closed Depok Best Node Sukabumi Ubah Parent -
Depok, Sukabumi Depok, Sukabumi, Serang Depok, Sukabumi, Serang, Cilegon Depok, Sukabumi, Serang, Cilegon, Jakarta Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung,
Serang
Cilegon
4 Sukabumi Depok Sukabumi 5 Jakarta Sukabumi Jakarta 6 Subang Jakarta Subang 7 Bandung
Jakarta
Subang
Bandung
Pamanukan
Bandung 8 Pamanukan
Indramayu
Indramayu
219,3
Bandung
Garut
252,3
Indramayu
Cirebon
274,2
Indramayu
Cirebon Babakan
274,2 400,3
10
Garut
Tasikmalaya
305,6
Bandung
Tasikmalaya Babakan
400,3 304,9
11
Cirebon
Brebes
346,5
Garut
Tasikmalaya
400,3
12
Cirebon
Brebes
346,5
Garut
Tasikmalaya Semarang
400,3 519,5
13
Brebes
Salatiga
565,5
Pamanukan Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan,
Garut
Cirebon
Babakan
Brebes
Tasikmalaya
Brebes
Semarang Salatiga
519,5 565,5
Brebes
Salatiga
565,5
15
Tasikmalaya
Purwokerto
540,3
Brebes
Salatiga
565,3
16
Purwokerto
Kebumen
738,3
17
Purwokerto
Kebumen
738,3
Indramayu, Garut, Cirebon, Babakan, Brebes Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan, Brebes, Tasikmalaya Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan, Brebes, Tasikmalaya, Semarang Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan, Brebes, Tasikmalaya, Semarang, Purwokerto Depok,
Semarang
Purwokerto
Salatiga
Klaten
Salatiga
Klaten
623,5
18
Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan, Brebes, Tasikmalaya, Semarang, Purwokerto, Salatiga Depok, Sukabumi, Serang, Cilegon, Jakarta, Subang, Bandung, Pamanukan, Indramayu, Garut, Cirebon, Babakan, Brebes, Tasikmalaya, Semarang, Purwokerto, Salatiga, Klaten
Jadi rute yang dipilih sesuai algoritma di atas adalah Depok Jakarta Pamanukan Indramayu Cirebon Brebes Salatiga Klaten dengan total jarak 623,7 km.
1. 2. 3. 4. 5.
Langkah pencarian: Dari starting point/initial node, akan dibentuk suatu himpunan simpul2 yang akan diperiksa nilainya (open). Dari simpul-simpul open akan diambil yang nilai f(x) terkecil dan dipindahkan ke himpunan simpul closed, simpul yang dipindahkan ini disebut best node. Tetangga-tetangga best node kemudian akan dibangkitkan, dimasukkan ke open node untuk diperiksa nilai f(x). Nilai f(x) di bagian open selalu diupdate setiap kali Best Node dipindah ke closed Pencarian berhenti saat f dan g goal node bernilai paling kecil.
function A*(start,goal) closedset := the empty set // Simpul yang sudah diperiksa (closed) openset := {start} //simpul-simpul yang hendak diperiks (open) came_from := the empty map // peta/jalur suatu node g_score[start] := 0 // Biaya jalur terbaik //Estimasi biaya dari awal ke akhir melalui y f_score[start] := g_score[start] + heuristic_cost_estimate(start, goal) while openset is not empty current := the node in openset having the lowest f_score[] value if current = goal return reconstruct_path(came_from, goal) remove current from openset add current to closedset for each neighbor in neighbor_nodes(current) if neighbor in closedset continue tentative_g_score := g_score[current] + dist_between(current,neighbor) if neighbor not in openset or tentative_g_score < g_score[neighbor] came_from[neighbor] := current g_score[neighbor] := tentative_g_score f_score[neighbor] := g_score[neighbor] + heuristic_cost_estimate(neighbor, goal) if neighbor not in openset add neighbor to openset return failure function reconstruct_path(came_from, current_node) if current_node in came_from p := reconstruct_path(came_from, came_from[current_node]) return (p + current_node) else return current_node
Tabel Tracing:
i 1
BN Depok
Closed Depok
Suksesor
Open
Ubah Parent? -
Jakarta, Serang, Jakarta Serang Sukabumi, Subang Sukabumi Subang Cilegon, Pamanukan
Serang Sukabumi Subang Cilegon Pamanukan Serang Sukabumi Depok,Jakarta,Pama Subang , Subang Cilegon 3 Pamanukan nukan Indramayu Pamanukan Indramayu Serang Sukabumi Depok,Jakarta,Pama Pamanukan,Indra 4 Subang Subang Cilegon nukan,Subang mayu,Bandung Indramayu Bandung Depok,Jakarta,Pama Serang Sukabumi 5 Indramayu nukan,Subang,Indra Subang,Cirebon Subang Cilegon mayu Bandung Cirebon Serang Sukabumi Depok,Jakarta,Pama Bandung,Babakan, Subang Cilegon 6 Cirebon nukan,Subang,Indra Brebes Bandung Babakan mayu,Cirebon Brebes Depok,Jakarta,Pama Serang Sukabumi nukan,Subang,Indra Subang Cilegon 7 Babakan Garut, Brebes mayu,Cirebon,Baba Bandung Brebes kan Garut Depok,Jakarta,Pama Serang Sukabumi Babakan nukan,Subang,Indra Subang Cilegon 8 Brebes ,Tasik,Semarang,S mayu,Cirebon,Baba Bandung Garut Tasik alatiga kan,Brebes Semarang Salatiga Depok,Jakarta,Pama Serang Sukabumi nukan,Subang,Indra Subang Cilegon 9 Semarang mayu,Cirebon,Baba Salatiga Bandung Garut Tasik kan,Brebes,Semara Salatiga ng,Salatiga Depok,Jakarta,Pama Serang Sukabumi nukan,Subang,Indra Purwokerto,Klate Subang Cilegon 10 Salatiga mayu,Cirebon,Baba n Bandung Garut Tasik kan,Brebes,Semara Purwokerto Klaten ng 2 Jakarta Depok,Jakarta 11 Klaten
Subang tidak diubah parent karena jarak Subang via Pamanukan lebih besar daripada via Depok Indramayu: Tidak, karena jarak Indramayu via Pamanukan lebih kecil daripada dari Subang Subang: Tidak karena jarak dari Depok lebih kecil daripada dari Indramayu Bandung: Tidak karena jarak dari Subang lebih kecil daripada bila parent Bandung diganti menjadi Cirebon Brebes: Tidak, karena jarak Brebes lebih kecil bila parentnya tetap Cirebon daripada Babakan Babakan: Tidak karena jaraknya akan lebih kecil bila parent tetap Cirebon daripada Brebes Salatiga: Tidak karena jaraknya akan lebih kecil bila parent tetap Brebes daripada Semarang
UCS A*
14 11
623.7 623.7
Ya Ya
Ya Ya
F. Kesimpulan
Pencarian dengan menggunakan algoritma UCS dan A* akan menghasilkan solusi yang komplit dan optimal. Namun algoritma UCS memiliki waktu komputasi yang lebih tinggi dikarenakan jumlah iterasi yang lebih besar. Karena optimal, maka kedua algoritma menghasilkan solusi yang sama yaitu rute Depok-JakartaPamanukan-Indramayu-Cirebon-Brebes-Salatiga-Klaten dengan jarak tempuh terpendek dibandingkan jalur lain yaitu 627.7 KM.