Pages

Stop Exploitasi Hutan Indonesia!

Kamis, 27 Desember 2012

Laporan Praktikum Kecerdasan Buatan Modul 4



LAPORAN PRAKTIKUM
KECERDASAN BUATAN
MODUL 4



NAMA: TRI WIJAYANTO
NIM: 115410126
JURUSAN: TI/S1

LABORATORIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM YOGYAKARATA
2012







PEMBAHASAN PRAKTIKUM MODUL 4
PRAKTIKUM 1
DOMAINS
  judul,pengarang = symbol
  halaman        = unsigned
Pembahasan : Di dalam section domains terdapat beberapa variable yaitu; judul, pengarang, dan halaman. Dan dengan tipe data symbol dan unsigned.
PREDICATES
  buku(judul, halaman)
  nondeterm ditulis_oleh(pengarang, judul)
  nondeterm buku_tebal(judul)
Pembahasan :  Pada section predicates, terdapat beberapa pernyataan predikat dan variable variable, yang berfungsi untuk menjalankan aturan pada section clauses. nondeterm sendiri ialah berfungsi untuk memberi tahu compiler bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban (non-deterministik).
             CLAUSES       à    Tempat aturan dan fakta-fakta.

  ditulis_oleh(emha, "Markesot Bertutur").
  ditulis_oleh(kahlil, "Sang Nabi").
  buku("Sang Nabi", 132).
  buku("Markesot Bertutur", 379).
  buku_tebal(Judul):-
ditulis_oleh(_, Judul),
buku(Judul, Tebal),
Tebal > 300.
Pembahasan : Di section clauses, baris atas adalah pendeklarasian variable, dimana pernyataan-pernyataan yang ada di masukkan di dalam variable. buku_tebal(Judul):- ditulis_oleh(_,Judul), buku(Judul,Tebal), Tebal > 300. Printah tersebut merupakan sebuah aturan yang terjadi didalam program ini.



GOAL
ditulis_oleh(X, Y).
Pembahasan : Pada section goal, merupakan perintah untuk mencari penulis buku.
HASIL


PRAKTIKUM 2
PREDICATES
  nondeterm jenis(symbol, symbol)
  nondeterm adalah(symbol, symbol)
  hidup(symbol, symbol)
  nondeterm dapat_berenang(symbol)
Pembahasan : Pada bagian ini, maksud dari nondeterm pada section predicates yang mendahului predicates jenis, yaitu memiliki lebih dari satu kemungkinan jawaban yang juga memiliki 2 input masukan bertipe symbol. Begitu juga dengan predicates , dapat_berenang juga memiliki lebih dari  Tipe data symbol  adalah tipe data yang berisi rangkaian karakter-karakter.
CLAUSES          à    Tempat aturan dan fakta-fakta.

  jenis(vertebrata,hewan).
  jenis(ikan,hewan).

  adalah(zebra,vertebrata).
  adalah(lele,ikan).
  adalah(tuna,ikan).

  hidup(zebra,di_darat).
  hidup(kodok,di_darat).
  hidup(kodok,di_air).
  hidup(tuna,di_air).

  dapat_berenang(Y):-
jenis(X,hewan),
adalah(Y,X),
hidup(Y,di_air).
Pembahasan : Pada bagian kedua ini yaitu section clauses terdapat 2 predikat jenis yaitu jika diterjemahkan ke dalam bahasa natural menjadi vertebrata adalah jenis hewan dan ikan adalah jenis hewan. Kemudian pada baris kedua terdapat 3 predikat adalah yang jika diterjemahkan ke dalam bahasa natural menjadi zebra adalah vertebrata, lele adalah ikan, tuna adalah ikan. Selanjutnya pada baris ketiga terdapat 4 predikat hidup yang jika diterjemahkan ke dalam bahasa natural menjadi zebra hidup di darat, kodok hidup di darat, kodok hidup di laut, dan tuna hidup di air. Pada akhir baris terdapat rule dapat berenang yaitu jika diterjemahkan ke dalam bahasa natural menjadiY dapat berenang jika X adalah jenis hewan, Y adalah X, dan Y hidup di air.
GOAL
dapat_berenang(Apa).
Pembahasan :  Pada bagian yang terakhir yaitu goal, kita akan menguji goal apa yang dapat berenang jawabnya adalah tuna. Hal ini dapat terjadi karena prolog menguji pada bagian clauses terlebih dahulu kemudian dilanjutkan ke bagian rule. Pada bagian rule, rule mencocokan pada clauses yaitu jenis(X,hewan)dengan 2 predikat jenis yang terdapat pada baris jenis kemudian predikat yang ada pada rule selanjutnya yaitu adalah(Y,X) dicocokan dengan predikat pada baris adalah dan yang terakhir adalah predikat hidup(Y,di_air) yang ada pada rule dicocokan pada baris predikat hidup. Jika semua terpenuhi maka prolog akan memcocokan pada bagian terakhir yaitu goal yang sesuai dengan rule dan memberikan hasil output.
HASIL






PRAKTIKUM 3
DOMAINS
  nama = symbol
