query($query_penyakit); // Validasi: query gagal if (!$result_penyakit) { die("Query penyakit gagal: " . $koneksi->error); } // Inisialisasi array untuk menyimpan data penyakit $penyakit_diagnosa = []; while ($row_penyakit = $result_penyakit->fetch_assoc()) { $penyakit_diagnosa[$row_penyakit['kode_penyakit']] = [ 'kode_penyakit' => $row_penyakit['kode_penyakit'], 'nama_penyakit' => $row_penyakit['namapenyakit'], 'gejala' => [], 'total_bobot' => 0, 'nilai_dominan' => 0 ]; } // Step 2: Mengambil nilai fuzzy untuk gejala yang dipilih $query_fuzzy = "SELECT kode_gejala, kode_penyakit, nilai FROM penyakit_gejala WHERE kode_gejala IN ($gejala_in)"; $result_fuzzy = $koneksi->query($query_fuzzy); // Validasi: query gagal if (!$result_fuzzy) { die("Query fuzzy gagal: " . $koneksi->error); } // Menyimpan nilai fuzzy ke dalam array penyakit_diagnosa while ($row = $result_fuzzy->fetch_assoc()) { $penyakit_diagnosa[$row['kode_penyakit']]['gejala'][] = $row['nilai']; } // Mengambil nilai default jika gejala tidak memiliki pengaruh signifikan $query_default_fuzzy = "SELECT nilai_interpretasi FROM interpretasi_fuzzy WHERE kategori = 'Kurang Berpengaruh'"; $result_default_fuzzy = $koneksi->query($query_default_fuzzy); if ($result_default_fuzzy) { $row_default_fuzzy = $result_default_fuzzy->fetch_assoc(); $nilai_default = $row_default_fuzzy['nilai_interpretasi']; } // Step 3: Menghitung total bobot untuk setiap penyakit foreach ($penyakit_diagnosa as $penyakit_id => $data) { $gejala_values = $data['gejala']; if (empty($gejala_values)) { // Jika tidak ada gejala yang relevan, gunakan nilai default $penyakit_diagnosa[$penyakit_id]['total_bobot'] = $nilai_default; $penyakit_diagnosa[$penyakit_id]['nilai_dominan'] = $nilai_default; } else { // Hitung total bobot gejala $total_bobot_gejala = array_sum($gejala_values); // Fuzzyfikasi nilai gejala $fuzzyfikasi_values = array_map(function ($nilai) use ($total_bobot_gejala) { return $nilai / $total_bobot_gejala; }, $gejala_values); // Simpan nilai dominan dan total bobot $penyakit_diagnosa[$penyakit_id]['nilai_dominan'] = max($fuzzyfikasi_values); $penyakit_diagnosa[$penyakit_id]['total_bobot'] = $total_bobot_gejala; } } // Step 4: Mengidentifikasi penyakit dengan nilai dominan tertinggi $penyakit_terpilih = ""; $nilai_penyakit_terpilih = 0; $nilai_dominan_terpilih = 0; foreach ($penyakit_diagnosa as $penyakit_id => $data) { if ($data['nilai_dominan'] > $nilai_dominan_terpilih) { $penyakit_terpilih = $data['kode_penyakit']; $nama_penyakit = $data['nama_penyakit']; $nilai_penyakit_terpilih = $data['total_bobot']; $nilai_dominan_terpilih = $data['nilai_dominan']; } } // Jika tidak ada nilai dominan yang signifikan if ($nilai_penyakit_terpilih == 0) { $penyakit_terpilih = "Penyakit tidak terdeteksi"; } } ?>
Diagnosis
Kesimpulan: Penyakit dengan nilai defuzzyfikasi tertinggi adalah - = $nama_penyakit ?> dengan nilai %.