@extends('layout.app') @section('content') @php // GENERATE PASANGAN SUB-KRITERIA SECARA DINAMIS $dynamicPairs = []; if (isset($subs) && count($subs) > 0) { $n = count($subs); for ($i = 0; $i < $n; $i++) { for ($j = $i + 1; $j < $n; $j++) { $dynamicPairs[] = [ 'kiri_kode' => $subs[$i]->kode, 'kiri_nama' => $subs[$i]->nama_sub ?? $subs[$i]->nama, 'kanan_kode' => $subs[$j]->kode, 'kanan_nama' => $subs[$j]->nama_sub ?? $subs[$j]->nama, ]; } } } // Helper Matriks Crisp (Sama persis dengan Kriteria Utama) if (!function_exists('formatCrispMatrix')) { function formatCrispMatrix($val) { if ($val == 1) return '1'; if ($val < 1 && $val > 0) { $pembagi = round(1 / $val); return "1/$pembagi"; } if ($val > 1 && floor($val) != $val) { $bulat = round($val); return "" . number_format($val, 2) . " ($bulat)"; } return "" . round($val) . ''; } } // Helper Skala Kuesioner if (!function_exists('formatSkalaKuesioner')) { function formatSkalaKuesioner($val) { if ($val == 1) return '1'; if ($val < 1) { $pembagi = round(1 / $val); return "1/$pembagi"; } return round($val); } } // Grouping data pakar $groupedKuesioner = $allData->groupBy('pakar_ke'); $pakarList = $groupedKuesioner->keys()->sort(); @endphp
Menampilkan transparansi perhitungan F-AHP untuk Sub-Kriteria sesuai teori Chang's Extent Analysis.
| Skala Saaty | Linguistik | TFN (l, m, u) | Nilai Kebalikan (1/u, 1/m, 1/l) |
|---|---|---|---|
| 1 | Sama Penting | (1, 1, 1) | (1.000, 1.000, 1.000) |
| 2 | Mendekati Sedikit Lebih Penting | (0.5, 1, 1.5) | (0.667, 1.000, 2.000) |
| 3 | Sedikit Lebih Penting | (1, 1.5, 2) | (0.500, 0.667, 1.000) |
| 4 | Mendekati Lebih Penting | (1.5, 2, 2.5) | (0.400, 0.500, 0.667) |
| 5 | Lebih Penting | (2, 2.5, 3) | (0.333, 0.400, 0.500) |
| 6 | Mendekati Sangat Penting | (2.5, 3, 3.5) | (0.286, 0.333, 0.400) |
| 7 | Sangat Penting | (3, 3.5, 4) | (0.250, 0.286, 0.333) |
| 8 | Mendekati Mutlak Penting | (3.5, 4, 4.5) | (0.222, 0.250, 0.286) |
| 9 | Mutlak Lebih Penting | (4, 4.5, 4.5) | (0.222, 0.222, 0.250) |
| Pasangan Sub-Kriteria | Skala Asli | Representasi TFN |
|---|---|---|
| {{ $item->subKiri->kode }} vs {{ $item->subKanan->kode }} | {{ formatSkalaKuesioner($item->nilai_skala) }} | ({{ number_format($item->tfn[0], 2) }}, {{ number_format($item->tfn[1], 2) }}, {{ number_format($item->tfn[2], 2) }}) |
| Pasangan Sub-Kriteria | Nilai GeoMean (Bulat) | TFN Konsensus |
|---|---|---|
| {{ $kiri }} vs {{ $kanan }} | {{ $displayGeo }} | ({{ number_format($tfnVal[0], 3) }}, {{ number_format($tfnVal[1], 3) }}, {{ number_format($tfnVal[2], 3) }}) |
| Kode Sub | @foreach ($kodes as $k){{ $k }} | @endforeach
|---|---|
| {{ $i }} | @foreach ($kodes as $j){!! formatCrispMatrix($crispMatrix[$i][$j]) !!} | @endforeach
| Sub-Kriteria | Total Kolom Matriks | Nilai Eigen (Priority Vector) |
|---|---|---|
| {{ $k }} | {{ number_format($colSums[$k], 4) }} | {{ number_format($priorityVector[$k], 4) }} |
| Kode Sub | @foreach ($kodes as $k){{ $k }} | @endforeach
|---|---|
| {{ $i }} | @foreach ($kodes as $j) @php $val = $matrix[$i][$j]; @endphp({{ number_format($val[0], 3) }}, {{ number_format($val[1], 3) }}, {{ number_format($val[2], 3) }}) | @endforeach
| Kode Sub | Vektor Si (l, m, u) |
|---|---|
| {{ $kode }} | ({{ number_format($val[0], 4) }}, {{ number_format($val[1], 4) }}, {{ number_format($val[2], 4) }}) |
| V(SBaris ≥ SKolom) | @foreach ($kodes as $k){{ $k }} | @endforeach
|---|---|
| {{ $i }} | @foreach ($rows as $val){{ number_format($val, 3) }} | @endforeach
| Sub-Kriteria | Nilai Minimal (d' = min V) | Bobot Normalisasi (W) | Tingkat Kepentingan (%) | Bobot Final (Skala 1000) |
|---|---|---|---|---|
| {{ $kode }} - {{ $namaSub }} | {{ number_format($minV, 4) }} | {{ number_format($w, 4) }} |
{{ number_format($w * 100, 2) }}%
|
{{ isset($bobot1000[$kode]) ? $bobot1000[$kode] : '-' }} |
| Total | {{ number_format($sumDPrime, 4) }} | 1.0000 | 100% | {{ isset($bobot1000) ? array_sum($bobot1000) : '-' }} |