Pembahasan : Program ini terdapat section domains. Dengan variable nama dan tipe data symbol.
PREDICATES
  nondeterm ayah(nama, nama)
  setiap_orang
Pembahasan : Section predicates menggunakan nondeterm di variable ayah dengan tipe data (nama, nama). Dan pernyataan variable setiap_orang. nondeterm pada program diatas berfungsi untuk memberitahu ke compiler Visual Prolog bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban.
CLAUSES          à    Tempat aturan dan fakta-fakta.
  ayah(sunarto,cici).
  ayah(andi,udin).
  ayah(roland,yansen).
  setiap_orang:-
ayah(X,Y),
write(X," adalah ayah ",Y,"\n"),
fail.
  setiap_orang.
Pembahasan : Pada clauses pendeklarasian pada variable ayah, memasukan data data sesuai tipe data yang dideklarasikan pada variable ayah. setiap_orang:- ayah(X,Y), write(X," adalah ayah " ,Y, "\n"), fail. Merupakan aturan yang di akhiri dengan perintah fail. Perintah fail sendiri untuk memaksa kegagalan sehingga memicu terjadinya lacak balik.
GOAL
  setiap_orang.
Pembahasan :
HASIL
 






PRAKTIKUM 4
PREDICATES
  beli_mobil(symbol,symbol)
  nondeterm mobil(symbol,symbol,integer)
  warna(symbol,symbol)
Pembahasan : Pada section predicates, pada variable mobil menggunakan nondeterm dengan tipe data(symbol, symbol, integer), dan terdapat variable beli_mobil dan warna dengan tipe data yang sama yaitu (symbol, symbol).
CLAUSES          à    Tempat aturan dan fakta-fakta.
  beli_mobil(Model,Warna):-
mobil(Model,Warna,Harga),
warna(Warna,seksi),!,
Harga < 25000.
  mobil(ferrari,hijau,25000).
  mobil(jaguar,hitam,24000).
  mobil(jaguar,merah,26000).
  mobil(porsche,merah,24000).

  warna(merah,seksi).
  warna(hitam,wibawa).
  warna(hijau,sejuk).
Pembahasan : Pada variable mobil dan warna terjadi pendeklarasian data ke dalam variable. beli_mobil(Model,Warna):- mobil(Model,Warna,Harga), warna(Warna,seksi),!, Harga < 25000. Merupakan aturan yang ada di dalam program, menggunakan predikat cut (!), cut sendiri berfungsi untuk tidak akan memungkinkan terjadinya lacakbalik melewati perintah cut.
GOAL
  beli_mobil(jaguar, Y).
Pembahasan :  Setelah goal di jalankan, maka hasilnya no solution, ini dikarenakan pendeklarasian pada section goal tidak sesuai dengan data/aturan pada clauses, terjadilah no solution.
HASIL



PRAKTIKUM 5
DOMAINS
  nama = symbol
  ipk  = real
Pembahasan : Program ini menggunakan section domains, terdapat variael nama dengan tipe data symbol, dan variable ipk dengan tipe data real.
PREDICATES
  nondeterm mahasiswa_teladan(nama)
  nondeterm mahasiswa(nama, ipk)
  masa_percobaan(nama)
Pembahasan : Pada section predicates, variable mahasiswa_teladan dengan tipe data (nama) dan variable mahasiswa dengan tipe data (nama, ipk) menggunakan nondeterm. Dan terpat juga variable masa_percobaan dengan  variable (nama).
CLAUSES          à    Tempat aturan dan fakta-fakta.
  mahasiswa_teladan(Nama):-
mahasiswa(Nama, IPK),
IPK>=3.5,
not(masa_percobaan(Nama)).

  mahasiswa("Vina Panduwinata", 3.5).
  mahasiswa("Helmi Yahya", 2.0).
  mahasiswa("Syahrul Gunawan", 3.7).

  masa_percobaan("Vina Panduwinata").
  masa_percobaan("Helmi Yahya").
Pembahasan : Pada section clauses, pendeklarasian data pada variable mahasiswa dan masa_percobaan. mahasiswa_teladan(Nama):- mahasiswa(Nama, IPK), IPK >= 3.5, not(masa_percobaan(Nama)). Perintah tersebut adalah merupakan sebuah aturan pada program tersebut yang natinya akan di jalankan oleh section goal. Seharusnya jika tidak ada perintah not sistem akan mencetak Vina Panduimata dan Syahrul Gunawan, karena kedua nama tersebut memiliki nilai lebih dari sama dengan 3,5. Akan tetapi karena diberikan perintah not pada variabel masa_percobaan , sedangkan vina panduinata termasuk dalam fakta tersebut maka prolog hanya mencetak syahrul gunawan saja yang memenuhi syarat.
GOAL
  mahasiswa_teladan(X).
Pembahasan : Pada section goal, menampilkan variable mahasiswa_teladan.
HASIL



TUGAS
DOMAINS
    nama,jender,pekerjaan,benda,alasan,zat = symbol
    umur = integer

