• Tidak ada hasil yang ditemukan

Pengembangan Program Forward dan Backward Chaining

Dalam dokumen sistem berbasis pengetahuan (Halaman 78-83)

Bab 6 Confidence Factor pada SBP

6.5 Pengembangan Program Forward dan Backward Chaining

Disamping pernyataan IF .. THEN .. pada RULE yang sudah dibahas, sebenarnya kita dapat mengembangkan program yang telah dibahas pada bab selanjutnya, yaitu dengan format yang lebih lengkap lagi yaitu IF .. THEN .. ELSE .. BECAUSE .., seperti tertulis di bawah ini:

IF condition THEN conclusion1 ELSE conclusion2 BECAUSE “...”

Ada yang menarik disini mengenai kata cadangan ELSE. Dengan adanya ELSE secara cerdas sistem dapat menyimpan 2 kondisi cukup dalam 1 rule saja. Artinya pada kondisi A, maka sistem akan mengambil nilai dari clauses dan bila clauses-nya memenuhi syarat maka conclusion1 akan dieksekusi.

Sedangkan secara implisit sistem juga akan tahu kalau pengguna mengisikan lawan nilai dari kondisi A (sebut saja kondisi B, yang didapat dari “NOT kondisi A”) maka yang akan dieksekusi adalah conclusion2 (yang merupakan lawan dari conclusion1).

Tentu saja diperlukan mekanisme lebih lanjut agar sistem kita mengetahui mana-mana kondisi yang menjadi lawan dari suatu kondisi lain, sehingga sistem secara cerdas akan

63

dapat memberikan hasil yang diharapkan. Sebagai contoh:

RULE 7

IF functionallity = complex THEN word_processor = product_B ELSE word_processor = product_A

BECAUSE “Product B can process more complicated documents that Product A”

Program juga dapat mengenali dan menangani persamaan, pertidaksamaan, dan juga jangkauan nilai tertentu untuk nilai-nilai yang dibandingkan dengan variabel-variabelnya. Contoh:

IF warna = hitam, IF warna <> hitam, IF warna < 15, IF warna IN [0..7], IF kondisi = TRUE, dsb.

Pembagian Rule Base

Rule base dibagi dalam 3 bagian: ACTION, RULE, dan STATEMENT BLOCK, seperti contoh di bawah ini:

//The file finding_word_processor.kbs uses a PLURAL variable, //Activity, in a compound OR IF-THEN-ELSE-BECAUSE

//ACTION BLOCK ACTIONS

DISPLAY “WPHELP will advise you on whether you need a word ” + “processor or not. Press OK to start the consultation.”

FIND advice //variabel yang akan dicari, langsung saja ditandai //dengan kata FIND

DISPLAY “You {advice} a word processor at this time. “ + “Press OK to exit WPHELP”;

//tanda {} pada {advice} berarti bahwa yang diapit oleh tanda itu //ialah variabel yang ditampilkan

//setiap selesai 1 statemen maka diakhiri dengan tanda “;” titik koma

//RULES BLOCK RULE 1 IF activity = letters OR activity = resumes OR activity = notices OR activity = papers THEN advice = need ELSE advice = do_not_need

BECAUSE “If you generate frequent letters, resumes, notices, “ + “or papers, then you need a word processor.”;

//STATEMENTS BLOCK

64

“for your business? Select you answers by select “ + “your desired answer. After you have made all “ + “your selections, click or press OK button. “ +

“If you don’t need to write any of these documents, “ + “select none_of_these”;

//Pada program begitu program membutuhkan masukan dari user, //maka ditanyakan dulu ke user

//kemudian setelah pertanyaan tadi, akan langsung disajikan dari //nilai-nilai yang mungkin

//ada pada variabel, setelah selesai user dapat //meng-klik/meng-enter tombol OK

//Kemungkinan nilai pada variabel tadi di-declare dengan kata CHOICES //seperti di bawah ini

CHOICES activity: letters, resumes, notices, papers, none_of_these; PLURAL: activity;

//Reserved word PLURAL menyatakan bahwa variabel setelahnya adalah //variabel yang nilainya

//majemuk=PLURAL, jadi tidak hanya 1 saja, bisa 2 atau lebih

Contoh rule base yang lain:

ACTIONS

FIND word_processor;

DISPLAY “The value of word_processor is {word_processor}”

RULE 0

IF functionality = simple AND cost = low THEN word_processor = Product_A;

