Indra EHM

catatan... nya Indra Gunawan


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


About Me



I'm Indra EHM
From : Siak Sri Indrapura, Indonesia

I'm a Software Developer -- and an Architect too :D. Graduated from Binus University. Keen on Artificial Intelligence. Not for expert, just hobby. ^^

Search

Recent Comments

Visitor



    hit counter html code
  • since 22 Feb '08

  • Page Rank Check

Photo


    Hayoo.. Tebak saya yang mana !!

Chit Chat



My Social Networks


    Indra EhM's Facebook profile


Indra EHM
Blogged Blog Directory
XML

Adsvertise

    AIIE - Artificial Intelligence Learning Centre