PREDICATES
  nondeterm orang(nama,umur,jender,pekerjaan)
  nondeterm selingkuh(nama,nama)
  terbunuh_dengan(nama,benda)
  terbunuh(nama)
  nondeterm pembunuh(nama)
  motif(alasan)
  ternodai(nama,zat)
  milik(nama,benda)
  nondeterm cara_kerja_mirip(benda,benda)
  nondeterm kemungkinan_milik(nama,benda)
  nondeterm dicurigai(nama)

ClAUSES
  orang(budi,55,m,tukang_kayu).
  orang(aldi,25,m,pemain_sepak_bola).
  orang(aldi,25,m,tukang_jagal).
  orang(joni,25,m,pencopet).

  selingkuh(ina,joni).
  selingkuh(ina,budi).
  selingkuh(siti,joni).

  terbunuh_dengan(siti,pentungan).
  terbunuh(siti).

  motif(uang).
  motif(cemburu).
  motif(dendam).

  ternodai(budi,darah).
  ternodai(siti,darah).
  ternodai(aldi,lumpur).
  ternodai(joni,coklat).
  ternodai(ina,coklat).

  milik(budi,kaki_palsu).
  milik(joni,pistol).

  cara_kerja_mirip(kaki_palsu,pentungan).
  cara_kerja_mirip(balok,pentungan).
  cara_kerja_mirip(gunting,pisau).
  cara_kerja_mirip(sepak_bola,pentungan).

  kemungkinan_milik(X,sepatu_bola):- orang(X,_,_,pemain_sepak_bola).
  kemungkinan_milik(X,gunting):- orang(X,_,_,pekerja_salon).
  kemungkinan_milik(X,Benda):- milik(X,Benda).

  dicurigai(X):-
  terbunuh_dengan(siti,Senjata),
  cara_kerja_mirip(Benda,Senjata),
  kemungkinan_milik(X,Benda).

  dicurigai(X):-
  motif(cemburu),
  orang(X,_,m,_),
  selingkuh(siti,X).

  dicurigai(X):-
  motif(cemburu),
  orang(X,_,f,_),
  selingkuh(X,Lakilaki),
  selingkuh(siti,Lakilaki).

  dicurigai(X):-
  motif(uang),
  orang(X,_,_,pencopet).

  pembunuh(Pembunuh):-
  orang(Pembunuh,_,_,_),
  terbunuh(Terbunuh),
  Terbunuh <> Pembunuh,
  dicurigai(Pembunuh),
  ternodai(Pembunuh,Zat),
  ternodai(Terbunuh,Zat).

GOAL
  pembunuh(X).

Hasil







Penjelasan Program
     Setelah program di jalankan, di awal program akan melakukan proses dari section clauses, melacak data-data orang yang telah dideklarasikan pada section clauses, yang dimana terdapat data yang terlibat dalam kasus pembunuhan tersebut.
     Dari fakta yang ada, argument X merupakan argument Pembunuh. Dari argument pembunuh terdapat beberapa pernyataan persyaratan dan program akan melakukan unifikasi terhadap pernyataan tersebut.maka program akan mencari fakta orang yang mengetahui pembunuh dalam kasus tersebut. Pernyataan pertama yang di dapat adalah budi.
     Selanjutnya program mencari pernyataan terbunuh, maka yang ditemukan faktanya adalah siti. Dan kemudian program melakukan pencarian pada pernyataan dicurigai(X), dari pernyataan tersebut dilakukan proses pencarian menggunakan unifikasi terhadap pernyataan syarat-syarat tersebut. Kemudian program akan mencari senjata yang di pakai untuk membunuh, dengan melakukan proses di variable terbunuh_dengan. Maka fakta yang diperoleh ialah terbunuh_dengan(siti, pentungan).
              Setelah itu program melakukan proses pencarian fakta benda yang cara kerjanya seperti senjata, maka diperoleh cara_kerja_mirip(Benda, Senjata). Kemudian prolog memanggil pernyataan tersebut untuk mengetahui benda yang cara kerjanya mirip pentungan yang telah di eksekusi pada langkah sebelumnya. maka fakta yang didapat ialah cara_kerja_mirip(kaki_palsu, pentungan). Dan setelah itu program akan melakukan prose fakta dari variable kemungkinan_milik(X, Benda), milik (X, Benda). Dari pernyataan itu maka program mencari fakta bahwa siapa pemilik kaki palsu,  dan hasilnya milik(budi, kaki_palsu). Jadi kaki_palsu itu miliknya Budi.
                Kemudian program menjalankan proses pernyataan dari pembunuh karena masih terdapat pernyataan yang belum dip roses, yaitu pada variable ternodai(Pembunuh, Zat). Maka dijalankanlah proses ke dalam pernyataan tersebut, yang menyangkut nama/kata budi, maka hasilnya didapat ternodai(budi, darah).
                 Selanjuntya program melakukan proses terakhir yaitu pada ternodai(Terbunuh, Zat). Maka akan di dapat hasil ternodai(siti, darah). Dan kesimpulan dari pernyataan-pernyataan dan fakta-fakta yang telah ada, maka siti memiliki noda sama persis dengan budi. Berdasarkan kesamaan fakta-fakta tersebut, goal menampilkan bahwa budilah yang membunuh siti.

LISTING TERLAMPIR








2 komentar: