Forward Chaining: Contoh Penelusuran Sistem Pakar Lengkap

Forward Chaining adalah metode penalaran pada sistem pakar yang memulai proses dari fakta-fakta yang sudah diketahui, kemudian mencocokkan fakta tersebut dengan rule IF-THEN untuk menghasilkan fakta atau kesimpulan baru.

Metode ini disebut data-driven reasoning karena proses inferensi bergerak dari data atau fakta menuju kesimpulan. Setiap rule yang premisnya terpenuhi dapat dijalankan, lalu hasil rule ditambahkan ke working memory sebagai fakta baru.

Tutorial ini menggunakan contoh diagnosis kerusakan laptop agar proses Forward Chaining dapat diikuti secara manual, mulai dari menentukan fakta awal, menyusun basis aturan, mencocokkan rule, menghasilkan fakta baru, hingga memperoleh diagnosis akhir.


Daftar Isi


Pengertian Forward Chaining

Forward Chaining adalah teknik inferensi yang bergerak dari fakta menuju kesimpulan.

Jika sebuah rule memiliki bentuk:

\[ A \land B \rightarrow C \]

dan fakta:

A = benar
B = benar

maka rule dapat dijalankan dan menghasilkan:

C = benar

Fakta baru tersebut kemudian dapat digunakan untuk mengaktifkan rule lain.

Secara sederhana:

\[ Fakta \rightarrow Rule \rightarrow Fakta\ Baru \rightarrow Rule\ Berikutnya \rightarrow Kesimpulan \]

Konsep Data-Driven pada Forward Chaining

Forward Chaining sering disebut data-driven reasoning.

Artinya, sistem tidak memulai dari hipotesis tertentu. Sistem memulai dari fakta yang tersedia, lalu mencari rule yang kondisi IF-nya terpenuhi.

Contoh fakta:

Kipas laptop tidak normal
Ventilasi laptop tersumbat

Rule:

IF kipas laptop tidak normal
AND ventilasi laptop tersumbat
THEN suhu laptop tinggi

Karena semua premis terpenuhi, sistem menghasilkan fakta baru:

Suhu laptop tinggi

Fakta ini kemudian dapat digunakan oleh rule lain.


Komponen Forward Chaining

Forward Chaining pada sistem pakar umumnya memiliki beberapa komponen berikut.

Komponen Fungsi
Fakta Informasi yang sudah diketahui
Rule Aturan IF-THEN
Knowledge Base Kumpulan fakta dan rule
Working Memory Menyimpan fakta yang diketahui selama proses inferensi
Inference Engine Mencocokkan fakta dengan rule
Conflict Set Kumpulan rule yang memenuhi syarat untuk dijalankan
Kesimpulan Hasil yang diperoleh setelah proses inferensi

Bentuk Aturan IF-THEN

Rule biasanya ditulis dalam bentuk:

IF kondisi_1
AND kondisi_2
THEN kesimpulan

Secara logika:

\[ A \land B \rightarrow C \]

Contoh:

IF kipas laptop tidak normal
AND ventilasi laptop tersumbat
THEN suhu laptop tinggi

Jika kedua kondisi benar, maka:

Suhu laptop tinggi

ditambahkan sebagai fakta baru.


Cara Kerja Forward Chaining

Secara umum, Forward Chaining bekerja melalui langkah berikut:

  1. Masukkan fakta awal ke working memory.
  2. Periksa seluruh rule.
  3. Cari rule yang semua premisnya terpenuhi oleh fakta.
  4. Jalankan rule yang memenuhi syarat.
  5. Tambahkan kesimpulan rule sebagai fakta baru.
  6. Ulangi proses pencocokan.
  7. Hentikan jika tidak ada rule baru yang dapat dijalankan atau tujuan sistem sudah tercapai.

Pada implementasi tertentu, satu iterasi dapat menghasilkan lebih dari satu rule aktif.


Algoritma Forward Chaining

Secara konseptual:

\[ Facts_{t+1} = Facts_t \cup Conclusions(FiredRules_t) \]

Artinya, fakta pada langkah berikutnya adalah gabungan antara fakta sebelumnya dan kesimpulan dari rule yang dijalankan.

