first(); $keterampilan = Kategori::where('kode', '02')->first(); $sikap = Kategori::where('kode', '03')->first(); $kehadiran = Kategori::where('kode', '04')->first(); // Fuzzy $x_pengetahuan = $pengetahuan->x; $y_pengetahuan = $pengetahuan->y; $z_pengetahuan = $pengetahuan->z; $x_keterampilan = $keterampilan->x; $y_keterampilan = $keterampilan->y; $z_keterampilan = $keterampilan->z; $x_sikap = $sikap->x; $y_sikap = $sikap->y; $z_sikap = $sikap->z; $x_kehadiran = $kehadiran->x; $y_kehadiran = $kehadiran->y; $z_kehadiran = $kehadiran->z; foreach ($siswa as $s) { // Hitung Indeks Kecocokan Fuzzy $fuzzy_pengetahuan = $this->getBobotFuzzy($s->pengetahuan); $fuzzy_keterampilan = $this->getBobotFuzzy($s->keterampilan); $fuzzy_sikap = $this->getBobotFuzzy($s->sikap); $fuzzy_kehadiran = $this->getBobotFuzzy($s->kehadiran); $s->x = (($fuzzy_pengetahuan['x'] * $x_pengetahuan) + ($fuzzy_keterampilan['x'] * $x_keterampilan) + ($fuzzy_sikap['x'] * $x_sikap) + ($fuzzy_kehadiran['x'] * $x_kehadiran))/4; $s->y = (($fuzzy_pengetahuan['y'] * $y_pengetahuan) + ($fuzzy_keterampilan['y'] * $y_keterampilan) + ($fuzzy_sikap['y'] * $y_sikap) + ($fuzzy_kehadiran['y'] * $y_kehadiran))/4; $s->z = (($fuzzy_pengetahuan['z'] * $z_pengetahuan) + ($fuzzy_keterampilan['z'] * $z_keterampilan) + ($fuzzy_sikap['z'] * $z_sikap) + ($fuzzy_kehadiran['z'] * $z_kehadiran))/4; // Alpha = 0 $s->fmcdm_a = 1/2 * ((0 * $s->z) + $s->y + (1 - 0) * $s->x); // Alpha = 0.5 $s->fmcdm_b = 1/2 * ((0.5 * $s->z) + $s->y + (1 - 0.5) * $s->x); // Alpha = 1 $s->fmcdm_c = 1/2 * ((1 * $s->z) + $s->y + (1 - 1) * $s->x); } $siswa = $siswa->sortByDesc('fmcdm_c')->values(); // Tambahkan ranking $siswa->each(function ($s, $index) { $s->ranking = $index + 1; }); // Assign hasil siswa ke variabel $hasilSiswa untuk dikirim ke view $hasilSiswa = $siswa; return view('main', compact('hasilSiswa', 'kategori')); } function getBobotFuzzy($nilai) { if ($nilai < 60) { return [ 'x' => 0, 'y' => 0, 'z' => 0.25, ]; } else if ($nilai >= 61 && $nilai <= 74) { return [ 'x' => 0, 'y' => 0.25, 'z' => 0.5, ]; } else if ($nilai >= 75 && $nilai <= 80) { return [ 'x' => 0.25, 'y' => 0.5, 'z' => 0.75, ]; } else if ($nilai >= 81 && $nilai <= 90) { return [ 'x' => 0.5, 'y' => 0.75, 'z' => 1, ]; } else if ($nilai >= 91 && $nilai <= 100) { return [ 'x' => 0.75, 'y' => 1, 'z' => 1, ]; } else { return [ 'x' => 0, 'y' => 0, 'z' => 0.25, ]; } } }