Automated Reasoning : Forward Chaining

9 Maret 2026 12 views

1. Konsep Penalaran Otomatis

Penalaran (Reasoning) adalah proses berpikir untuk menarik kesimpulan dari fakta dan aturan yang diketahui. Dalam kecerdasan buatan, proses ini dilakukan secara otomatis oleh Mesin Inferensi (Inference Engine).
salah satu Mesin inferensi yang di pakai yaitu Forward Chaning

No

Strategi

Arah

Pertanyaan Kunci

1

Forward Chaining

Fakta → Kesimpulan

"Berdasarkan gejala ini, apa penyakitnya?"

2. Forward Chaining (Pelacakan Maju)

2.1 Pengertian

Forward Chaining adalah metode inferensi yang bekerja dari fakta menuju kesimpulan (data-driven). Sistem memulai dengan fakta yang diketahui, lalu mencocokkan fakta tersebut dengan kondisi aturan (IF) untuk menghasilkan kesimpulan (THEN).

2.2 Cara Kerja

LANGKAH-LANGKAH FORWARD CHAINING:

1. Kumpulkan semua FAKTA yang diketahui
2. Periksa setiap ATURAN satu per satu:
   → Apakah semua kondisi (IF) terpenuhi oleh fakta?
   → Jika YA → simpan kesimpulan (THEN) sebagai fakta baru
3. Ulangi langkah 2 sampai tidak ada fakta baru yang dihasilkan
4. Tampilkan seluruh kesimpulan

2.3 Contoh Ilustrasi

Diketahui Basis Pengetahuan:

R1: IF A AND B        THEN C
R2: IF C AND D        THEN E
R3: IF E              THEN F

Diketahui Fakta Awal: A, B, D

Proses Forward Chaining:

Iterasi

Fakta Saat Ini

Aturan Diperiksa

Hasil

1

{A, B, D}

R1: A ✓, B ✓ → C

Fakta baru: C

1

{A, B, D}

R2: C ✗

Belum terpenuhi

1

{A, B, D}

R3: E ✗

Belum terpenuhi

2

{A, B, C, D}

R1: sudah diproses

2

{A, B, C, D}

R2: C ✓, D ✓ → E

Fakta baru: E

2

{A, B, C, D}

R3: E ✗

Belum terpenuhi

3

{A, B, C, D, E}

R3: E ✓ → F

Fakta baru: F

4

{A, B, C, D, E, F}

Tidak ada fakta baru

SELESAI

Kesimpulan akhir: Dari fakta awal {A, B, D} diperoleh fakta baru {C, E, F}

3. Studi Kasus: Sistem Pakar Diagnosa Penyakit

Kita akan menerapkan Forward Chaining pada kasus nyata: diagnosa penyakit berdasarkan gejala.

Basis Pengetahuan:

R1: IF demam AND batuk AND pilek               THEN Flu
R2: IF demam AND batuk_kering AND sesak_napas   THEN COVID-19
R3: IF demam_tinggi AND nyeri_sendi AND ruam    THEN Demam Berdarah
R4: IF demam AND sakit_perut AND diare          THEN Tifus
R5: IF nyeri_lambung AND mual AND kembung       THEN Maag

# === Studi Kasus: Forward Chaining - Diagnosa Penyakit ===

# Basis Pengetahuan: Aturan diagnosa penyakit
rules_penyakit = [
    {"id": "R1", "kondisi": ["demam", "batuk", "pilek"],
     "kesimpulan": "Flu"},
    {"id": "R2", "kondisi": ["demam", "batuk_kering", "sesak_napas"],
     "kesimpulan": "COVID-19"},
    {"id": "R3", "kondisi": ["demam_tinggi", "nyeri_sendi", "ruam"],
     "kesimpulan": "Demam Berdarah"},
    {"id": "R4", "kondisi": ["demam", "sakit_perut", "diare"],
     "kesimpulan": "Tifus"},
    {"id": "R5", "kondisi": ["nyeri_lambung", "mual", "kembung"],
     "kesimpulan": "Maag"},
]

def forward_chaining_diagnosa(rules, gejala):
    """Forward Chaining untuk diagnosa penyakit"""
    fakta = set(gejala)
    diagnosa = []

    print("=" * 60)
    print("FORWARD CHAINING — Diagnosa Penyakit")
    print("=" * 60)
    print(f"Gejala pasien: {gejala}\n")

    for rule in rules:
        kondisi = set(rule["kondisi"])

        if kondisi.issubset(fakta):
            diagnosa.append(rule["kesimpulan"])
            print(f"✅ {rule['id']}: {' AND '.join(rule['kondisi'])}")
            print(f"   → Diagnosa: {rule['kesimpulan']}\n")
        else:
            kurang = kondisi - fakta
            print(f"❌ {rule['id']}: {' AND '.join(rule['kondisi'])}")
            print(f"   → Gejala kurang: {kurang}\n")

    print("=" * 60)
    if diagnosa:
        print(f"Hasil diagnosa: {', '.join(diagnosa)}")
    else:
        print("Tidak ada penyakit yang cocok dengan gejala.")
    print("=" * 60)
    return diagnosa

# ===== CONTOH 1: Pasien dengan gejala flu =====
print("PASIEN 1:")
gejala_1 = ["demam", "batuk", "pilek"]
forward_chaining_diagnosa(rules_penyakit, gejala_1)

print("\n")

# ===== CONTOH 2: Pasien dengan gejala COVID-19 =====
print("PASIEN 2:")
gejala_2 = ["demam", "batuk_kering", "sesak_napas"]
forward_chaining_diagnosa(rules_penyakit, gejala_2)

4. Studi Kasus Lanjutan: Sistem Pakar Rekomendasi Beasiswa

Kasus ini lebih kompleks karena menggunakan aturan berantai (chained rules) — di mana kesimpulan satu aturan menjadi kondisi bagi aturan lain.

Basis Pengetahuan:

Aturan Level 1 (fakta dasar → fakta antara):

R1: IF IPK >= 3.5 AND semester >= 5       THEN akademik_baik
R2: IF penghasilan_ortu_rendah             THEN ekonomi_lemah
R3: IF aktif_organisasi AND aktif_lomba    THEN non_akademik_baik
R4: IF sertifikat_bahasa AND publikasi     THEN prestasi_khusus

Aturan Level 2 (fakta antara → rekomendasi):

R5: IF akademik_baik AND ekonomi_lemah                     THEN Beasiswa Bidikmisi
R6: IF akademik_baik AND non_akademik_baik                 THEN Beasiswa Prestasi
R7: IF akademik_baik AND prestasi_khusus                   THEN Beasiswa LPDP
R8: IF akademik_baik AND ekonomi_lemah AND non_akademik_baik  THEN Beasiswa Unggulan

Perhatikan bahwa R5–R8 bergantung pada hasil R1–R4. Ini menunjukkan bagaimana aturan berantai bekerja dalam sistem pakar yang lebih realistis.

Silahkan anda untuk mencoba sendiri dari studi kasus ini

Komentar

Tulis Komentar

Belum ada komentar. Jadilah yang pertama!