• Tidak ada hasil yang ditemukan

Modul Praktikum KB 2018

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Praktikum KB 2018"

Copied!
49
0
0

Teks penuh

(1)

Disusun Oleh:

Disusun Oleh:

Tim Teaching MK Kecerdasan Buatan

Tim Teaching MK Kecerdasan Buatan

Laboratorium Komputasi Cerdas

Laboratorium Komputasi Cerdas

Fakultas Ilmu Komputer Universitas Brawijaya

Fakultas Ilmu Komputer Universitas Brawijaya

Malang

Malang

2016

2016

MODUL PRAKTIKUM

MODUL PRAKTIKUM

KECERDASAN BUATAN

KECERDASAN BUATAN

(2)
(3)

TIM PELAKSANA

TIM PELAKSANA

Tim pelaksana perbaikan Modul Praktikum Kecerdasan Buatan Tim pelaksana perbaikan Modul Praktikum Kecerdasan Buatan Penanggung

Penanggung Jawab Jawab / / Pengarah Pengarah : : Ketua Ketua Lab. Lab. Komputasi Komputasi CerdasCerdas Koordinator

Koordinator Modul Modul : : Lailil Lailil MuflikhahMuflikhah Bab

Bab 1. 1. Konsep Konsep Dasar Dasar AI AI : : Yuita Yuita Arum Arum SariSari Bab

Bab 2. 2. Agen Agen cerdas cerdas : : Lailil Lailil MuflikhahMuflikhah Bab

Bab 3. 3. Uninformed Uninformed Search Search : M. : M. Ali Ali FauziFauzi Bab

Bab 4. 4. Informed Informed Search Search : : Imam Imam CholissodinCholissodin Bab

Bab 5. 5. Constraint Constraint Satisfaction Satisfaction Problem Problem : : S. S. H. H. WijoyoWijoyo Bab

Bab 6. 6. Agen Agen Logika Logika : : Ika Ika Kusumaning Kusumaning PutriPutri Bab

Bab 7. 7. First First Order Order Logic Logic : : Nurizal Nurizal D. D. P.P. Bab

Bab 8. 8. Logic Logic Programming Programming : : Lailil Lailil Muflikhah Muflikhah dan dan M. M. Ali Ali FauziFauzi Bab

Bab 9. 9. Ketidakpastian Ketidakpastian (Uncertainty) (Uncertainty) : : Imam Imam Cholissodin Cholissodin dan dan S. S. H. H. WijoyoWijoyo Bab

Bab 10. 10. Bayesian Bayesian Network Network : : Ika Ika Kusumaning Kusumaning Putri Putri dan dan Nurizal Nurizal D. D. P.P. Tim

Tim Editor Editor : : Asisten Asisten 1 1 dan dan 22 Tim

Tim Tata Tata Letak Letak / / Setting Setting : : Asisten Asisten 2 2 dan dan 33 Dokumentasi

(4)

DAFTAR ISI

DAFTAR ISI

JUDUL

JUDUL ... ... ii TIM

TIM PELAKSANA PELAKSANA ... ii... ii DAFTAR

DAFTAR ISI...ISI... . iiiiii DAFTAR

DAFTAR TABEL...TABEL... ... vv DAFTAR

DAFTAR GAMBAR ...GAMBAR ... ... vivi KATA

KATA PENGANTAR ...PENGANTAR ... vii... vii BAB 1

BAB 1 KONSEP DASAR KONSEP DASAR AI ...AI ... ... 11 1.1

1.1 Tujuan ...Tujuan ... ... 11 1.2

1.2 Ringkasan Materi ...Ringkasan Materi ... ... 11 1.3

1.3 Tugas Tugas Praktikum ...Praktikum ... ... 33 BAB 2

BAB 2 AGEN AGEN CERDAS CERDAS ... ... 44 2.1

2.1 Tujuan ...Tujuan ... ... 44 2.2

2.2 Ringkasan Materi ...Ringkasan Materi ... ... 44 2.3

2.3 Percobaan ...Percobaan ... ... 55 2.4

2.4 Tugas Tugas Praktikum ...Praktikum ... ... 77 BAB 3

BAB 3 UNINFORM SEARCH UNINFORM SEARCH ... ... 88 3.1

3.1 Tujuan ...Tujuan ... ... 88 3.2

3.2 Ringkasan Materi ...Ringkasan Materi ... ... 88 3.3

3.3 Percobaan ...Percobaan ... ... 1212 3.4

3.4 Contoh ...Contoh ... ... 1313 3.5

3.5 Latihan Praktikum ....Latihan Praktikum ... ... 2424 3.6

3.6 Tugas Tugas Praktikum ...Praktikum ... ... 2727 BAB 4

BAB 4 INFORMED SEARCH ...INFORMED SEARCH ... ... 2828 4.1

4.1 Tujuan ...Tujuan ... ... 2828 4.2

4.2 Ringkasan Materi ...Ringkasan Materi ... ... 2828 4.3

4.3 Percobaan ...Percobaan ... ... 3333 4.4

4.4 Contoh ...Contoh ... ... 3434 4.5

4.5 Latihan Praktikum ....Latihan Praktikum ... ... 4040 4.6

4.6 Tugas Tugas Praktikum ...Praktikum ... ... 4141 DAFTAR

(5)
(6)

DAFTAR TABEL

(7)

DAFTAR GAMBAR

(8)

KATA PENGANTAR

Alhamdulillah, puji syukur kehadirat Allah SWT karena atas rahmat dan hidayah-Nya, tim pelaksana dapat menyelesaikan Modul Praktikum Kecerdasan Buatan. Pada modul ini, lebih diarahkan untuk mencoba memahami dan mendalami materi perkuliahan melalui kegiatan praktikum dengan melakukan review beberapa aplikasi, kode program (dalam bentuk Library atau kode lainnya), khusus untuk materi konsep yang memang tidak ada pembuatan kode program sama sekali. Kemudian untuk materi yang memang ada implementasi kodingnya, dilakukan penjelasan lebih detail di kegiatan praktikum, dan diberikan beberapa contoh kode program serta memberikan case study untuk digunakan sebagai latihan, diskusi pembahasan dan sekaligus tugas yang semuanya akan dimasukkan dalam modul. Diharapkan para Praktikan mampu mencoba secara madiri maupun kelompok untuk setiap case study yang diberikan oleh Asisten Dosen mapun Dosen pengampu MK Kecer dasan Buatan, secara langsung.

Kami sadar bahwa modul praktikum ini masih banyak keterbatasan dan  pastinya masih sangat jauh dari kata sempurna dan diharapkan masukan dalam bentuk

kritik serta saran yang membangun untuk tetap menjaga kualitas dari materi yang disampaikan terkait materi praktikum MK Kecerdasan Buatan. Demikain pengantar dari kami, mohon maaf jika ada kesalahan dan kekhilafan. Semoga modul ini  bermanfaat bagi segenap praktikan. Selamat belajar.

(9)

BAB 1

KONSEP DASAR AI