Proses berulang sampai:

\[ Facts_{t+1}=Facts_t \]

atau tidak ada fakta baru yang dihasilkan.


Contoh Kasus Forward Chaining

Contoh berikut menggunakan sistem pakar diagnosis kerusakan laptop.

Tujuan akhir sistem adalah menemukan diagnosis berdasarkan fakta yang diberikan pengguna.

#01 Menentukan Fakta Awal

Misalnya pengguna memberikan fakta:

Kode Fakta Status
F1 Laptop sering mati sendiri Benar
F2 Kipas laptop tidak normal Benar
F3 Ventilasi laptop tersumbat Benar
F4 Baterai cepat habis Salah
F5 Laptop tidak dapat mengisi daya Salah

Working memory awal:

WM0 = {F1, F2, F3}

#02 Menentukan Basis Aturan

Knowledge base memiliki rule berikut:

Rule Premis Kesimpulan
R1 F2 AND F3 S1
R2 F1 AND S1 H1
R3 F4 AND F5 H2
R4 H1 S2

Keterangan:

S1 = Suhu laptop tinggi
H1 = Laptop mengalami overheating
H2 = Gangguan power/baterai
S2 = Perlu pemeriksaan sistem pendingin

Jika ditulis lengkap:

R1:
IF kipas laptop tidak normal
AND ventilasi laptop tersumbat
THEN suhu laptop tinggi
R2:
IF laptop sering mati sendiri
AND suhu laptop tinggi
THEN laptop mengalami overheating
R3:
IF baterai cepat habis
AND laptop tidak dapat mengisi daya
THEN gangguan power/baterai
R4:
IF laptop mengalami overheating
THEN perlu pemeriksaan sistem pendingin

#03 Iterasi Pertama

Fakta awal:

F1
F2
F3

Sistem memeriksa setiap rule.

Memeriksa R1

R1 membutuhkan:

F2 AND F3

Kedua fakta tersedia.

Maka:

\[ F2 \land F3 = true \]

R1 dapat dijalankan.

Hasil:

S1 = Suhu laptop tinggi

Memeriksa R2

R2 membutuhkan:

F1 AND S1

Pada awal iterasi, F1 tersedia tetapi S1 belum ada.

Jadi sebelum R1 menghasilkan S1, R2 belum dapat dijalankan.

Memeriksa R3

R3 membutuhkan:

F4 AND F5

Kedua fakta tidak tersedia sebagai fakta benar.

R3 tidak aktif.

Memeriksa R4

R4 membutuhkan:

H1

H1 belum tersedia.

R4 belum aktif.

Hasil iterasi pertama:

Rule Status Hasil
R1 Aktif S1
R2 Belum aktif -
R3 Tidak aktif -
R4 Belum aktif -

#04 Menambahkan Fakta Baru

Setelah R1 dijalankan:

S1 = Suhu laptop tinggi

ditambahkan ke working memory.

Sebelumnya:

WM0 = {F1, F2, F3}

menjadi:

WM1 = {F1, F2, F3, S1}

Fakta baru ini dapat mengaktifkan rule lain.


#05 Iterasi Kedua

Sekarang sistem memeriksa rule kembali.

Memeriksa R2

R2 membutuhkan:

F1 AND S1

Pada WM1:

F1 = tersedia
S1 = tersedia

Maka:

\[ F1 \land S1 = true \]

R2 dijalankan dan menghasilkan:

H1 = Laptop mengalami overheating

Working memory menjadi:

WM2 = {F1, F2, F3, S1, H1}

Setelah H1 tersedia, R4 dapat dijalankan:

R4:
IF H1
THEN S2

Hasil:

S2 = Perlu pemeriksaan sistem pendingin

Working memory akhir:

WM3 = {
    F1,
    F2,
    F3,
    S1,
    H1,
    S2
}

#06 Menentukan Hasil Akhir

Urutan penelusuran:

F2 + F3
↓
R1
↓
S1 = Suhu laptop tinggi
↓
F1 + S1
↓
R2
↓
H1 = Laptop mengalami overheating
↓
R4
↓
S2 = Perlu pemeriksaan sistem pendingin

Jika disusun dalam tabel:

Langkah Fakta yang Tersedia Rule Aktif Fakta Baru
1 F1, F2, F3 R1 S1
2 F1, F2, F3, S1 R2 H1
3 F1, F2, F3, S1, H1 R4 S2
4 Tidak ada rule baru - Proses berhenti

Kesimpulan:

Laptop mengalami overheating dan sistem memberikan tindak lanjut:

Perlu pemeriksaan sistem pendingin.


Contoh Rule yang Tidak Aktif

R3:

IF baterai cepat habis
AND laptop tidak dapat mengisi daya
THEN gangguan power/baterai

membutuhkan:

F4 AND F5

Tetapi fakta awal tidak berisi F4 dan F5 sebagai fakta benar.

Maka:

\[ F4 \land F5 = false \]

R3 tidak dapat dijalankan.

Ini menunjukkan bahwa Forward Chaining hanya menjalankan rule yang seluruh premisnya terpenuhi.


Conflict Set dan Pemilihan Rule

Dalam sistem yang lebih besar, beberapa rule dapat aktif secara bersamaan.

Contoh:

R1:
IF A AND B THEN C

R2:
IF A AND B THEN D

Jika A dan B tersedia, maka R1 dan R2 sama-sama masuk ke conflict set.

Sistem kemudian memerlukan strategi pemilihan rule.

Beberapa strategi yang dapat digunakan:

  • urutan prioritas rule,
  • rule yang paling spesifik,
  • rule dengan premis paling banyak,
  • rule yang paling baru relevan,
  • atau menjalankan seluruh rule aktif jika tidak menyebabkan konflik.

Pemilihan strategi conflict resolution bergantung pada desain sistem.


Kondisi Berhenti

Forward Chaining dapat dihentikan ketika salah satu kondisi berikut terpenuhi:

  1. Tidak ada rule baru yang dapat dijalankan.
  2. Tidak ada fakta baru yang dihasilkan.
  3. Goal tertentu sudah ditemukan.
  4. Batas iterasi tercapai.
  5. Sistem telah menghasilkan kesimpulan yang dibutuhkan.

Pada contoh:

S2 = Perlu pemeriksaan sistem pendingin

telah diperoleh dan tidak ada rule baru yang dapat menambah fakta.

Maka proses berhenti.


Pseudocode Forward Chaining

Berikut pseudocode sederhana:

function forwardChaining(facts, rules):

    changed = true

    while changed:

        changed = false

        for each rule in rules:

            if semua premise rule ada di facts
               and conclusion belum ada di facts:

                tambahkan conclusion ke facts

                changed = true

    return facts

Jika sistem hanya membutuhkan satu target tertentu:

function forwardChaining(facts, rules, goal):

    repeat:

        cari rule yang semua premise terpenuhi

        jika tidak ada rule baru:
            return false

        jalankan rule

        tambahkan conclusion ke facts

        jika goal ada di facts:
            return true

Forward Chaining vs Backward Chaining

Forward Chaining dan Backward Chaining sama-sama merupakan teknik inferensi pada sistem berbasis rule.

Aspek Forward Chaining Backward Chaining
Arah Fakta menuju kesimpulan Goal menuju fakta
Pendekatan Data-driven Goal-driven
Titik awal Fakta Hipotesis
Proses Menjalankan rule yang premisnya terpenuhi Mencari rule yang menghasilkan goal
Cocok untuk Menemukan kesimpulan dari fakta yang tersedia Membuktikan hipotesis tertentu
Pertanyaan utama Apa yang dapat disimpulkan dari fakta ini? Apa yang harus benar agar goal terbukti?

Contoh Forward Chaining:

Kipas tidak normal
+
Ventilasi tersumbat
↓
Suhu tinggi
↓
Overheating

Contoh Backward Chaining:

Overheating
↓
Butuh suhu tinggi
↓
Butuh kipas tidak normal
+
ventilasi tersumbat

Forward Chaining vs Certainty Factor

Forward Chaining dan Certainty Factor memiliki fungsi berbeda.

