Indra Gunawan

word of my mind, word of my heart.


Penyelesaian masalah Petani, Kambing, Hariamau dan Sayuran dalam CLIPS

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.

; 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: , , , ,

1 Responses to “Penyelesaian masalah Petani, Kambing, Hariamau dan Sayuran dalam CLIPS”

  1. # Anonymous noaddictedoc

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

Post a Comment

Leave your comment :D

Newer›  ‹Older


Black Rose

I'm Indra Gunawan
From : Siak Sri Indrapura, Indonesia
Live : Kanazawa, Japan

Now I am school at Kindai, Japan.

I don't believe in luck and I love to made some poetry. :)


Search

Chit Chat



Recent Comments


    hit counter html code
  • since 22 Feb '08

  • Page Rank Check

My Social Networks


    Indra EhM's Facebook profile


Blogged Blog Directory
XML

Adsvertise