Apa itu Forward Chaining?

Forward Chaining adalah metode inferensi yang bekerja dari fakta menuju kesimpulan. Metode ini cocok untuk sistem diagnosis dimana pengguna memasukkan gejala/fakta, lalu sistem mencari kesimpulan yang sesuai.

Cara Kerja Forward Chaining

  1. Pengguna memasukkan fakta-fakta (gejala yang dialami).
  2. Sistem mencocokkan fakta dengan kondisi (IF) pada setiap aturan.
  3. Jika kondisi aturan terpenuhi, sistem menambahkan kesimpulan (THEN) ke working memory.
  4. Proses berlanjut hingga tidak ada aturan baru yang dapat dieksekusi.

Struktur Database

-- Tabel Gejala CREATE TABLE gejala (    id INT PRIMARY KEY AUTO_INCREMENT,    kode VARCHAR(10) UNIQUE,    nama VARCHAR(200) ); -- Tabel Penyakit CREATE TABLE penyakit (    id INT PRIMARY KEY AUTO_INCREMENT,    kode VARCHAR(10) UNIQUE,    nama VARCHAR(200),    deskripsi TEXT,    solusi TEXT ); -- Tabel Aturan (Relasi Gejala-Penyakit) CREATE TABLE aturan (    id INT PRIMARY KEY AUTO_INCREMENT,    penyakit_id INT,    gejala_id INT,    FOREIGN KEY (penyakit_id) REFERENCES penyakit(id),    FOREIGN KEY (gejala_id) REFERENCES gejala(id) );

Implementasi PHP

<?php function diagnosa($gejala_terpilih) {    $pdo = new PDO("mysql:host=localhost;dbname=sistem_pakar", "root", "");        // Ambil semua penyakit    $penyakit_all = $pdo->query("SELECT * FROM penyakit")->fetchAll();        $hasil = [];    foreach ($penyakit_all as $p) {        // Ambil gejala untuk penyakit ini        $stmt = $pdo->prepare("SELECT gejala_id FROM aturan WHERE penyakit_id = ?");        $stmt->execute([$p['id']]);        $gejala_penyakit = $stmt->fetchAll(PDO::FETCH_COLUMN);                // Hitung kecocokan        $match = count(array_intersect($gejala_terpilih, $gejala_penyakit));        $total = count($gejala_penyakit);                if ($total > 0 && $match > 0) {            $persentase = ($match / $total) * 100;            $hasil[] = [                'penyakit' => $p['nama'],                'persentase' => $persentase,                'solusi' => $p['solusi']            ];        }    }        // Urutkan berdasarkan persentase tertinggi    usort($hasil, fn($a, $b) => $b['persentase'] <=> $a['persentase']);    return $hasil; } ?>

Tips untuk Skripsi

Pastikan knowledge base divalidasi oleh pakar asli (misalnya dokter untuk diagnosis penyakit). Sertakan surat validasi sebagai lampiran skripsi.