= 0 && $waktu_kejadian <= 5) { $waktu_kejadianA = (5 - $waktu_kejadian) / (5 - 0); } elseif ($waktu_kejadian >= 5) { $waktu_kejadianA = 0; } $waktu_kejadianRule = 'Dini Hari'; } if ($waktu_kejadian >= 5 && $waktu_kejadian < 11) { if ($waktu_kejadian >= 5 && $waktu_kejadian <= 8) { $waktu_kejadianB = ($waktu_kejadian - 5) / (8 - 5); } elseif ($waktu_kejadian >= 8 && $waktu_kejadian <= 11) { $waktu_kejadianB = (11 - $waktu_kejadian) / (11 - 8); } elseif ($waktu_kejadian == 8) { $waktu_kejadianB = 1; } elseif ($waktu_kejadian <= 5 && $waktu_kejadian >= 11) { $waktu_kejadianB = 0; } $waktu_kejadianRule = 'Pagi'; } if ($waktu_kejadian >= 11 && $waktu_kejadian < 17) { if ($waktu_kejadian >= 11 && $waktu_kejadian <= 14) { $waktu_kejadianC = ($waktu_kejadian - 11) / (14 - 11); } elseif ($waktu_kejadian >= 14 && $waktu_kejadian <= 17) { $waktu_kejadianC = (17 - $waktu_kejadian) / (17 - 14); } elseif ($waktu_kejadian == 14) { $waktu_kejadianC = 1; } elseif ($waktu_kejadian <= 11 && $waktu_kejadian >= 17) { $waktu_kejadianC = 0; } $waktu_kejadianRule = 'Siang-Sore'; } if ($waktu_kejadian >= 17) { if ($waktu_kejadian >= 17 && $waktu_kejadian <= 23.59) { $waktu_kejadianD = ($waktu_kejadian - 17) / (23.59 - 17); } elseif ($waktu_kejadian >= 23.59) { $waktu_kejadianD = 1; } elseif ($waktu_kejadian <= 17) { $waktu_kejadianD = 0; } $waktu_kejadianRule = 'Malam'; } return [ 'waktu_kejadianA' => $waktu_kejadianA, 'waktu_kejadianB' => $waktu_kejadianB, 'waktu_kejadianC' => $waktu_kejadianC, 'waktu_kejadianD' => $waktu_kejadianD, 'waktu_kejadianRule' => $waktu_kejadianRule ]; } } //-------------- Fungsi Keanggotaan Kondisi Kecelakaan ------------------// if (!function_exists('keanggotaanKondisiKecelakaan')) { function keanggotaanKondisiKecelakaan($kondisi_kecelakaan) { $kondisi_kecelakaanA = $kondisi_kecelakaanB = $kondisi_kecelakaanC = 0; if ($kondisi_kecelakaan <= 1) { if ($kondisi_kecelakaan <= 1) { $kondisi_kecelakaanA = 1; } elseif ($kondisi_kecelakaan > 1 && $kondisi_kecelakaan < 2) { $kondisi_kecelakaanA = (2 - $kondisi_kecelakaan) / (2 - 1); } elseif ($kondisi_kecelakaan >= 2) { $kondisi_kecelakaanA = 0; } $kondisi_kecelakaanRule = 'Ringan'; } if ($kondisi_kecelakaan > 1 && $kondisi_kecelakaan <= 2) { if ($kondisi_kecelakaan > 1 && $kondisi_kecelakaan < 2) { $kondisi_kecelakaanB = ($kondisi_kecelakaan - 1) / (2 - 1); } elseif ($kondisi_kecelakaan > 2 && $kondisi_kecelakaan < 3) { $kondisi_kecelakaanB = (3 - $kondisi_kecelakaan) / (3 - 2); } elseif ($kondisi_kecelakaan == 2) { $kondisi_kecelakaanB = 1; } elseif ($kondisi_kecelakaan <= 1 || $kondisi_kecelakaan >= 3) { $kondisi_kecelakaanB = 0; } $kondisi_kecelakaanRule = 'Sedang'; } if ($kondisi_kecelakaan > 2) { if ($kondisi_kecelakaan >= 2 && $kondisi_kecelakaan < 3) { $kondisi_kecelakaanC = ($kondisi_kecelakaan - 2) / (3 - 2); } elseif ($kondisi_kecelakaan >= 3) { $kondisi_kecelakaanC = 1; } elseif ($kondisi_kecelakaan <= 2) { $kondisi_kecelakaanC = 0; } $kondisi_kecelakaanRule = 'Berat'; } return [ 'kondisi_kecelakaanA' => $kondisi_kecelakaanA, 'kondisi_kecelakaanB' => $kondisi_kecelakaanB, 'kondisi_kecelakaanC' => $kondisi_kecelakaanC, 'kondisi_kecelakaanRule' => $kondisi_kecelakaanRule ]; } } // ------------- Fungsi Keanggotaan Kondisi Cahaya -------------- // if (!function_exists('keanggotaanKondisiCahaya')) { function keanggotaanKondisiCahaya($kondisi_cahaya) { $kondisi_cahayaA = $kondisi_cahayaB = 0; if ($kondisi_cahaya <= 1) { if ($kondisi_cahaya <= 1) { $kondisi_cahayaA = 1; } elseif ($kondisi_cahaya > 1 && $kondisi_cahaya < 2) { $kondisi_cahayaA = (2 - $kondisi_cahaya) / (2 - 1); } elseif ($kondisi_cahaya >= 2) { $kondisi_cahayaA = 0; } $kondisi_cahayaRule = 'Terang / Jelas'; } if ($kondisi_cahaya > 1 && $kondisi_cahaya <= 2) { if ($kondisi_cahaya > 1 && $kondisi_cahaya < 2) { $kondisi_cahayaB = ($kondisi_cahaya - 1) / (2 - 1); } elseif ($kondisi_cahaya >= 2) { $kondisi_cahayaB = 1; } elseif ($kondisi_cahaya <= 1) { $kondisi_cahayaB = 0; } $kondisi_cahayaRule = 'Redup / Samar'; } return [ 'kondisi_cahayaA' => $kondisi_cahayaA, 'kondisi_cahayaB' => $kondisi_cahayaB, 'kondisi_cahayaRule' => $kondisi_cahayaRule ]; } } // -------------- Fungsi Keanggotaan Bentuk Geometri -------------- if (!function_exists('keanggotaanBentukGeometri')) { function keanggotaanBentukGeometri($bentuk_geometri) { $bentuk_geometriA = $bentuk_geometriB = $bentuk_geometriC = $bentuk_geometriD = $bentuk_geometriE = 0; if ($bentuk_geometri <= 1) { if ($bentuk_geometri <= 1) { $bentuk_geometriA = 1; } elseif ($bentuk_geometri > 1 && $bentuk_geometri < 2) { $bentuk_geometriA = (2 - $bentuk_geometri) / (2 - 1); } elseif ($bentuk_geometri >= 2) { $bentuk_geometriA = 0; } $bentuk_geometriRule = 'Lurus'; } if ($bentuk_geometri > 1 && $bentuk_geometri <= 2) { if ($bentuk_geometri > 1 && $bentuk_geometri < 2) { $bentuk_geometriB = ($bentuk_geometri - 1) / (2 - 1); } elseif ($bentuk_geometri > 2 && $bentuk_geometri < 3) { $bentuk_geometriB = (3 - $bentuk_geometri) / (3 - 2); } elseif ($bentuk_geometri == 2) { $bentuk_geometriB = 1; } elseif ($bentuk_geometri <= 1 || $bentuk_geometri >= 3) { $bentuk_geometriB = 0; } $bentuk_geometriRule = 'Jembatan'; } if ($bentuk_geometri > 2 && $bentuk_geometri <= 3) { if ($bentuk_geometri > 2 && $bentuk_geometri < 3) { $bentuk_geometriC = ($bentuk_geometri - 2) / (3 - 2); } elseif ($bentuk_geometri > 3 && $bentuk_geometri < 4) { $bentuk_geometriC = (4 - $bentuk_geometri) / (4 - 3); } elseif ($bentuk_geometri == 3) { $bentuk_geometriC = 1; } elseif ($bentuk_geometri <= 2 || $bentuk_geometri >= 4) { $bentuk_geometriC = 0; } $bentuk_geometriRule = 'Tikungan'; } if ($bentuk_geometri > 3 && $bentuk_geometri <= 4) { if ($bentuk_geometri > 3 && $bentuk_geometri < 4) { $bentuk_geometriD = ($bentuk_geometri - 3) / (4 - 3); } elseif ($bentuk_geometri > 4 && $bentuk_geometri < 5) { $bentuk_geometriD = (5 - $bentuk_geometri) / (5 - 4); } elseif ($bentuk_geometri == 4) { $bentuk_geometriD = 1; } elseif ($bentuk_geometri <= 3 || $bentuk_geometri >= 5) { $bentuk_geometriD = 0; } $bentuk_geometriRule = 'Simpang Tiga'; } if ($bentuk_geometri > 4) { if ($bentuk_geometri >= 4 && $bentuk_geometri < 5) { $bentuk_geometriE = ($bentuk_geometri - 4) / (5 - 4); } elseif ($bentuk_geometri >= 5) { $bentuk_geometriE = 1; } elseif ($bentuk_geometri <= 4) { $bentuk_geometriE = 0; } $bentuk_geometriRule = 'Simpang Empat'; } return [ 'bentuk_geometriA' => $bentuk_geometriA, 'bentuk_geometriB' => $bentuk_geometriB, 'bentuk_geometriC' => $bentuk_geometriC, 'bentuk_geometriD' => $bentuk_geometriD, 'bentuk_geometriE' => $bentuk_geometriE, 'bentuk_geometriRule' => $bentuk_geometriRule ]; } } // Defuzzifikasi if (!function_exists('hitungLuasMoment')) { function hitungLuasMoment($tingkat_kerawanan, $minRule) { if ($tingkat_kerawanan == 'Aman') { // Keanggotaaan berdasarkan fungsi keanggotaan // $keanggotaan = 20; // $keanggotaanAkhir = 30; $kerawanan = Kerawanan::where('himpunan', 'Aman')->first(); if ($kerawanan) { $keanggotaan = $kerawanan->keanggotaan_awal; $keanggotaanAkhir = $kerawanan->keanggotaan_akhir; } // Batas bawah dan batas atas dari fungsi keanggotaan $batasBawah = 0; $batasAtas = $keanggotaanAkhir - $minRule * ($keanggotaanAkhir - $keanggotaan); // Menghitung luas $luasA1 = $batasAtas * $minRule; $luasA2 = (($keanggotaanAkhir - $batasAtas) * $minRule) / 2; $totalLuas = $luasA1 + $luasA2; // Menghitung moment $momentSatu = ($minRule / 2) * pow($batasAtas, 2) - ($minRule / 2) * pow($batasBawah, 2); $momentDua = (3 / 2) * pow($keanggotaanAkhir, 2) - (0.1 / 3) * pow($keanggotaanAkhir, 3) - ((3 / 2) * pow($batasAtas, 2) - (0.1 / 3) * pow($batasAtas, 3)); $totalMoment = $momentSatu + $momentDua; } elseif ($tingkat_kerawanan == 'Rawan') { // Keanggotaaan berdasarkan fungsi keanggotaan // $keanggotaan = 30; // $keanggotaanTengah = 50; // $keanggotaanAkhir = 70; $kerawanan = Kerawanan::where('himpunan', 'Rawan')->first(); if ($kerawanan) { $keanggotaan = $kerawanan->keanggotaan_awal; $keanggotaanTengah = $kerawanan->keanggotaan_tengah; $keanggotaanAkhir = $kerawanan->keanggotaan_akhir; } // Batas bawah dan batas atas dari fungsi keanggotaan $batasBawah = $minRule * ($keanggotaanTengah - $keanggotaan) + $keanggotaan; $batasAtas = $keanggotaanAkhir - $minRule * ($keanggotaanAkhir - $keanggotaanTengah); // Menghitung luas $luasA1 = (($batasBawah - $keanggotaan) * $minRule) / 2; $luasA2 = ($batasAtas - $batasBawah) * $minRule; $luasA3 = (($keanggotaanAkhir - $batasAtas) * $minRule) / 2; $totalLuas = $luasA1 + $luasA2 + $luasA3; // Menghitung moment $momentSatu = (0.05 / 3) * pow($batasBawah, 3) - (1.5 / 2) * pow($batasBawah, 2) - ((0.05 / 3) * pow($keanggotaan, 3) - (1.5 / 2) * pow($keanggotaan, 2)); $momentDua = ($minRule / 2) * pow($batasAtas, 2) - ($minRule / 2) * pow($batasBawah, 2); $momentTiga = (3.5 / 2) * pow($keanggotaanAkhir, 2) - (0.05 / 3) * pow($keanggotaanAkhir, 3) - ((3.5 / 2) * pow($batasAtas, 2) - (0.05 / 3) * pow($batasAtas, 3)); $totalMoment = $momentSatu + $momentDua + $momentTiga; } elseif ($tingkat_kerawanan == 'Sangat Rawan') { // Keanggotaaan berdasarkan fungsi keanggotaan // $keanggotaan = 70; // $keanggotaanAkhir = 90; $kerawanan = Kerawanan::where('himpunan', 'Sangat Rawan')->first(); if ($kerawanan) { $keanggotaan = $kerawanan->keanggotaan_awal; $keanggotaanAkhir = $kerawanan->keanggotaan_akhir; } // Batas bawah dan batas atas dari fungsi keanggotaan $batasBawah = $minRule * ($keanggotaanAkhir - $keanggotaan) + $keanggotaan; $batasAtas = $kerawanan->keanggotaan_akhir; // Menghitung luas $luasA1 = (($batasBawah - $keanggotaan) * $minRule) / 2; $luasA2 = ($batasAtas - $batasBawah) * $minRule; $totalLuas = $luasA1 + $luasA2; // Menghitung moment $momentSatu = (0.05 / 3) * pow($batasBawah, 3) - (3.5 / 2) * pow($batasBawah, 2) - ((0.05 / 3) * pow($keanggotaan, 3) - (3.5 / 2) * pow($keanggotaan, 2)); $momentDua = ($minRule / 2) * pow($batasAtas, 2) - ($minRule / 2) * pow($batasBawah, 2); $totalMoment = $momentSatu + $momentDua; } return [ 'keanggotaan' => $keanggotaan ?? 0, 'keanggotaanTengah' => $keanggotaanTengah ?? 0, 'keanggotaanAkhir' => $keanggotaanAkhir ?? 0, 'batasBawah' => $batasBawah ?? 0, 'batasAtas' => $batasAtas ?? 0, 'luasA1' => $luasA1 ?? 0, 'luasA2' => $luasA2 ?? 0, 'luasA3' => $luasA3 ?? 0, 'momentSatu' => $momentSatu ?? 0, 'momentDua' => $momentDua ?? 0, 'momentTiga' => $momentTiga ?? 0, 'totalLuas' => $totalLuas ?? 0, 'totalMoment' => $totalMoment ?? 0, ]; } }