Aspek Forward Chaining Certainty Factor
Fungsi utama Menentukan jalur inferensi Mengukur tingkat keyakinan
Input Fakta dan rule Nilai CF pakar/pengguna
Hasil Fakta atau kesimpulan baru Nilai keyakinan
Sifat Strategi inferensi Metode ketidakpastian
Dapat dikombinasikan Ya Ya

Contoh kombinasi:

Forward Chaining
→ menentukan rule yang aktif

Certainty Factor
→ menghitung tingkat keyakinan hasil rule

Jadi keduanya bukan metode yang saling menggantikan.


Kelebihan dan Kekurangan Forward Chaining

Kelebihan Forward Chaining

  • Cocok ketika banyak fakta sudah tersedia.
  • Dapat menemukan lebih dari satu kesimpulan.
  • Proses inferensi mudah diikuti secara bertahap.
  • Cocok untuk sistem monitoring dan diagnosis berbasis fakta.
  • Dapat terus menghasilkan pengetahuan baru dari fakta yang ada.
  • Mudah dikombinasikan dengan metode ketidakpastian.

Kekurangan Forward Chaining

  • Dapat memproses banyak rule yang tidak relevan dengan tujuan tertentu.
  • Knowledge base besar dapat menghasilkan banyak rule aktif.
  • Memerlukan strategi conflict resolution jika banyak rule aktif bersamaan.
  • Dapat menghasilkan fakta antara yang tidak selalu diperlukan.
  • Rule yang membentuk siklus perlu dikontrol.
  • Kualitas hasil sangat bergantung pada kelengkapan fakta dan rule.

Kapan Forward Chaining Cocok Digunakan?

Forward Chaining cocok digunakan ketika:

  • sistem menerima banyak fakta awal;
  • tujuan belum tentu diketahui sejak awal;
  • sistem ingin menemukan semua kemungkinan kesimpulan;
  • knowledge base menggunakan rule IF-THEN;
  • proses inferensi bersifat data-driven;
  • atau sistem harus merespons perubahan fakta secara bertahap.

Contoh penerapan:

  • diagnosis kerusakan komputer,
  • diagnosis berbasis gejala,
  • sistem monitoring,
  • deteksi kondisi perangkat,
  • identifikasi gangguan,
  • sistem konsultasi,
  • sistem pakar berbasis aturan,
  • dan otomatisasi keputusan sederhana.

Kesalahan Umum Implementasi

1. Menjalankan rule sebelum seluruh premis terpenuhi

Jika rule:

IF A AND B THEN C

maka A dan B harus terpenuhi.

Tidak cukup hanya A.

2. Menambahkan fakta yang sama berulang kali

Sebelum menambahkan kesimpulan:

C

cek apakah C sudah ada pada working memory.

3. Tidak menangani rule siklik

Contoh:

R1: IF A THEN B
R2: IF B THEN A

Jika implementasi tidak memeriksa fakta yang sudah ada, proses dapat berulang tanpa manfaat.

4. Menganggap Forward Chaining menghasilkan persentase

Forward Chaining menentukan bagaimana rule dijalankan.

Jika membutuhkan tingkat keyakinan, sistem dapat dikombinasikan dengan Certainty Factor, Dempster-Shafer, atau pendekatan lain.

5. Tidak memiliki kondisi berhenti

Sistem harus mengetahui kapan proses inferensi selesai.

6. Mencampur fakta benar dan fakta tidak diketahui

Tidak adanya sebuah fakta tidak selalu berarti fakta tersebut salah.

Pada implementasi sistem pakar, status false, unknown, dan belum ditanyakan dapat memiliki makna berbeda.


Ringkasan

Forward Chaining adalah metode inferensi data-driven yang bergerak dari fakta menuju kesimpulan.

Pada contoh:

Fakta awal:
F1 = Laptop sering mati sendiri
F2 = Kipas tidak normal
F3 = Ventilasi tersumbat

R1 menghasilkan:

S1 = Suhu laptop tinggi

Kemudian R2 menghasilkan:

H1 = Laptop mengalami overheating

dan R4 menghasilkan:

S2 = Perlu pemeriksaan sistem pendingin

Alurnya:

Fakta
↓
Rule Aktif
↓
Fakta Baru
↓
Rule Berikutnya
↓
Kesimpulan

Proses berhenti ketika tidak ada rule baru yang dapat dijalankan atau tujuan sistem telah tercapai.


FAQ Forward Chaining

Apa itu Forward Chaining?

Forward Chaining adalah metode inferensi yang memulai proses dari fakta, kemudian menjalankan rule yang premisnya terpenuhi untuk menghasilkan fakta atau kesimpulan baru.

Mengapa Forward Chaining disebut data-driven?

Karena proses inferensi dimulai dari data atau fakta yang tersedia.

Apa yang dimaksud working memory?

Working memory adalah tempat menyimpan fakta yang diketahui dan fakta baru yang dihasilkan selama proses inferensi.

Apa yang dimaksud rule aktif?

Rule aktif adalah rule yang seluruh kondisi pada bagian IF telah terpenuhi.

Apa yang dimaksud conflict set?

Conflict set adalah kumpulan rule yang sama-sama memenuhi syarat untuk dijalankan pada saat yang sama.

Apakah semua rule aktif harus dijalankan?

Tidak selalu. Sistem dapat menjalankan seluruh rule aktif atau menggunakan strategi conflict resolution.

Apa perbedaan Forward Chaining dan Backward Chaining?

Forward Chaining bergerak dari fakta menuju kesimpulan, sedangkan Backward Chaining bergerak dari goal menuju fakta yang dapat membuktikannya.

Apakah Forward Chaining termasuk metode sistem pakar?

Ya. Forward Chaining merupakan salah satu strategi inferensi yang umum digunakan pada sistem pakar berbasis rule.

Apakah Forward Chaining menghasilkan tingkat keyakinan?

Tidak secara langsung. Forward Chaining menentukan proses penalaran. Tingkat keyakinan dapat dihitung menggunakan metode lain seperti Certainty Factor.

Apakah Forward Chaining dapat dikombinasikan dengan Certainty Factor?

Bisa. Forward Chaining menentukan rule yang aktif, sedangkan Certainty Factor dapat digunakan untuk menghitung tingkat keyakinan terhadap hasil.

Bagaimana jika tidak ada rule yang aktif?

Jika tidak ada rule yang aktif dan tidak ada fakta baru yang dapat dihasilkan, proses Forward Chaining berhenti.

Apa yang terjadi jika beberapa rule aktif sekaligus?

Rule-rule tersebut masuk ke conflict set. Sistem kemudian dapat memilih rule berdasarkan strategi tertentu atau menjalankan semuanya jika desain sistem mengizinkan.

Apakah fakta yang tidak ada berarti salah?

Tidak selalu. Fakta yang tidak ada bisa berarti belum diketahui. Implementasi perlu membedakan kondisi false dan unknown jika diperlukan.

Kapan Forward Chaining lebih cocok daripada Backward Chaining?

Forward Chaining lebih cocok ketika sistem memiliki banyak fakta awal dan ingin menemukan satu atau beberapa kesimpulan yang dapat dihasilkan dari fakta tersebut.


Referensi

  1. Giarratano, J. C., & Riley, G. D. (2005). Expert Systems: Principles and Programming. Thomson Course Technology.
  2. Buchanan, B. G., & Shortliffe, E. H. (1984). Rule-Based Expert Systems: The MYCIN Experiments of the Stanford Heuristic Programming Project. Addison-Wesley.
  3. Russell, S. J., & Norvig, P. (2021). Artificial Intelligence: A Modern Approach. Fourth Edition. Pearson.

Source Code Forward Chaining

Berikut source code yang menggunakan metode Forward Chaining pada RumahSourceCode.

Ada yang Ditanyakan?

Jika anda masih ada kesulitan atau kekeliruan tentang penjelasan metode di atas, bisa menghubungi kami lewat WA/Email sesuai halaman Kontak.

Jika ingin memiliki file excel dari metode di atas bisa melihat cara download di halaman Download.

Jika ingin memiliki source code dari metode di atas, baik berbasis web maupun desktop bisa melihat daftar harga donasi di halaman Daftar Source Code.

Donasi ini digunakan oleh penulis untuk membayar server dan membeli kopi sembari membuat tutorial Metode/Algoritma lainnya :).