1.1 Tujuan

1. Praktikan mampu memahami konsep dasar AI ( Artificial Intelligence)

2. Praktikan mampu memahami dan menjelaskan peran AI dalam kehidupan sehari-hari.

1.2 Ringkasan Materi

A. Apa itu AI?

AI adalah sebuah sistem yang dibangun untuk menyelesaikan permasalahan dengan cara cara berfikir manusia. AI adalah sebuah cara untuk membuat komputer  berfikir cerdas dalam mengolah beberapa representasi pengetahuan tentang masalah-masalah yang ada di lingkungan. AI diharapkan dapat beradaptasi dalam me-nyelesaikan masalah, sehingga akan lebih mudah dikomputasikan dan dinalar dengan logis.

B. Kategori AI

Terdapat 4 kategori AI secara umum yaitu acting like humans, thinking like hu-mans, acting rationally and thinking rationally.

1.

 Systems that act like humans

Sebuah sistem dimana beraksi seperti manusia, sistem ini disebut  juga dengan Pendekatan Turing Test. Tahun 1950, Alan Turing merancang suatu ujian bagi komputer yang berintelijensia (bot Cerdas) untuk menguji apakah komputer tersebut mampu mengelabuhi seorang manusia/ interrogator melalui komunikasi berbasis teks jarak jauh. Ten-tunya komputer tersebut harus memiliki kemampuan, Natural Language  Processing, Knowledge Representation, Automated Reasoning, Machine  Learning, Computer Vision, Robotics.

  Natural Language Processing: untuk berkomunikasi dengan

manusia

(10)

  Automated reasoning: untuk mengembalikan dan menjawab

menggunakan data-data yang telah tersimpan

  Machine learning:  agar mampu beradaptasi dengan

ling-kungan yang baru

 Computer Vision: untuk memahami sebuah objek   Robotics: untuk memindahkan objek

2.

 Systems that think like humans

Sebuah sistem yang berfungsi untuk berfikir seperti manusia, yang sering disebut sebagai Cognitive Modelling Approach. Model ini digunakan dengan cara melalui introspeksi, mencoba menangkap  pemikiran kita sendiri saat kita berfikir. “how do you know that you un-derstand ?”. Cognitive science berhubungan dengan penelitian-penelitian dari segi psikologi. Pendekatan Cognitive science  meliputi filosofi,  psikologi, kecerdasan buatan, neuroscience, linguistics, dan antropologi. Salah satu contoh perangkat lunak yang memiliki sistem AI dengan pen-dekatan cognitive science adalah ELIZA.

3.

 Systems that act rationally 

Sebuah sistem yang berbuat atau mengambil keputusan secara ra-sional, sering disebut sebagai The Laws of Though Approach.  Pendeka-tan ini muncul disebabkan manusia tidak selalu rasional dan logika tidak dapat merepresentasikan segalanya, contohnya adalah masalah ketid-akpastian. Terdapat dua masalah dalam pendekatan ini yaitu:

 Tidak mudah membuat pengetahuan informal, lalu menyatakan

da-lam formal term dengan notasi-notasi logika.

 Terdapat perbedaan besar antara dapat memecahkan masalah

“secara prinsip” dan memecahkannya “dalam dunia nyata 4.

 Systems that think rationally 

Sistem yang dapat berfikir secara rasional, biasa disebut sebagai The  Rational Agent Approach. Membuat inferensi logis merupakan bagian dari suatu rational agent. Karena untuk melakukan aksi secara rasional adalah dengan menalar secara logis.

(11)

Dengan menalar secara logis, maka bisa didapatkan kesimpulan  bahwa aksi yang dilakukan akan mencapai tujuan atau tidak.

Keuntungan AI sebagai rational agent :

  Rational Agent  lebih umum dengan logika (logika adalah bagian dari

rational agent) biasa, karena selain mengandung logika juga mengandung domain knowledge

 Dapat digunakan untuk pendekatan dengan metodologi-metodologi

yang bersifat ilmiah. C. AI dalam kehidupan sehari-hari

Berbagai produk AI berhasil dibangun dan digunakan dalam kehidupan sehari-hari. Produk-produk tersebut dikelompokkan ke dalam empat teknik yang ada di AI, yaitu: searching, reasoning, planning  dan learning . Contoh-contohnya:

 GPS (Rute Optimal)

 Permainan Catur

 MedicWare (Rekam medis Pasien)

 Speech Processing (Pengenalan suara, Pengenalan Pembicara)

 Computer Vision

  Robotic

1.3 Tugas Praktikum

Sebelum mengerjakan soal di bawah ini pelajari terlebih dahulu materi yang ada di modul praktikum maupun yang ada di materi perkuliahan.

Buatlah sebuah ulasan dalam sebuah video tentang film-film yang mengandung unsur kecerdasan buatan dan kemudian unggah pada Youtube dengan pengaturan pub-lic.  Durasi video ulasan tidak lebih dari 5 menit. Ulasan-ulasan tersebut bisa berisi  penjelasan-penjelasan karakter tokoh maupun alat yang digunakan dalam film tersebut

(12)

BAB 2

AGEN CERDAS

2.1 Tujuan

1. Praktikan mampu memahami konsep Agen Cerdas.

2. Praktikan mampu membuat contoh Agen Cerdas dan bagaimana

menganalisisnya.

2.2 Ringkasan Materi

A. Agen dan Lingkungan

Sistem Agen Cerdas adalah program yang dapat diberi tugas dan dapat menyelesaikan tugasnya secara mandiri, serta mempunyai inteligensi. Dengan bantuan sistem agen tersebut, maka pekerjaan yang membutuhkan waktu lama dapat diselesaikan dengan baik dan lebih cepat. Dengan adanya agen cerdas pada aplikasi diharapkan aplikasi tersebut dapat berpikir dan dapat menentukan pilihan langkah terbaik sehingga dapat mengalahkan manusia.

Definisi Agen Cerdas adalah segala sesuatu yang dapat merasakan lingkungannya melalui peralatan sensor-sensor, bertindak sesuai dengan lingkungannya dan dengan mengunakan peralatan penggeraknya /actuator (Russel dan  Norvig). Sebuah agen adalah sebuah sistem komputer yang berada dalam suatu lingkungan dan memiliki kemampuan bertindak secara otonomos didalam situasi lingkungan tersebut sesuai dengan sasaran yang dirancang (Woold-ridge).

(13)

Setiap agen yang diciptakan memiliki fungsi agen  yang biasanya akan dil-akukan pemetaan antara percept  dan tindakannya. Dalam mendesain sebuah agen ra-sional langkah pertama yang selalu dikakukan adalah menspesifikasikan lingkungan kerja yang mungkin terjadi. Fungsi agen yang sudah dibuat berdasarkan lingkungan kerjanya akan dibentuk sebuah program agen yang berjalan di arsitektur fisik dari agen untuk menyelesaikan fungsi agen yang ada.

