get(); $dosen = User::where('role', 'Dosen')->get(); $no = 1; $alternatif = Alternatif::orderBy('nama', 'ASC')->get(); $dosen = User::where('role', 'Dosen')->orderBy('name', 'ASC')->whereNotIn('name', Alternatif::pluck('nama'))->get(); $kriteria = Kriteria::select('nama_kriteria')->orderby('id')->get(); for ($i = 0; $i < count($alternatif); $i++) { $penilaian = Penilaian::where('id_alternatif', $alternatif[$i]->id)->orderby('id_kriteria')->get(); if (count($penilaian) != 0) { $alternatif[$i]->penilaian = $penilaian; } else { $alternatif[$i]->penilaian = "null"; } } for ($a = 0; $a < count($alternatif); $a++) { $penilaian = Penilaian::where('id_alternatif', $alternatif[$a]->id) ->join('kriteria', 'kriteria.id', '=', 'penilaian.id_kriteria') ->join('nilai','kriteria.id','=','nilai.id_kriteria') ->select( 'penilaian.id', 'penilaian.id_alternatif', 'penilaian.id_kriteria', 'penilaian.nilai', 'kriteria.jenis', 'kriteria.nama_kriteria', 'nilai.nilai as bobot' ) ->orderby('penilaian.id_kriteria')->get(); $alternatif[$a]->penilaian = $penilaian; } $pembagi = array(); $matriks = $alternatif; for ($b = 0; $b < count($kriteria); $b++) { $temp = 0; for ($c = 0; $c < count($matriks); $c++) { $temp2 = $matriks[$c]->penilaian[$b]->nilai; $temp += pow($temp2, 2); } array_push($pembagi, sqrt($temp)); } for ($d = 0; $d < count($matriks); $d++) { for ($e = 0; $e < count($pembagi); $e++) { $matriks[$d]->penilaian[$e]->nilai_ternormalisasi = $matriks[$d]->penilaian[$e]->nilai / $pembagi[$e]; } } $matriks_nilai = $matriks; for ($f = 0; $f < count($matriks_nilai); $f++) { for ($g = 0; $g < count($matriks_nilai[$f]->penilaian); $g++) { $matriks_nilai[$f]->penilaian[$g]->nilai_ternormalisasi_nilai = ($matriks_nilai[$f]->penilaian[$g]->nilai_ternormalisasi * $matriks_nilai[$f]->penilaian[$g]->bobot); } } $nilai_optimasi_1 = $matriks_nilai; for ($h = 0; $h < count($nilai_optimasi_1); $h++) { $temp3 = 0; for ($i = 0; $i < count($nilai_optimasi_1[$h]->penilaian); $i++) { if ($nilai_optimasi_1[$h]->penilaian[$i]->jenis == 'benefit') { $temp3 += $nilai_optimasi_1[$h]->penilaian[$i]->nilai_ternormalisasi_nilai; } else { $temp3 -= $nilai_optimasi_1[$h]->penilaian[$i]->nilai_ternormalisasi_nilai; } } $nilai_optimasi_1[$h]->optimasi_1 = $temp3; } $nilai_optimasi_2 = $matriks_nilai; for ($h = 0; $h < count($nilai_optimasi_2); $h++) { $min = 0; $max = 0; for ($i = 0; $i < count($matriks_nilai[$h]->penilaian); $i++) { if ($matriks_nilai[$h]->penilaian[$i]->jenis == 'cost') { $min += $matriks_nilai[$h]->penilaian[$i]->nilai_ternormalisasi_nilai; } else { $max += $matriks_nilai[$h]->penilaian[$i]->nilai_ternormalisasi_nilai; } } if ($min != 0 && $max != 0) { $matriks_nilai[$h]->optimasi_2 = $max / $min; } elseif ($min == 0 && $max != 0) { $matriks_nilai[$h]->optimasi_2 = $max; } else { $matriks_nilai[$h]->optimasi_2 = $min; } } $arr_1 = array(); $arr_2 = array(); for ($j = 0; $j < count($nilai_optimasi_2); $j++) { array_push($arr_1, $nilai_optimasi_2[$j]->optimasi_1); array_push($arr_2, $nilai_optimasi_2[$j]->optimasi_2); } $rank_1 = array(); $ordered_1 = $arr_1; rsort($ordered_1); foreach ($arr_1 as $key => $value) { foreach ($ordered_1 as $ordered_key => $ordered_value) { if ($value === $ordered_value) { $key = $ordered_key; break; } } array_push($rank_1, $key + 1); } $rank_2 = array(); $ordered_2 = $arr_2; rsort($ordered_2); foreach ($arr_2 as $key1 => $value1) { foreach ($ordered_2 as $ordered_key1 => $ordered_value1) { if ($value1 === $ordered_value1) { $key1 = $ordered_key1; break; } } array_push($rank_2, $key1 + 1); } return view('rekomendasi', compact('kategori', 'dosen', 'no', 'kriteria', 'alternatif', 'dosen', 'pembagi', 'matriks', 'matriks_nilai', 'nilai_optimasi_1', 'nilai_optimasi_2', 'rank_1', 'rank_2')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * Display the specified resource. */ public function show(String $id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // } }