TIFNGK_E41222722/test_forward_chaining.py

69 lines
2.5 KiB
Python

#!/usr/bin/env python
"""Tes forward chaining berbasis cocok-tidaknya aturan."""
from expert_system import ForwardChaining
# Tes 1: PMK Ringan (hanya gejala umum)
print("=" * 60)
print("TES 1: PMK Ringan (hanya gejala umum)")
print("=" * 60)
fc1 = ForwardChaining()
fc1.tambah_gejala(['G01', 'G02', 'G03']) # Demam + Anorexia + Produksi turun
result1 = fc1.get_diagnosis()
if result1.get('status') == 'terdiagnosis':
for diag in result1['diagnosis']:
print(f"Diagnosis: {diag['nama']}")
print(f"Severity: {diag['severity']}")
print(f"Score: {diag['score']:.4f}")
print(f"Aturan yang cocok: {len(fc1.matched_rules)}")
print()
# Tes 2: PMK Sedang (gejala mulut dan tenggorokan)
print("=" * 60)
print("TES 2: PMK Sedang (gejala mulut dan tenggorokan)")
print("=" * 60)
fc2 = ForwardChaining()
fc2.tambah_gejala(['G01', 'G05', 'G06', 'G07']) # Demam + Hipersalivasi + Saliva berbusa + Submandibula
result2 = fc2.get_diagnosis()
if result2.get('status') == 'terdiagnosis':
for diag in result2['diagnosis']:
print(f"Diagnosis: {diag['nama']}")
print(f"Severity: {diag['severity']}")
print(f"Score: {diag['score']:.4f}")
print(f"Aturan yang cocok: {len(fc2.matched_rules)}")
print()
# Tes 2B: Gejala mulut dan tenggorokan berat tanpa demam
print("=" * 60)
print("TES 2B: Gejala mulut dan tenggorokan berat tanpa demam")
print("=" * 60)
fc2b = ForwardChaining()
fc2b.tambah_gejala(['G05', 'G06', 'G07']) # Hipersalivasi + Saliva berbusa + Submandibula
result2b = fc2b.get_diagnosis()
if result2b.get('status') == 'terdiagnosis':
for diag in result2b['diagnosis']:
print(f"Diagnosis: {diag['nama']}")
print(f"Severity: {diag['severity']}")
print(f"Score: {diag['score']:.4f}")
print(f"Aturan yang cocok: {len(fc2b.matched_rules)}")
print()
# Tes 3: PMK Berat (gejala kaki/kuku)
print("=" * 60)
print("TES 3: PMK Berat (gejala kaki/kuku)")
print("=" * 60)
fc3 = ForwardChaining()
fc3.tambah_gejala(['G01', 'G05', 'G12', 'G14']) # Demam + Hipersalivasi + Nekrosis + Pincak
result3 = fc3.get_diagnosis()
if result3.get('status') == 'terdiagnosis':
for diag in result3['diagnosis']:
print(f"Diagnosis: {diag['nama']}")
print(f"Severity: {diag['severity']}")
print(f"Score: {diag['score']:.4f}")
print(f"Aturan yang cocok: {len(fc3.matched_rules)}")
print()
print("=" * 60)
print("✓ Sistem pencocokan aturan berjalan dengan baik!")
print("=" * 60)