Automated Reasoning : Forward Chaining
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 kesimpulan2.3 Contoh Ilustrasi
Diketahui Basis Pengetahuan:
R1: IF A AND B THEN C
R2: IF C AND D THEN E
R3: IF E THEN FDiketahui 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