TOTO HARYANTO

Sedikit goresan menebar manfaat …..

Wildcard Pattern Pada CLIPS

Posted by totoharyanto on October 13th, 2014

Jika kita menggunakan CLIPS (C Language Integrated Production System) sebagai tools untuk sistem pakar, terdapat mekanisme untuk memanggil variabel pada bagian LHS (left Hand Side) atau antesendent agar dapat digunakan pada bagian RHS (right hand side) atau konsekuen. Mekanisme tersebut disebut sebagai Wilcard Pattern.

Terdapat tiga bentuk wildcard pattern
1.  ?variabel         : ini digunakan untuk mengambil nilai value pertama dari suatu variabel
2.  $?                       : ini digunakan jika kita tidak akan mengambil value sama-sekali dari value suatu variabel
3.  $?variabel      : ini digunakan untuk mengambil semua nilai dari suatu variabel.

Sebagai Ilustrasi perhatikan contoh berikut:
===================================================================
; contoh 1
; Nama file : band.clp
(deftemplate member_bands
(multislot  member-of))

(deffacts nama_band

(member_bands (member-of  beatles john_lennon paul_mccartney george_harrison ringo_starr))
(member_bands (member-of  smash roger_daltrey pete_townsend keith_moon))
(member_bands (member-of  kangen_band tracey_thorn ben_watt)))

(defrule bands
(member_bands (member-of  ?band  $?))
=>
(printout t “there is a band called ”  ?band crlf))

===================================================================
Keterangan :
Pada contoh di atas terlihat bahwa hanya value pertama saja yang dihasilkan. perintah  “….. ?band  $? ” pada bagian antesendent menunjukkan bahwa hanya value pertama saja yang dihasilkan. Dalam hal ini hanya kangen_band, smash dan beatles saja yang dikeluarkan …

 

 

=====================================================================
Contoh 2
;nama file : akses_single_member.clp

(deftemplatemember_bands
(multislot member-of))

(deffactsnama_band
(member_bands (member-of  beatles john_lennon paul_mccartney george_harrison ringo_starr))
(member_bands (member-of  smash roger_daltrey pete_townsend keith_moon))
(member_bands (member-of  kangen_band tracey_thorn ben_watt)))

(defrule band-members
(member_bands (member-of ?band ?member $?))
=>
(printout t ?member ” is a member of ” ?band crlf)
=====================================================================

Keterangan :
Pada contoh di atas terlihat bahwa hanya value pertama dan  kedua saja yang dihasilkan. perintah  “….. ?band  $?member … ” pada bagian antesendent menunjukkan bahwa hanya value pertama dan kedua saja yang dihasilkan. Adapun “….$? digunakan untuk membatasi bahwa setelah value pertama dan kedua, tidak dicetak value sama sekali.

 

======================================================================

Contoh 3
;nama file : akses_multi_member.clp
(deftemplatemember_bands
(multislot member-of))

(deffactsnama_band
(member_bands (member-of  beatles john_lennon paul_mccartney george_harrison ringo_starr))
(member_bands (member-of  smash roger_daltrey pete_townsend keith_moon))
(member_bands (member-of  kangen_band tracey_thorn ben_watt)))

(defrule band-members
(member_bands (member-of ?band $?members))
=>
(printout t “The members of ” ?band ” are ” $?members crlf))

======================================================================
Keterangan :
Pada contoh di atas terlihat bahwa hanya setelah value pertama, seluruh member akan dihasilkan. perintah  “….. ?band  $?members..  ” pada bagian antesendent menunjukkan bahwa setelah value pertama, seluruh value berikutnya akan dicetak .


Semoga Bermanfaat

 


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>