RULE 1

IF functionality = simple AND cost = high THEN word_processor = Product_A;

RULE 2

IF functionality = complex AND cost = low THEN word_processor = none;

RULE 3

IF functionality = complex AND cost = high THEN word_processor = Product_B;

ASK functionality: “What is the value of Functionality?”; CHOICES functionality: simple,complex;

ASK cost: “What is the value of Cost?”; CHOICES cost: low,high;

Implementasi Pengembangan Program

Bisa juga dikembangkan sintaks rule menurut yang diinginkan. Semakin lengkap jelas akan semakin baik. Sebagai panduan, bisa dilihat hal-hal di bawah ini:

ƒ Ada fasilitas trace/penelusuran program.

65

ƒ Memberikan data yang lengkap kepada user.

ƒ Bisa menampilkan jendela WHAT, HOW, WHY dengan isi yang lengkap. Isi dari jendela WHAT adalah hasil dari proses forward maupun backward chaining yang paling

sederhana dan yang pertama kali didapatkan dari program, bahkan sebelum tahap pengembangan ini. Ia menjawab pertanyaan mengenai apa yang dihasilkan program. Sedangkan isi dari jendela jendela HOW adalah log/catatan bagaimana suatu hasil (WHAT) didapatkan, rule-rule mana saja yang telah diproses dan ditelusuri. Sedangkan isi dari jendela WHY, lebih banyak mengacu pada alasan hasil (WHAT) tadi didapat. Tentu saja komponen CF yang banyak mengambil peranan dalam penjelasan WHY ini disamping isi pernyataan-pernyataan yang disimpan di rule base yang ditandai dengan kata cadangan BECAUSE. Singkatnya adalah WHAT adalah hasilnya, HOW adalah bagaimana menghasilkan WHAT tadi, sedangkan alasan suatu hasil bisa didapat dijelaskan oleh WHY.

ƒ Bisa mengeksekusi semua rule, dengan catatan mengikuti sintaks program yang ada. ƒ Bisa menganalisis rule yang ada.

ƒ Pencarian berjalan dengan cepat, apalagi untuk rule-rule yang kompleks dan besar. ƒ Untuk pendekatan Forward Chaining, ada tambahan reserved word: WHENEVER.

WHENEVER cost_too_high IF cost >= 500

THEN DISPLAY “Consider volume discounts.”;

Begitu kata WHENEVER ditemukan di bagian awal rule, maka rule akan dites setiap saat nilai dari variabel yang ada di kondisi (bagian IF) berubah nilainya.

Jika rule yang mengandung WHENEVER ditemukan sebagai konklusi yang benar, maka bagian THEN dieksekusi. Dengan kata lain, bila ada perubahan variabel di bagian IF, rule secara otomatis dicek untuk dipilih, tanpa memperhatikan strategi pencariannya apakah Forward atau Backward Chaining.

Jadi WHENEVER berlaku seperti “daemon” sebab dia akan mengawasi variabel yang diacu oleh kondisi IF, dan mengeksekusinya setiap waktu kondisinya true/benar.

ƒ Adanya reserved word FIND untuk mengidentifikasikan variabel tujuan.

ƒ Reserved word FIND dalam rule hanya boleh ada dalam bagian THEN saja, tidak boleh di bagian IF.

66

Contoh:

RULE Networking

IF Environment = Networked THEN Network = Yes

FIND Networked_word_processor

ƒ FIND tidak bisa digabungkan dengan WHENEVER, sebab WHENEVER mengindikasikan rule, sedang FIND mengidentifikasikan variabel tujuan.

Contoh yang salah:

WHENEVER Networking

IF Environment = Networked THEN Network = Yes

FIND Networked_word_processor

ƒ Untuk nilai dari variabel yang belum diketahui, ada satu nilai khusus yaitu UNKNOWN, yang berarti program memang tidak tahu harus mengisikan apa pada variabel yang ditanyakan. Jadi cukup diisi saja dengan UNKNOWN bila kita memang tidak tahu jawaban apa yang harus diberikan.

RULE 7

IF Document = UNKNOWN

THEN Word_processor = wait_for_now

DISPLAY “Examine your busines functions for word processing before buying”; RULE 8

IF Cost = UNKNOWN

THEN Word_processor = none_for_now

67

Dalam dokumen sistem berbasis pengetahuan (Halaman 78-83)

Dokumen terkait