Terdapat 5 tipe agen cerdas yaitu: Simpel Reflex Agents agen ini merupakan agen paling sederhana dimana agen hanya menerapkan teknik kondisi-aksi, Model-Based Reflex Agents agen ini mampu melakukan pelacakan terhadap lingkungan secara terus menerus sehingga lingkungan dapat dikesan dengan baik dan melakukan tindakan seperti agen reflex sederhana, Goal-Based Agents agen mengetahui tujuan yang ingin dicapai, sehingga agen akan bekerja terus menerus hingga tujuan agen tercapai, Utility-Based Agents agen ini memikirkan kondisi yang baik untuk agen sehingga agen dapat melakukan tugas jauh lebih baik, dan Learning agents merupa-kan agen yang mampu belajar dari pengalaman, sehingga mampu meningkatmerupa-kan kinerja agen itu sendiri.

B. PEAS

Agen memiliki ukuran tertentu dalam kinerjanya ( Performance Measure), ling-kungan tempat bekerja ( Environment ), penggerak sebagai aksi dari suatu kejadian ( Ac-tuators), serta sensor-sensor sebagai penerima kondisi yang ada di lingkungannya (Sensors). Lingkungan kerja (Task Environment ) dari agen ini disingkat PEAS (

P

er- formance measure,

nvironment ,

 A

ctuators,

 S

ensors). Sebagai contoh sebuah

automated taxi driver:

 Performance measure: Safe, fast, legal, comfortable trip, maximize profits

 Environment: Roads, other traffic, pedestrians, customers

 Actuators: Steering wheel, accelerator, brake, signal, horn

 Sensors: Cameras, sonar, speedometer, GPS, odometer, engine sensors, keyboard

2.3 Percobaan

A. Agen Cerdas (Vacumm Cleaner) Ketikkan program di bawah ini

(14)

Tabel 2.1 Kode Program Agen Cerdas AgenCerdas.java 1 2 3 4 5 6 7 8 9 10

public class AgenCerdas {

private String lingkungan[][]; AgenCerdas(int location){

lingkungan = new String[location][3]; }

public void setKondisi(int i, String Nama,String location,String status){ lingkungan[i-1][0]=Nama; lingkungan[i-1][1]=location; lingkungan[i-1][2]=status; } 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

public void vacumm (int i,String location, String status){ if ("kotor".equals(status.toLowerCase())){ System.out.println("----bersih-bersih----"); status = "bersih"; lingkungan[i][2]=status; vacumm(i,location,status); }else if ("kiri".equals(location.toLowerCase())){ System.out.println("geser kanan-->"); }else if ("kanan".equals(location.toLowerCase())){ System.out.println("<--geser kiri"); } }

public void bersihkan(){

for (int i = 0; i<lingkungan.length; i++){

System.out.println("Lokasi"+lingkungan[i][0]); vacumm(i,lingkungan[i][1],lingkungan[i][2]); }

cek(); }

public void cek (){

for (int i = 0; i<lingkungan.length; i++){ if(!"bersih".equals(lingkungan[i][2])){

bersihkan(); break;

} }

System.out.println("SEMUA SUDAH BERSIH"); }

public static void main(String[] args) { AgenCerdas a = new AgenCerdas(2);

a.setKondisi(1, "Lokasi 1", "kanan", "kotor"); a.setKondisi(2, "Lokasi 2", "kiri", "kotor"); a.bersihkan();

} }

(15)

B. Latihan Praktikum

Modifikasi kode program diatas sehingga dapat menyelesaikan task environment pada Gambar 1.2.

Gambar 2.2 Environment Vacumm Cleaner

2.4 Tugas Praktikum

Sebelum mengerjakan soal di bawah ini pelajari terlebih dahulu materi yang ada di modul praktikum maupun yang ada dimateri perkuliahan.

Carilah 2 aplikasi dari 5 tipe agen (simple reflex agents, model-based reflex agents, goal-based reflex agents, utility-based reflex agents dan Learning agents). Berikan review masing-masing aplikasi, kenapa aplikasi tersebut masuk  pada tipe agen tertentu ?

(16)

BAB 3

UNINFORM SEARCH

3.1 Tujuan

1. Praktikan mampu memahami konsep Problem-solving agent.

2. Praktikan mampu membuat sebuah program strategi pencarian tanpa informasi.

3.2 Ringkasan Materi

A. Problem-Solving Agent

Pada bab ini menjelaskan salah satu jenis agen yang berbasis tujuan yang dise- but dengan problem-solving agent.  Problem-solving agent ini memutuskan apa yang harus dilakukan dengan cara menemukan urutan tindakan yang menuju pada  state yang diinginkan. Dimulai dengan mendefinisikan secara tepat elemen-elemen yang  berkaitan dengan permasalahan ( problem) dan solusi ( solution) dengan memberikan  beberapa contoh ilustrasi. Tujuan umum dari bab ini adalah menjelaskan beberapa al-goritma pencarian yang digunakan dalam memecahkan sebuah masalah kemudian membandingkan kelebihan dari setiap algoritma pencarian. Pada dasarnya algoritma  bersifat uninformed  yang berarti tidak memiliki atau diberikan informasi terkait

per-masalahan maupun definisinya.

Sebuah permasalahan dapat didefinisikan dengan empat komponen yaitu, initial state, successor function, goal test dan path cost. Berikut merupakan penjelasan dari keempan komponen:

-  Initial state : Kondisi awal dari sebuah agen yang akan

melakukan tindakan tertentu. Misalkan,  Initial state pada permasalahan di Romania dapat ditulis sebagai berikut

) ( Arad   In

- Successor Function : Sebuah deskripsi dari tindakan yang mungkin dilakukan oleh agen dengan menggunakan successor function. Penulisan  successor function dapat ditulis sebagai berikut.

) ( x  FN  SUCCESSOR

(17)

Formula tersebut mengembalikan nilai pasangan dari tindakan dan  suc-cessor (action, successor ) dimana setiap tindakan ada pada  state x dan setiap  successor adalah kondisi yang dapat dijangkau oleh x dengan mengimplementasikan tindakan. Sebagai contoh, dari kondisi awal

) ( Arad 

 In , kemudian  successor function untuk permasalahan Romania

menjadi seperti berikut.

)} In(Zerind) ), (Go(Zerind ra)), In(Timisoa ara), (Go(Timiso , In(Sibiu)) ), {(Go(Sibiu

- Goal Test  : Menentukan apakah keadaan tertentu merupakan goal

 state. Biasanya terdapat explicit set dari kemungkinan goal state dan memeriksa apakah state tersebut merupakan salah satu dari goal terse- but. Seperti contoh pada kasus Romania, agen memiliki goal dengan  singleton set { In  Bucharest ( )}. Tidak jarang sebuah goal  dispesifikkan

oleh sebuah property abstrak daripada menyebutkan sebuah state secara eksplisit. Contohnya pada permainan catur, goal  yang ingin dicapai dis- but dengan checkmate dimana raja dari lawan sedang diserang dan tidak

dapat melakukan pergerakan.

-  Path Cost : Sebuah path cost memberikan numeric cost untuk se-tiap jalur. Agen memilih cost function yang mencerminkan ukuran kinerja agen. Pada kasus di Romania, agen mencoba untuk pergi ke Bu-charest sehingga path cost dapat dihitung dengan menjumlahkan cost dari setiap tindakan berdasarkan jalur yang diambil.

Sebuah solusi suatu permasalahan merupakan sebuah jalan dari initial state menuju  pada goal state. Kualitas dari sebuah solusi dihitung dari fungsi path cost dan solusi

yang optimal memiliki path cost yang rendah dari semua solusi.

Permasalahan pada dunia nyata sangatlah banyak dan kompleks sehingga perlu adanya dibuat sebuah abstraksi deskripsi  state.  Abstraksi merupakan sebuah proses menghapus detail dari sebuah representasi permasalahan. Selain abstraksi deskripsi dari sebuah  state, action yang diambil juga dilakukan abstraksi. Misalkan pada  pengemudi, mengemudi memiliki banyak aksi, disamping mengubah posisi kendaraan dan penumpangnya juga mengisi bahan bakar, menghasilkan polusi, menyalakan r adio  pada kendaraan dan sebagainya.

(18)

B. Uninformed Search Strategy

Pada bagian ini membahas lima macam strategi pencarian yang tergolong se- bagai uninformed search atau bisa disebut dengan blind search. Istilah tersebut dapat diartikan bahwa pencarian tersebut tidak memiliki informasi tambahan tentang  state yang disediakan pada definisi permasalahan, yang dapat dilakukan oleh algoritma un-informed search adalah menggenerate successor dan membedakan goal state dan non- goal state.

a. Breadth First Search (BFS)

Breadth First Search merupakan strategi sederhana dimana node root yang diekspansi pertama kemudian semua dari successor root yang diekspansi. Secara umum, semua node diekspansi pada level tertentu pada pencarian tree sebelum semua node pada level berikutnya diekspansi. BFS dapat diimplementasikan dengan pencarian tree yang merupakan First-In-First-Out queue (FIFO) dimana node yang dikunjungi pertama akan diekpansi terlebih dahulu. FIFO queue me-letakkan semua succeccor baru pada akhir queue yang berarti bahwa node level atas akan diekspansi sebelum node level bawah.

 b. Uniform-cost Search

Breadth First Search bekerja dengan optimal jika semua  step cost bernilai sama karena ia selalu mengekspansi node terdekat. Dengan pengembangan yang sederhana, dapat ditemukan algoritma yang optimal dengan segala  step function. Uniform-cost search mengekspansi node dengan path cost yang terkecil. Jika setiap  path cost  bernilai sama akan identic dengan Breadth First Search. Uniform-cost search tidak memperhatikan tentang jumlah dari langkah yag diambil, tetapi tetap memperhatikan tentang total cost. Oleh karena itu, akan terjadi stuck pada infinite loop  jika memperluas node yang memiliki  zero-cost yang mengarah kembali ke keadaan yang sama.

c. Depth First Search (DFS)

Depth First Search selalu mengekspansi node yang terdalam saat melakukan  pencarian. Pencarian dilakukan pada level yang paling dalam dimana node tidak mempunyai  successor , kemudian node diekspansi hingga pada level teratas. Strategi ini dapat diimplementasikan pencarian tree yang merupakan Last-In-First-Out queue (LIFO), atau bisa disebut dengan stack. Depth First Search memiliki

(19)

kebutuhan memori yang sangat sederhana, hanya membutuhkan tempat penyim- panan untuk single path dari root hingga leaf node bersamaan dengan setiap node  pada  path  tersebut. Setelah node tersebut diekspansi dapat dihapus dari memori

setelah semua turunannya telah dieksplorasi. d. Depth Limited Search

Permasalahan dari tree yang tidak terbatas dapat diatasi dengan cara menye-diakan Depth First Search dengan menentukan batas kedalaman l . Node pada kedalaman l diperlakukan seakan-akan node tersebut tidak memiliki successor . Al-goritma ini memberikan solusi untuk jalan yang tidak terbatas. Depth Limited Search dapat diimplementasikan pada modifikasi sederhana pada tree atau pada rekursif Depth First Search. Depth Limited Search dapat mengakhiri dua kondisi kegagalan, yang pertama saat nilai dari standard kegagalan tidak memiliki solusi dan saat nilai titik potong mengindikasikan tidak ad solusi dalam batas kedalaman (depth limit ).

e. Iterative Deepening Depth First Search

Iterative deepening search adalah strategi umum, sering digunakan dengan mengombinasikan Depth First Search yang menemukan batas kedalaman yang terbaik, yang dilakukan secara bertahap hingga menemukan sebuah  goal. Goal akan tercapai ketika batas kedalaman telah terjangkau, kedalaman dari node tujuan pada level paling atas. Iterative deepening search terlihat boros, karena  state degenerate berkali-kali namun ternyata ini tidak mengeluarkan banyak cost . Alasannya adalah pada tree yang sama (atau mendekati sama) percabangan pada setiap level, sebagian besar node ada pada tingkat bawah jadi tidak masalah seberapa banyak level teratas yang degenerate secara berulang-ulang.

(20)

3.3 Percobaan

function TREE-SEARCH ( problem,fringe) returns a solution or failure

 fringe←INSERT(MAKE-NODE(INITIAL-STATE[ problem]), fringe)

loop do

if  fringe is empty then return failure

node←REMOVE-FIRST( fringe)

if  GOAL-TEST[ problem]applied to STATE(node) succeeds then return node

else

 fringe←INSERT-ALL(EXPAND(node,problem), fringe)

end  Note:

- Fringe : Queue dari node yang belum diekspansi

- State : Keadaan yang direpresentasikan dengan node

- Expand : Membuat node baru dengan mengaplikasikan tindakan yang memung-kinkan pada node

(21)

3.4 Contoh

Penyelesaian masalah Route Planning dari Tottenham Court Road ke

Westminster dengan algoritma BFS. Node.Java

/*

* To change this license header, choose License Headers i n Project Properties. * To change this template file, choose Tools | Template s

* and open the template in the editor. */  package bfs; /** * * @author cahkanor */ import java.util.ArrayList; /**

* The Node class represents a station * in this tutorial and will as such have

(22)

* As well as an ArrayList of nodes that will store * any instantiated nodes children.

*/

 public class Node {

// A Unique Identifier for our node  public String stationName;

// An arraylist containing a list of Nodes that

// This node is directly connected to - It's child nodes.  Node leftChild;

 Node rightChild;  Node middleChild;  Node middleChild2;

 public Node(String stationName, Node firstChild, Node secondChild){ this.stationName = stationName;

this.leftChild = firstChild; this.rightChild = secondChild;

}

 public ArrayList<Node> getChildren(){

ArrayList<Node> childNodes = new ArrayList<>(); if(this.leftChild != null) { childNodes.add(leftChild); } if(this.rightChild != null) { childNodes.add(rightChild); } if(this.middleChild != null) { childNodes.add(middleChild);

(23)

} if(this.middleChild2 != null) { childNodes.add(middleChild2); } return childNodes; }

// An auxiliary function which allows // us to remove any child nodes from // our list of child nodes.

 public boolean removeChild(Node n){ return false;

}

}

BreadthFirstSearch.java /*

* To change this license header, choose License Headers i n Project Properties. * To change this template file, choose Tools | Template s

* and open the template in the editor. */  package bfs; /** * * @author cahkanor */ import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue;

(24)

* basic breadth first search in java */

 public class BreadthFirstSearch {

 Node startNode;  Node goalNode;

 public BreadthFirstSearch(Node start, Node goalNode){ this.startNode = start;

this.goalNode = goalNode; }

 public boolean compute(){

if(this.startNode.equals(goalNode)){

System.out.println("Goal Node Found!"); System.out.println(startNode);

}

Queue<Node> queue = new LinkedList<>(); ArrayList<Node> explored = new ArrayList<>(); queue.add(this.startNode);

//explored.add(startNode);

while(!queue.isEmpty()){

 Node current = queue.remove(); if(current.equals(this.goalNode)) { //System.out.println(explored); explored.add(current); System.out.println("Explored Node : "); explored.stream().forEach((item) -> { System.out.println(item.stationName+" "); });

(25)

return true; } else{ if(current.getChildren().isEmpty()) return false; else queue.addAll(current.getChildren()); } explored.add(current); } return false; } }

BFS.java (Main Class) /*

* To change this license header, choose License Headers i n Project Properties. * To change this template file, choose Tools | Template s

* and open the template in the editor. */  package bfs; /** * * @author cahkanor */  public class BFS { /**

(26)

*/

 public static void main(String[] args) { // TODO code application logic here

 Node station1 = new Node("Westminster", null, null);  Node station2 = new Node("Waterloo", station1, null);

 Node station3 = new Node("Trafalgar Square", station1, station2);  Node station4 = new Node("Canary Wharf", station2, station3);  Node station5 = new Node("London Bridge", station4, station3);

 Node station6 = new Node("Tottenham Court Road", station5, station4);

station1.leftChild = station2; station1.rightChild = station3; station2.middleChild = station3; station2.rightChild = station4; station3.middleChild = station4; station3.middleChild2 = station5; station4.middleChild = station5; station4.middleChild2 = station6; station5.middleChild = station6;

BreadthFirstSearch bfs = new BreadthFirstSearch(station6, station1);

if(bfs.compute())

System.out.print("Path Found!"); }

(27)

Output : Explored Node :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Westminster

Path Found!

Queue :

Keterangan : Node yang ditulis dengan huruf tebal adalah node yang diekspan  Node yang diberi garis bawah adalah node baru hasil ekspansi

Tottenham Court Road Print :

Tottenham Court Road

Tottenham Court Road - London Bridge Print :

Tottenham Court Road London Bridge

Tottenham Court Road - London Bridge - Canary Wharf Print :

(28)

Canary Wharf

London Bridge - Canary Wharf

London Bridge - Canary Wharf - Canary Wharf Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf

London Bridge - Canary Wharf - Canary Wharf - Trafalgar Square Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

London Bridge - Canary Wharf - Canary Wharf - Trafalgar Square - Tottenham Court Road

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road

Canary Wharf  - Canary Wharf - Trafalgar Square - Tottenham Court Road

Canary Wharf  - Canary Wharf - Trafalgar Square - Tottenham Court Road - Waterloo Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

(29)

Canary Wharf  - Canary Wharf - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square

Canary Wharf  - Canary Wharf - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –  London Bridge

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Canary Wharf  - Canary Wharf - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –  London Bridge - Tottenham Court Road

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

(30)

Tottenham Court Road

Canary Wharf   - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –  London Bridge - Tottenham Court Road

Canary Wharf   - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –  London Bridge - Tottenham Court Road - Waterloo

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Canary Wharf   - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –  London Bridge - Tottenham Court Road –  Waterloo - Trafalgar Square

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Trafalgar Square

Canary Wharf   - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –   London Bridge Tottenham Court Road  –   Waterloo Trafalgar Square

(31)

-Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Canary Wharf   - Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square –   London Bridge Tottenham Court Road  –   Waterloo Trafalgar Square -London Bridge - Tottenham Court Road

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road

Trafalgar Square - Tottenham Court Road - Waterloo - Trafalgar Square  –  London Bridge - Tottenham Court Road –  Waterloo - Trafalgar Square - London Bridge -

(32)

Tot-Trafalgar Square - Tottenham Court Road - Waterloo - Tot-Trafalgar Square  –  London Bridge - Tottenham Court Road –  Waterloo - Trafalgar Square - London Bridge - Tot-tenham Court Road - Westminster

Print :

Tottenham Court Road London Bridge

Canary Wharf Canary Wharf Trafalgar Square

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Waterloo

Trafalgar Square London Bridge

Tottenham Court Road Westminster

Karena node tujuan (Westminster) sudah ketemu, maka program selesai.

3.5 Latihan Praktikum

1. Formulasikan masalah berikut ini : a. Permasalahan Ember Air

Anda memiliki 2 ember, masing-masing berkapasitas 2 liter dan 1 liter; Pada dua ember tersebut tidak ada tanda ukuran sama sekali. Awalnya keduanya kosong. Anda bisa mengisi air ke dalam ember tersebut. Tujuan Anda adalah mendapatkan tepat satu liter air ke dalam ember yang kapasitasnya 2 liter.

(33)

b. 8-Puzzle Problem

c. 4-Queens problem

d. Simple Pac-Man

(34)

f. Route Finding

2. 8-Puzzle. Selesaikan permasalahan 8-Puzzle berikut ini secara manual dengan menuliskan detail langkah-langkah yang digunakan

Start State Goal State

a. Selesaikan permasalahan di atas secara manual menggunakan algo-ritama BFS

 b. Selesaikan permasalahan di atas secara manual menggunakan algo-ritama DFS

3. Carilah rute dari kota A ke kota I secara manual menggunakan Uniform Cost Search

(35)

3.6 Tugas Praktikum

Buatlah program dengan menggunakan algoritma Uniform-cost Search dengan me-modifikasi program BFS pada halaman sebelumnya (Uniform-cost Search mirip dengan BFS, tetapi mempertimbangakan nilai cost, atau dalam kasus ini adalah nilai  jarak antar node) pada pencarian rute berikut ini:

Input:

a. Kota asal  b. Kota Tujuan Output:

a. Langkah-langkah pencarian rute

 b. Rute yang merupakan solusi dan jarak yang ditempuh Kasus khusus yang wajib diujikan:

a. Kota A ke kota D  b. Kota H ke kota N c. Kota H ke kota U d. Kota O ke H e. Kota I ke A

(36)

BAB 4

INFORMED SEARCH

4.1 Tujuan

1. Praktikan mampu memahami konsep Informed Search.

2. Praktikan mampu membuat sebuah program strategi pencarian dengan informasi.

4.2 Ringkasan Materi

A. Informed Search

Informed search merupakan suatu kaidah yang merupakan metode untuk melakukan pencarian dengan memfokuskan pada informasi tertentu sehingga proses  pencarian akan lebih efisien. Informed search mencoba mengurangi jumlah pencarian dengan memilih node-node yang harus dibuka ( expand ). Inti dari metode ini adalah konsep tentang fungsi heuristik. Heuristik merupakan suatu kriteria, metode, atau  prinsip dalam memilih antara beberapa kemungkinan aksi yang dianggap paling

efisien untuk mencapai tujuan. Contoh fungsi heuristik pada kasus 8-puzzle :

 Heuristik misplaced tile : jumlah angka yang salah tempat h(n) = 5, karena angka 2,8,1,6,7 salah tempat

 Heuristik Manhatan distance : jumlah jarak dari angka yang salah tempat h(n) = 1 + 1 + 0 + 0 + 0 + 1 + 1 + 2 = 6

B. Informed Search Strategy

Pada bagian ini membahas lima macam strategi pencarian yang tergolong se- baga informed search atau bisa disebut dengan heuristic search.

(37)

a. MiniMax

Algoritma Minimax merupakan algoritma yang digunakan untuk menentukan  pilihan untuk memperkecil kemungkinan kehilangan nilai maksimal dengan

menerap-kan prinsip DFS untuk pencariannya. Algoitma ini diterapmenerap-kan dalam permainan yang melibatkan dua pemain seperti tic tac toe, checkers, go dan permainan yang menggunakan strategi atau logika lainnya. Algoritma minimax digunakan untuk memilih langkah terbaik, dimana kedua pemain akan saling berusaha untuk memenangkan permainan, sehingga apabila terdapat pemain yang mengalami keuntungan, pemain lain akan mengalami kerugian senilai dengan keuntungan yang diperoleh lawan dan sebaliknya.

Algoritma minimax akan merepresentasikan pohon dengan 2 simpul, yaitu min node dan max node, dimana min node akan membandingkan semua nilai anaknya dan memilih nilai terendah yang dimiliki anaknya dan max node akan membandingkan semua nilai yang dimiliki anaknya dan memilih nilai terbesar yang dimiliki anaknya. Dalam penentuan langkah yang diambil untuk mendapatkan hasil maksimal, dibutuhkan fungsi heuristic sebagai nilai yang merepresentasikan hasil permainan yang akan terjadi jika langkah tersebut dipilih, seperti 1,0,-1.

12 12 -5 41 -5 12 90 Max node Min node Leaf node

b. Alpha Beta Prunning

Alpha Beta Prunning merupakan metode pengembangan dari metode minimax yaitu untuk mengurangi jumlah simpul yang dibangkitkan dengan memanfaatkan dua nilai, alpha dan beta untuk melakukan pengecekan. Nilai alpha menunjukkan skor

(38)

terbaik yang bisa diambil pemain Min. Pruning dilakukan ketika simpul yang sedang dicek pada pemain Max, yaitu n, memiliki skor yang lebih rendah daripada alpha, maka n tidak perlu dicek lagi pada proses selanjutnya. Hal yang sama juga dilakukan  pada pemain Min dengan menggunakan nilai beta.

10 10 <=7 >=12 10 12 ? 10 5 ? ? ? ? ? ? ?

c. Best First Seacrh

Best First Seacrh merupakan metode pencarian dengan menggabungkan keun-tungan/kelebihan dari metode pencarian Breadth First Search dan Depth First Search. Metode Best-first search memilih simpul baru yang memiliki biaya terkecil diantara semua leaf nodes (simpul-simpul pada level terdalam) yang pernah dibangkitkan. Penentuan simpul terbaik dilakukan dengan menggunakan sebuah fungsi yang disebut fungsi evaluasi f(n) yang dapat berupa biaya perkiraan dari suatu simpul menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut. Beberapa terminologi dalam algoritma best first search adalah sebagai berikut :

 Fungsi evaluasi f(n), adalah fungsi yang digunakan untuk membangkitkan simpul

dari simpul sebelumnya

  Nilai heuristik h(n), adalah nilai perkiraan yang menjadi dasar dipilihnya simpul

saat ini menjadi simpul terbaik.

(39)

  Nilai sebenarnya g(n), adalah nilai “jarak” antara simpul akar dengan simpul saat

ini.

 Simpul awal disebut juga simpul akar, adalah simpul pertama dalam pohon yang

akan dibentuk.

 Simpul sekarang (current node)  adalah simpul yang sedang dievaluasi dengan

fungsi evaluasi untuk ditentukan apakah layak atau tidak menjadi solusi.

 Kandidat (suksesor) adalah simpul selanjutnya yang hendak diperiksa.

 Open list, adalah daftar simpul yang mungkin diakses dari simpul awal atau

simpul yang sedang dijalankan.

 Close list, adalah daftar simpul yang saat ini menjadi solusi sementara, yaitu solusi

terbaik saat ini

 Simpul tujuan, adalah simpul yang hendak menjadi tujuan akhir

d. Greedy Best First Search

Greedy Best First Search merupakan metode pencarian Best First Search dengan prinsip mengambil keputusan berdasarkan informasi terbaik saat itu (terbesar untuk kasus maksimasi, atau terkecil untuk kasus minimasi) tanpa mempertimbangkan konsekuensi ke depan, sehingga keputusan yang diambil saat ini diharapkan dapat mengantarkan kepada solusi terbaik di akhir. Dalam Greedy Best First Search, keputusan diambil menggunakan fungsi evaluasi f(n) tetapi t anpa mempertimbangkan nilai sebenarnya g(n) karena informasi nilai g(n) tidak berguna sebab Greedy Search tidak peduli dengan nilai sebenarnya. Greedy Search hanya akan mempertimbangkan nilai heuristik h(n) yang ditetapkan dengan aturan tertentu sedemikian rupa sehingga simpul yang dipilih adalah simpul terbaik.

dimana :

 f(n) : fungsi evaluasi

h(n) : estimasi biaya dari n untuk sampai pada tujuan

(40)

Step 4 Step 3 Step 2 Step 1 (5) (6) (4) (6) (5) (6) (4) (3) (5) (1) (5) (3) A A B C D A E F B C D A E F B C D E F e. A* Search

A star merupakan salah satu algoritma pencarian Best First Search terbaik yang mampu menemukan jalur dengan biaya pengeluaran paling sedikit dari titik permulaan yang diberikan sampai ke titik tujuan yang diharapkan. Dalam metode A star, fungsi f sebagai estimasi fungsi evaluasi terhadap node n, dapat dit uliskan :

dimana :

 f(n) : fungsi evaluasi (jumlah g(n) dengan h(n) )

 g(n) : biaya (cost) yang dikeluarkan dari keadaan awal sampai keadaan n h(n) : estimasi biaya untuk sampai pada tujuan

f. Hill Climbing

Hill Climbing merupakan sebuah metode pencarian dengan menerapkan proses Gambar : langkah-langkah algoritma Greedy Best First Search

(41)

heuristik. Artinya pembangkitan keadaan berikutnya sesuai dengan pembangkitan keadaan sebelumnya, begitu seterusnya sampai pada saat ditemukan solusi kurang op-timal, baru kemudian pembangkitan keadaan berikutnya ditentukan acak, dan diterus-kan ke pembangkitan keadaan berikutnya. Pembangkitan keadaan berikutnya sangat tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristik ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnya yang mungkin. Metode Hill Climbing menerapkan konsep pencarian  Depth First Search, sehingga eksplorasi terhadap keputusan dilakukan dengan cara  Depth First Search  yaitu dengan mencari path dengan nilai heuristik terkecil yang  bertujuan menurunkan cost untuk menuju kepada goal/keputusan.

4.3 Percobaan

Pseudocode metode Gredy Best First Search

DEKLARASI VARIABEL type simpul

parent : simpul heuristik : integer

ch : list of simpul type solusi: simpul

function GreedyBFS(S: list of simpul)   list of solusi { fungsi untuk mengembalikan solusi dari himpunan simpul}

DEKLARASI KAMUS

sol : himpunan_solusi stemp : simpul

ALGORITMA stemp= akar S

while stemp bukan daun do

bangkitkan anak stemp

pilih anak yang nilainya paling optimal sol  sol ∪ anakstemp

S  S-stemp

stemp  anakstemp endwhile

(42)

4.4 Contoh

Berikut adalah potongan program penyelesaian masalah maze/labirin menggunakan Greedy Best-First Search. Dengan heuris tic function menggunakan eu-clidian distance berikut adalah contoh labirin yang digunakan

0 1 2 3 4 5 6 7

╔═╦═╦═╦═╦═╦═╦═╦═╗

0

╠ ╬ ╬ ╬═╬ ╬═╬═╬ ╣

1

║ ║

║ ║

╠ ╬═╬═╬ ╬ ╬ ╬═╬ ╣

2

║ ●║ ║

║ ║

╠ ╬ ╬ ╬═╬═╬ ╬═╬ ╣

3

║ ║

║ ║

╠ ╬ ╬ ╬ ╬ ╬ ╬═╬ ╣

4

║ ║ ║ ║ ║ ║ ║ ║ ║

╠ ╬═╬ ╬ ╬ ╬ ╬ ╬ ╣

5

║ ║ ║

╠ ╬═╬═╬═╬ ╬ ╬═╬ ╣

6

║ ║

║ ║

╠ ╬═╬ ╬ ╬═╬═╬ ╬ ╣

7

║ ║ ║

║■║

╚═╩═╩═╩═╩═╩═╩═╩═╝

Dengan tanda {

}sebagai goal, dan {

  } initial / start. Berikut adalah  potongan program yang dibutuhkan.

 No Class Name : AbstractSearch.java Bisa didownload di : https://gist.github.com/Syafiqq/6ae086bcf13bd2adb8fef2dbdfedc513 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package ai; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List;

public class AbstractSearch {

(43)

19 20 21 22 23 24 25 26 27 28 29 30

private char[][] vmap; public AbstractSearch() {

this.startNode = new Pair(0, 0); }

public void createRooms() {

} }

 No Class Name : GreedyBestFirstSearch.java Bisa didownload di : https://gist.github.com/Syafiqq/5064e8390d2cf720a2e47b245411ffda 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package ai; import java.util.ArrayList; import java.util.Collections; import java.util.List;

public class GreedyBestFirstSearch extends AbstractSearch {

public GreedyBestFirstSearch(Pair startNode) {

this.startNode = startNode; super.createRooms();

System.out.println(super.visualizeMap()); }

public void greedy() {

List<Room> queue = new ArrayList<>();

queue.add(rooms[startNode.x][startNode.y]); while(!queue.isEmpty())

{

Collections.sort(queue, (o1, o2) -> o1.cost > o2.cost ? 1 : -1); Room r = queue.remove(0); if(r.goal) { printSolution("greedy", r); System.out.println("Greedy BFS Search:"); System.out.println("Solution step look at output/greedy.txt");

System.out.println(super.visualizeMap()); return;

}

visitedList.add(r);

(44)

!visitedList.contains(rooms[r.cur-40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 { rooms[r.current.x][r.current.y + 1].parent = new Pair(r.current.x, r.current.y);

queue.add(rooms[r.current.x][r.current.y + 1]);

}

if(r.s && !visitedList.contains(rooms[r.current.x + 1][r.current.y]) && !queue.contains(rooms[r.current.x + 1][r.current.y]))

{

rooms[r.current.x + 1][r.current.y].parent = new Pair(r.current.x, r.current.y);

queue.add(rooms[r.current.x + 1][r.cur-rent.y]);

}

if(r.w && !visitedList.contains(rooms[r.cur-rent.x][r.current.y - 1]) && !queue.contains(rooms[r.cur-rent.x][r.current.y - 1]))

{

rooms[r.current.x][r.current.y - 1].parent = new Pair(r.current.x, r.current.y);

queue.add(rooms[r.current.x][r.current.y -1]);

}

if(r.n && !visitedList.contains(rooms[r.current.x 1][r.current.y]) && !queue.contains(rooms[r.current.x -1][r.current.y]))

{

rooms[r.current.x - 1][r.current.y].parent = new Pair(r.current.x, r.current.y);

queue.add(rooms[r.current.x - 1][r.cur-rent.y]); } } } }

 No Class Name : Pair.java Bisa didownload di : https://gist.github.com/Syafiqq/6aa0e8153dbca1c40f7972a81072134a 1 2 3 4 5 6 7 8 9 10 11 12 package ai;

public class Pair {

int x, y;

public Pair(int x, int y) {

this.x = x; this.y = y; }

(45)

 No Class Name : Room.java Bisa didownload di : https://gist.github.com/Syafiqq/b4cf7405ac69f479d4e3b7184c3b5901 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package ai;

public class Room {

final Pair current; Pair parent;

boolean goal, e, w, s, n; double cost;

public Room(String alias, int x, int y) { //ESWN this.n = (alias.charAt(0) == '0'); this.e = (alias.charAt(1) == '0'); this.s = (alias.charAt(2) == '0'); this.w = (alias.charAt(3) == '0'); this.current = new Pair(x, y);

cost = Math.sqrt((Math.pow((7 - x), 2) + Math.pow((7 - y), 2)));

} }

 No Class Name : Test.java Bisa didownload di : https://gist.github.com/Syafiqq/8fb5857f048bcca42ba8f222b869a845 1 2 3 4 5 6 7 8 9 10 11 12 13 package ai;

public class Test {

public static void main(String[] args) {

Pair startNode = new Pair(2, 1);

GreedyBestFirstSearch greedy = new GreedyBest-FirstSearch(startNode);

greedy.greedy(); }

(46)

 No File Name : maze.txt Bisa didownload di : https://gist.github.com/Syafiqq/c0b512d0f923a97d643eeeae478b4e94 1 2 3 4 5 6 7 8 1001-1100-1001-1010-1000-1010-1010-1100 0101-0011-0010-1100-0101-1001-1010-0100 0001-1100-1101-0011-0010-0000-1110-0101 0101-0001-0100-1001-1100-0101-1011-0100 0101-0111-0101-0101-0101-0101-1101-0101 0001-1010-0010-0110-0101-0101-0011-0100 0001-1010-1000-1100-0111-0011-1100-0101 0011-1110-0111-0111-1011-1010-0110-0111

Satu blok menyatakan 1 petak labirin yang menggambarkan arah mata angin  NESW (North –  East –  South –  West)

Angka 1 : arah tersebut dapat terhubung dengan petak sebelahnya Angka 0 : arah tersebut tidak dapat terhubung dengan petak sebelahnya

Apabila angka tersebut dirubah menghasilkan labirin seperti gambar pada con-toh diatas.

Dengan menggunakan metode Greedy Best First-Search. Agen dapat menemukan goal state dengan melewati lorong seperti gambar berikut.

0 1 2 3 4 5 6 7

╔═╦═╦═╦═╦═╦═╦═╦═╗

0

║┌─┐║

╠│╬│╬ ╬═╬ ╬═╬═╬ ╣

1

║│║└───┐║ ║┌───┐║

╠│╬═╬═╬│╬ ╬│╬═╬│╣

2

║└─●║ ║└───┘ ║│║

╠ ╬ ╬ ╬═╬═╬ ╬═╬│╣

3

║ ║

║ ║ │║

╠ ╬ ╬ ╬ ╬ ╬ ╬═╬│╣

4

║ ║ ║ ║ ║ ║ ║ ║│║

╠ ╬═╬ ╬ ╬ ╬ ╬ ╬│╣

5

║ ║ ║ │║

╠ ╬═╬═╬═╬ ╬ ╬═╬│╣

6

║ ║

║│║

╠ ╬═╬ ╬ ╬═╬═╬ ╬│╣

7

║ ║ ║

║■║

╚═╩═╩═╩═╩═╩═╩═╩═╝

(47)

 pada program GreedyBestFirstSearch.java yang diturunkan dari AbstractSearch.java. Labirin ini terdiri dari beberapa petak / ruangan berdasarkan kordinat x dan y yang direpresentasikan dengan potongan program Pair.java. Setiap petak / ruangan memiliki attribut arah mata angin (NESW) untuk dapat mengidentifikasi ruangan 1 dengan ru-angan lain yang berdampingan ditunjukkan pada Room.java.

Fungsi heuristic h(n) yang digunakan adalah euclidian distance yang menggam- barkan estimasi jarak ruangan tersebut terhadap ruangan tujuan ditunjukkan pada  potongan program Room.java. Representasi labirin degenerate berdasarkan data pada maze.txt yang menggambarkan arah mata angin dan jalan tiap petaknya. Berikut con-tohnya. 1011

╔═╗

╚═╝

1100

╔═╗

╚ ╝

0111

╔ ╗

║ ║

╚═╝

Fungsi pencarian menggunakan Greedy Best First Search terletak pada fungsi greedy() pada file GreedyBestFirstSearch.java. fungsi ini akan melakukan ekspansi terhadap labirin sampai menuju goal yang ada (terletak pada koodinat {7, 7} berdasar-kan zero-based indexing ). Apabila telah menemukan goal maka node pencarian seca ra rekursif melakukan backward sampai menemukan posisi start / initial state (menggunakan atrribut node.parent).

Algoritma ini dijalankan melalui Test.java dengan initial state / ruangan awal terletak pada koordinat {1, 2} berdasarkan zero-based indexing . Jalur yang dihasilkan oleh algoritma ini akan ditulis pada output/greedy.txt yang berisi Tranversed Node dan  Expanded Node berdasarkan one-based indexing

(48)

start goal

4.5 Latihan Praktikum

1. Deskripsikan dan tentukan nilai h(n) dan g(n) dari permasalahan berikut a. Graph problem, dimana titik A adalah state awal dan titik D adalah goal.

A B C G F D E  b. 8-puzzle problem c. 8-queen problem

2. Selesaikan permasalahan permainan tic tac toe berikut menggunakan algoritma MiniMax dan Alpha Beta Prunning

X

O X X

O O

(49)

c. Jika kedua pemain, baik X dan O sama-sama menerapkan algoritma Alpha Beta Prunning, siapakah yang menang?

3. Sesuai dengan graph beserta informasi  g(n) & h(n) yang telah anda definisikan  pada jawaban soal nomor 1 a, carilah rute dari kota A ke kota D secara manual

menggunakan :

a. Greedy BFS

 b. A*

4.6 Tugas Praktikum

Buatlah program (“untuk soal latihan praktikum nomor 3 b” atau “ untuk  contoh masalah maze/labirin diatas dengan menggunakan algoritma A* dengan nilai  f(n) =  g(n)+h(n), misal  g(n) adalah tingkat kedalaman penelusuran, dan h(n) adalah jarak Manhattan atau Euclidian”) dengan memodifikasi program pada contoh program di-atas.

Gambar

Gambar 2.1 Agen –  Sensors/Actuator –  Percepts/Actions –  Lingkungan
Tabel 2.1 Kode Program Agen Cerdas AgenCerdas.java 1 2 3 4 5 6 7 8 9 10
Gambar 2.2 Environment Vacumm Cleaner
Gambar : ilustrasi  algrotima min-max
+2

Referensi

Dokumen terkait

Bila film balutan primer untuk luka bakar yang terbuat dari kolagen yang diisolasi dari ikan gabus (Channa striata) dapat mempengaruhi kadar TGF-β dalam darah

Burst abdomen adalah terpisahnya jahitan luka pada abdomen secara parsial atau komplit salah satu atau seluruh lapisan dinding abdomen pada luka post operatif disertai

Apabila dibandingkan dengan indikator Renstra Kementerian Kesehatan Tahun 2015-2019 untuk Program Pencegahan dan Pengendalian Penyakit yakni indikator Persentase

Managemen intruksional pesantren Syarifuddindalam menjadikan santri proaktif menjawab isu-isu kontemporer dengan cara mendidik santri yang alim ilmu agama serta

Berangkat dari uraian tersebut diatas, masalah yang diangkat dalam penelitian ini adalah tentang “Nilai -nilai Pendidikan Multikultural “, dimana pada akhir-akhir

Mahasiswa Bengkalis di Pekanbaru pada Pilkada Bengkalis tahun 2015 ialah adanya orientasi kognitif yaitu pengetahuan tentang pilkada dan sosok kepemimpinan dari

Penahanan panas dalam bangunan yang dikaitkan dengan penggunaan material pada elemen konstruksi adalah sebagai insulasi termal bangunan dengan prinsip pematahan

Data adalah bahan baku informasi dan dikumpulkan dalam suatu basis-data (database) agar pengumpulan, penyimpanan, pemeliharaan, pengolahan, dan pengamanannya dapat