Bab6 KBF Kelompok2 Tugas [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA BAB NAMA



NIM



TANGGAL JENIS ASISTEN



: CONSTRAINT SATISFACTION PROBLEM : -RENDY PUTRA JALIASMAR -ABDUL KHALIK SEMBIRING -MUHAMMAD RIFQI -MUHAMMAD IQBAL ALVIN : -165150200111148 -165150200111153 -165150207111076 -165150201111186 : 18/04/2018 : TUGAS : -DINDY FITRIANNORA -WINDYA HARTASIH



ACC



A. DEFINISI MASALAH 1. Jelaskan konsep dasar dari agen berbasis pengetahuan dan hal- hal apa saja yang harus dipenuhi ketika membuat agen tersebut. 2. Berilah contoh kasus entailment dari permainan Wumpus World berdasarkan aturan yang diberikan 3. Dari soal nomor 2, tunjukkan dengan metode pembukuan pembuktian baik meodel checksum ataupun menggunakan tabel kebenaran (minimal 3 kalimat dan maksimal 6 kalimat) Contoh pengerjaan : Diketahui KB = (B1,1 (P2,1 V ¬P3,1) V ¬B1,1) dan σ = ¬B1,1 V P2,1 Buktikan dengan tabel kebenaran berikut, apa saja kondisi yang memenuhi KB|=σ



4. Carilah kode program dari library atau lainnya dan kemudian modifikasi yang digunakan untuk megimplementasikan konsep agen berbasis logika dengan menerapkan pula proses interfensi dengan cara entailement yang kemudian dibuktikan dengan model checking dan tabel kebenaran.



B. JAWAB 1. Konsep dasar agen berbasis pengetahuan  Mengetahui hal – hal tentang dunia dan dapat melakukan reasoning (berpikir, bernalar) mengenal a. Hal – hal yang tidak diketahui sebelumnya (imperfect/partial information) b. Tindakan yang paling baik untuk diambil (best action)  Menyatakan apa yang diketahui oleh agent  Pendekatan deklaratif dalam membangun agen dengan memberitahu informasi yang relevan berdasarkan sebuah kecerdasa1n buatan (tell)  Agen display dapat ditanya (atau bertanya diri sendiri) apa yang sebaiknya dilakukan berdasarkan kecerdasan buatan (ask) Agen berbasis pengetahuan harus dapat  Merepresentasikan world, state, action, dll  Menerima informasi baru  Meng-update representasinya  Myimpulkan pengetahuan lain yang tidak eksplisit (hidden property)  Menyimpulkan action apa yang perlu diambil 2. Wumpus World a. Aturan permainan dalam Wumpus world  Performance measure : emas +1000, mati –1000, perak -1, panah -10.  Environment : Matriks 4x4 ruang dengan intial state [1,1]. Ada emas, Wumpus, dan lubang yang lokasinya dipilih secara acak.  Percept terdiri dari :  Hembusan angina : kamar disamping lubang jebakan ada hembusan angina  Kilauan : kamar dimana ada emas ada kilauan / sinar  Bau : kamar dimana disamping Wumpus berbau busuk (stench)  Action : maju, belok kiri 90, belok kanan 90, tembak panah (hanya 1), ambil benda. b. [1,1] OK dan [1,2] ada hembusan angina (H). 1



2



1 2 3 4



? H



?



A



?



A



3



4 A : Agen H : Hembusan angin E : Emas L : Lubang B : Bau T : Terkunjungi W : Wumpus K : Kilauan



c. Model jebakan ada 3 pilihan Boolean di [1,3], [2,1], [2,2] dengan 8 kemungkinan model.



3. Pembuktian model checksum KB = pengamatan (percept) + aturan main Wumpus world. Untuk menyatakan apakah kamar [2,1] aman atau tidak aman atau tidak aman, maka dilakukan entailment yang dibuktikan dengan menggunakan model checksum yakni memeriksa semua kemungkinan M(Kb), M(α1).



Dari ilustrasi diatas menunjukkan bahwa : M(Kb) subset dari M(α1) sehingga bisa disimpulkan bahwa kamar [2,1] aman.  Untuk pengamatan apakah kamar [2,2] aman, maka dengan ditunjukkan oleh α2, ilustrasinya sebagai berikut :







Dari gambar tersebut menunjukkan bahwa M(Kb) bukan subset dari M(α2), sehingga bisa disimpulkan bahwa KB | ≠ α2, dengan kata lain kamar [2,2] tidak aman.



Tabel Kebenaran KB = B1,2 ˄ (P2,2 ˅ P1,3) α1 = menyaatkan kamar di [2,1] aman B1,1 B1,2 P2,1 P1,2 P2,2 F F F F F F F F F F F T F F F F T F F F F T F F T F F T F F Karena KB 1 = α1, maka kamar [2,1] aman



P1,3 F T F T F T



KB F F F T T T



α1 T T T T T T



α2 = menyaatkan kamar di [2,2] aman B1,1 B1,2 P2,1 P1,2 P2,2 P1,3 F F F F F F F F F F F T F T F F F F F T F F F T F T F F T F F F T F F T Karena KB 1 = α1, maka kamar [2,2] aman.



KB F F F T T T



α1 T T T T T T



4. Source Code Wumpus.java 1 import java.util.Scanner; 2 3 public class wumpus { 4 5 static int scream = 0; 6 static int score = 0; 7 static int complete = 0; 8 9 static boolean check(Tiles t) { 10 int temp = t.sense(); 11 if (temp == 1 || temp == 2) { 12 return false; 13 } 14 return true; 15 } 16 17 public static void main(String[] args) { 18 Scanner scr = new Scanner(System.in); 19 Environment e = new Environment(); 20 String w[][] = new String[5][5];



21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50



51 52 53 54 55 56 57 58 59 60 61



e.accept(w); System.out.println("\n\n Finding the solution..."); Tiles t[] = new Tiles[17]; int c = 1; out: for (int i = 1; i < 5; i++) { for (int j = 1; j < 5; j++) { if (c > 16) { break out; } t[c] = new Tiles(w[i][j], c); ++c; } } t[13].safe = 1; t[13].visited = 1; int pos = 13; int condition; int limit = 0; String temp1, temp2; do { ++limit; condition = -1; if (t[pos].env.contains("G")) { complete = 1; System.out.println("Gold Found!"); break; } if (t[pos].br != 1 && t[pos].r != 1 && t[pos + 1].doubt_pit < 1 && t[pos + 1].doubt_wump < 1 && t[pos + 1].pit != 1 && t[pos + 1].wump != 1 && !(t[pos].back.contains("r") && (t[pos].l != 1 || t[pos].u != 1 || t[pos].d != 1) && check(t[pos]))) { temp1 = "1"; t[pos].r = 1; ++pos; System.out.println("\nfront pos" + pos); ++score; t[pos].back += temp1; condition = t[pos].sense(); if (condition == 3) { complete = 1; break; } else if (condition == 1 && t[pos].visited == 0) {



62



if (t[pos].br != 1 && t[pos + 1].safe != 1) {



63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93



94



t[pos + 1].doubt_pit += 1; } if (t[pos].bu != 1 && (pos - 4) >= 1 && t[pos - 4].safe != 1) { t[pos - 4].doubt_pit += 1; } if (t[pos].bl != 1 && (pos - 1) >= 1 && t[pos - 1].safe != 1) { t[pos - 1].doubt_pit += 1; } if (t[pos].bd != 1 && (pos + 4) = 1 && t[pos - 4].safe != 1) { t[pos - 4].doubt_wump += 1; } if (t[pos].bl != 1 && (pos - 1) >= 1 && t[pos - 1].safe != 1) { t[pos - 1].doubt_wump += 1; } if (t[pos].bd != 1 && (pos + 4) = 1 && t[pos - 4].safe != 1) { 109 t[pos - 4].doubt_pit += 1; 110 } 111 if (t[pos].bl != 1 && (pos - 1) >= 1 && t[pos - 1].safe != 1) { 112 t[pos - 1].doubt_pit += 1; 113 } 114 if (t[pos].bd != 1 && (pos + 4) = 1 && t[pos - 4].safe != 1) { 124 t[pos - 4].doubt_wump += 1; 125 } 126 if (t[pos].bl != 1 && t[pos - 1].safe != 1) { 127 t[pos - 1].doubt_wump += 1; 128 } 129 if (t[pos].bd != 1 && (pos + 4) = 1 && t[pos - 1].safe != 1) { t[pos - 1].doubt_pit += 1; } if (t[pos].bd != 1 && (pos + 4) = 1 && t[pos - 4].safe != 1) {



168 169 170



t[pos - 4].doubt_wump += 1; } if (t[pos].bl != 1 && t[pos - 1].safe != 1) {



171 172 173



t[pos - 1].doubt_wump += 1; } if (t[pos].bd != 1 && (pos + 4) 50) { 183 int temp3 = pos; 184 int flag_1 = 0, flag2 = 0, flag3 = 0, flag4 = 0; 185 System.out.println("\nCurrently at position " + temp3 + ".\nThinking..."); 186 while (t[pos].visited == 1 && t[pos].br != 1) { 187 ++pos; 188 ++score; 189 190 } 191 if (t[pos].pit == 1 || t[pos].wump == 1 || (t[pos].br == 1 && t[pos].visited == 1 && t[pos].safe != 1)) { 192 pos = temp3; 193 } 194 if (flag_1 == 0) { 195 t[pos].back += "1"; 196 } 197 while (pos + 4 >= 1 && t[pos].bu != 1 && t[pos].visited == 1) { 198 pos -= 4; 199 ++score; 200 } 201 if (t[pos].pit == 1 || t[pos].wump == 1 || (t[pos].bu == 1 && t[pos].visited == 1 && t[pos].safe != 1)) { 202 pos = temp3; 203 flag3 = 1;



204 205 206 207 208



} if (flag3 == 0) { t[pos].back += "d"; } while (t[pos].visited == 1 && t[pos].bl != 1) {



209 210 211 212



213 214 215 216 217 218 219 220 221 222 223



224 225 226 227 228 229 230 231 232 233 234 235 236



--pos; ++score; } if (t[pos].pit == 1 || t[pos].wump == 1 || (t[pos].bl == 1 && t[pos].visited == 1 && t[pos].safe != 1)) { pos = temp3; flag2 = 1; } if (flag2 == 0) { t[pos].back += "r"; } while (pos + 4