Penyelesaian masalah Petani, Kambing, Hariamau dan Sayuran dalam CLIPS
1 Comments Published by indra_ehm on Sunday, February 24, 2008 at 8:55 PM.
Kalau anda pernah mengikuti mata kuliah Artificial Intelligence, anda pasti sudah tidak asing mendengar judul tersebut. Masalah yang umum ditanyakan kepada newbie AI selain masalah "Water Jug".
Soal :
Seorang petani akan menyebrangkan seekor kambing, seekor harimau, dan sayur-sayuran dengan sebuah boat yang melalui sungai. Boat hanya bisa memuat petani dan satu penumpang yang lain (kambing, harimau, atau sayur-sayuran). Jika ditinggalkan oleh petani tersebut, maka sayur-sayuran akan dimakan oleh kambing, dan kambing akan dimakan oleh harimau.
Penyelesaian :
Berikut adalah penyelesaian program CLIPS yang telah dibuat oleh teman saya. Sedangkan saya sendiri dulu tidak sanggup menyelesaikan masalah ini.
*di lain soal, kambing sering digantikan dengan serigala
Soal :
Seorang petani akan menyebrangkan seekor kambing, seekor harimau, dan sayur-sayuran dengan sebuah boat yang melalui sungai. Boat hanya bisa memuat petani dan satu penumpang yang lain (kambing, harimau, atau sayur-sayuran). Jika ditinggalkan oleh petani tersebut, maka sayur-sayuran akan dimakan oleh kambing, dan kambing akan dimakan oleh harimau.
Penyelesaian :
Berikut adalah penyelesaian program CLIPS yang telah dibuat oleh teman saya. Sedangkan saya sendiri dulu tidak sanggup menyelesaikan masalah ini.
; inisialisasi keadaan awal
(deffacts init
(timur petani)
(timur harimau)
(timur kambing)
(timur sayuran)
)
; urutan makan dimakan
(deffacts makan
(makan harimau kambing)
(makan kambing sayuran)
)
; aturan pengangkutan ke barat
; petani dan kambing ke barat
(defrule petaniKambingBarat1
?i<-(timur petani)
?j<-(timur ?k)
(timur ?h)
(timur ?s)
(makan ?h ?k)
(makan ?k ?s)
=>
(printout t ?k " dan petani ke barat " t)
(assert(barat petani))
(assert(barat ?k))
(retract ?i)
(retract ?j)
)
; harimau dan petani ke barat
(defrule petaniHarimauKeBarat
?i<-(timur petani)
?j<-(timur ?h)
(timur ?s)
(barat ?k)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(retract ?j)
(assert(barat petani))
(assert(barat ?h))
(printout t ?h " dan petani ke barat" t)
)
; sayuran dan petani ke barat
(defrule sayuranPetaniBarat
?i<-(timur petani)
?j<-(timur ?s)
(barat ?h)
(timur ?k)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(retract ?j)
(assert (barat petani))
(assert (barat ?s))
(printout t ?s " dan petani ke barat" t)
)
; petani dan kambing ke barat
(defrule petaniKambingBarat
?i<-(timur petani)
?j<-(timur ?k)
(barat ?h)
(barat ?s)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(retract ?j)
(assert (barat petani))
(assert (barat ?k))
(printout t ?k " dan petani ke barat" t)
)
; aturan pengangkutan ke timur
; petani ke timur
(defrule petaniKeTimurSendiri
?i<-(barat petani)
(barat ?k)
(timur ?h)
(timur ?s)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(assert(timur petani))
(printout t "petani ke timur" t)
)
; petani ke timur
(defrule petaniKeTimurSendiri2
?i<-(barat petani)
(timur ?k)
(barat ?h)
(barat ?s)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(assert(timur petani))
(printout t "petani ke timur" t)
)
; kambing dan petani ke timur
(defrule petaniKeTimur
?i<-(barat petani)
?j<-(barat ?k)
(barat ?h)
(timur ?s)
(makan ?h ?k)
(makan ?k ?s)
=>
(retract ?i)
(retract ?j)
(assert (timur ?k))
(assert (timur petani))
(printout t ?k " dan petani ke timur" t)
)*di lain soal, kambing sering digantikan dengan serigala
Labels: Artificial Intelligence, CLIPS, Expert Systems, Problems, Programming




Thanks buat materinya. Kebetulan saya sedang mencari bahan tugas membuat aplikasi petani ini.