342 lines
20 KiB
PHP
342 lines
20 KiB
PHP
@include('components.theme.pages.header')
|
|
<section>
|
|
<?php $ranks = []; ?>
|
|
<div class="row mb-4">
|
|
<!-- Tabel Normalisasi Bobot Kriteria -->
|
|
<div class="col-md-12 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<h6 class="text-primary m-0">Tabel Normalisasi Bobot Kriteria</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr class="text-center">
|
|
<th>Kriteria</th>
|
|
<th>Bobot Kriteria</th>
|
|
<th>Normalisasi Bobot Kriteria</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="text-center">
|
|
<?php
|
|
$total_bobot = 0;
|
|
|
|
// Hitung total bobot untuk normalisasi
|
|
foreach (\App\Models\Kriteria::all() as $bobot_kriteria) {
|
|
$total_bobot += $bobot_kriteria->bobot_kriteria;
|
|
}
|
|
|
|
// Lakukan normalisasi bobot kriteria
|
|
foreach (\App\Models\Kriteria::all() as $kriteria) {
|
|
$normalisasi_bobot = $kriteria->bobot_kriteria / $total_bobot;
|
|
?>
|
|
<tr>
|
|
<td>({{ $kriteria->id_kriteria }}) {{ $kriteria->nama_kriteria }}</td>
|
|
<td>{{ $kriteria->bobot_kriteria }}</td>
|
|
<td>{{ $normalisasi_bobot }}</td>
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<h6 class="text-primary m-0">Tabel Penilaian Nasabah</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th rowspan="2" class="align-middle text-center">No</th>
|
|
<th rowspan="2" class="align-middle text-center">Nama Nasabah</th>
|
|
<th colspan="{{ \App\Models\Kriteria::count() }}" class="align-middle text-center">Nama
|
|
Kriteria</th>
|
|
</tr>
|
|
<tr>
|
|
@foreach (\App\Models\Kriteria::all() as $kri)
|
|
<td>({{ $kri->id_kriteria }}) {{ $kri->nama_kriteria }}</td>
|
|
@endforeach
|
|
</tr>
|
|
</thead>
|
|
<tbody class="text-center">
|
|
@php
|
|
$no = 1;
|
|
@endphp
|
|
@foreach (\App\Models\Alternatif::all() as $alt)
|
|
<tr>
|
|
<td>{{ $no++ }}</td>
|
|
<td>{{ $alt->nama_alternatif }}</td>
|
|
@foreach (\App\Models\Nilai::where('alternatif_kode', $alt->id_alternatif)->orderBy('kriteria_kode')->get() as $data_nilai)
|
|
<td>{{ $data_nilai->nilai_faktor }}</td>
|
|
@endforeach
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
<tfoot class="text-center table-warning">
|
|
<tr>
|
|
<td colspan="2">Nilai Max</td>
|
|
@foreach (\App\Models\Kriteria::all() as $kri)
|
|
@php
|
|
$max_value = \App\Models\Nilai::where('kriteria_kode', $kri->id_kriteria)->max(
|
|
'nilai_faktor',
|
|
);
|
|
@endphp
|
|
<td>{{ $max_value }}</td>
|
|
@endforeach
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">Nilai Min</td>
|
|
@foreach (\App\Models\Kriteria::all() as $kri)
|
|
@php
|
|
$min_value = \App\Models\Nilai::where('kriteria_kode', $kri->id_kriteria)->min(
|
|
'nilai_faktor',
|
|
);
|
|
@endphp
|
|
<td>{{ $min_value }}</td>
|
|
@endforeach
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<h6 class="text-primary m-0">Tabel Perhitungan Utility</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr class="">
|
|
<th rowspan="2" class="align-middle text-center">No</th>
|
|
<th rowspan="2" class="align-middle text-center">Alternatif</th>
|
|
<th colspan="{{ \App\Models\Kriteria::count() }}" class="align-middle text-center">
|
|
Kriteria</th>
|
|
</tr>
|
|
<tr class="">
|
|
@foreach (\App\Models\Kriteria::all() as $kri)
|
|
<td>({{ $kri->id_kriteria }}) {{ $kri->nama_kriteria }}</td>
|
|
@endforeach
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@php
|
|
$no = 1;
|
|
@endphp
|
|
@foreach (\App\Models\Alternatif::all() as $alternatif)
|
|
<tr>
|
|
<td>{{ $no++ }}</td>
|
|
<td>{{ $alternatif->nama_alternatif }}</td>
|
|
@foreach (\App\Models\Nilai::where('alternatif_kode', $alternatif->id_alternatif)->orderBy('kriteria_kode')->get() as $data_nilai)
|
|
@foreach (\App\Models\Kriteria::where('id_kriteria', $data_nilai->kriteria_kode)->get() as $kriteria)
|
|
@if ($kriteria->kriteria_kategori == 'benefit')
|
|
@php
|
|
$nilai_Cmax = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->max('nilai_faktor');
|
|
$nilai_Cmin = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->min('nilai_faktor');
|
|
@endphp
|
|
|
|
<!-- proses nilai utiliti -->
|
|
@php
|
|
if ($nilai_Cmax - $nilai_Cmin == 0) {
|
|
$nilai_utiliti = 0;
|
|
} else {
|
|
$nilai_utiliti =
|
|
($data_nilai->nilai_faktor - $nilai_Cmin) /
|
|
($nilai_Cmax - $nilai_Cmin);
|
|
}
|
|
@endphp
|
|
<td>{{ $nilai_utiliti }}</td>
|
|
@elseif($kriteria->kriteria_kategori === 'cost')
|
|
@php
|
|
$nilai_Cmax = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->max('nilai_faktor');
|
|
$nilai_Cmin = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->min('nilai_faktor');
|
|
@endphp
|
|
<!-- proses nilai utiliti -->
|
|
|
|
@php
|
|
if ($nilai_Cmax - $nilai_Cmin == 0) {
|
|
$nilai_utiliti = 0;
|
|
} else {
|
|
$nilai_utiliti =
|
|
($nilai_Cmax - $data_nilai->nilai_faktor) /
|
|
($nilai_Cmax - $nilai_Cmin);
|
|
}
|
|
@endphp
|
|
<td>{{ $nilai_utiliti }}</td>
|
|
@endif
|
|
@endforeach
|
|
@endforeach
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<h6 class="text-primary m-0">Tabel Hasil Akhir</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr class="">
|
|
<th rowspan="2" class="align-middle text-center">No</th>
|
|
<th rowspan="2" class="align-middle text-center">Alternatif</th>
|
|
<th colspan="{{ \App\Models\Kriteria::count() }}" class="align-middle text-center">
|
|
Kriteria</th>
|
|
<th rowspan="2" class="align-middle text-center">Nilai Akhir</th>
|
|
</tr>
|
|
<tr class="">
|
|
@foreach (\App\Models\Kriteria::all() as $kri)
|
|
<td>({{ $kri->id_kriteria }}) {{ $kri->nama_kriteria }}</td>
|
|
@endforeach
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@php
|
|
$no = 1;
|
|
$total_bobot = 0;
|
|
|
|
foreach (\App\Models\Kriteria::all() as $bobot_kriteria) {
|
|
$total_bobot += $bobot_kriteria->bobot_kriteria;
|
|
}
|
|
@endphp
|
|
@foreach (\App\Models\Alternatif::all() as $alternatif)
|
|
@php
|
|
$hasil_preferensi = 0;
|
|
@endphp
|
|
<tr>
|
|
<td>{{ $no++ }}</td>
|
|
<td>{{ $alternatif->nama_alternatif }}</td>
|
|
@foreach (\App\Models\Nilai::where('alternatif_kode', $alternatif->id_alternatif)->orderBy('kriteria_kode')->get() as $data_nilai)
|
|
@foreach (\App\Models\Kriteria::where('id_kriteria', $data_nilai->kriteria_kode)->get() as $kriteria)
|
|
@if ($kriteria->kriteria_kategori == 'benefit')
|
|
@php
|
|
$nilai_Cmax = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->max('nilai_faktor');
|
|
$nilai_Cmin = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->min('nilai_faktor');
|
|
$normalisasiBobot = $kriteria->bobot_kriteria / $total_bobot;
|
|
@endphp
|
|
|
|
<!-- proses nilai utiliti -->
|
|
@php
|
|
if ($nilai_Cmax - $nilai_Cmin == 0) {
|
|
$nilai_utiliti = 0;
|
|
} else {
|
|
$nilai_utiliti =
|
|
($data_nilai->nilai_faktor - $nilai_Cmin) /
|
|
($nilai_Cmax - $nilai_Cmin);
|
|
$nilai_preferensi = $nilai_utiliti * $normalisasiBobot;
|
|
$hasil_preferensi = $hasil_preferensi + $nilai_preferensi;
|
|
}
|
|
@endphp
|
|
<td>{{ round($nilai_preferensi, 5) }}</td>
|
|
@elseif($kriteria->kriteria_kategori === 'cost')
|
|
@php
|
|
$nilai_Cmax = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->max('nilai_faktor');
|
|
$nilai_Cmin = \App\Models\Nilai::where(
|
|
'kriteria_kode',
|
|
$kriteria->id_kriteria,
|
|
)->min('nilai_faktor');
|
|
$normalisasiBobot = $kriteria->bobot_kriteria / $total_bobot;
|
|
@endphp
|
|
<!-- proses nilai utiliti -->
|
|
|
|
@php
|
|
if ($nilai_Cmax - $nilai_Cmin == 0) {
|
|
$nilai_utiliti = 0;
|
|
} else {
|
|
$nilai_utiliti =
|
|
($nilai_Cmax - $data_nilai->nilai_faktor) /
|
|
($nilai_Cmax - $nilai_Cmin);
|
|
$nilai_preferensi = $nilai_utiliti * $normalisasiBobot;
|
|
$hasil_preferensi = $hasil_preferensi + $nilai_preferensi;
|
|
}
|
|
@endphp
|
|
<td>{{ round($nilai_preferensi, 5) }}</td>
|
|
@endif
|
|
@endforeach
|
|
@endforeach
|
|
<td><?= round($hasil_preferensi, 5) ?></td>
|
|
<?php
|
|
//masukan nilai hasil-sum, nama-alternatif, kode-alternatif ke dalam variabel $ranks(baris 26)
|
|
$rank['hasil_preferensi'] = $hasil_preferensi;
|
|
$rank['alternatifNama'] = $alternatif->nama_alternatif;
|
|
$rank['alternatifKode'] = $alternatif->id_alternatif;
|
|
array_push($ranks, $rank);
|
|
?>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-12 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-header">
|
|
<h6 class="text-primary m-0">Tabel Ranking</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-striped table-bordered">
|
|
<thead>
|
|
<tr class="table-warning text-center">
|
|
<th>Ranking</th>
|
|
<th>Nasabah</th>
|
|
<th>Nilai SMART</th>
|
|
<th>Keputusan</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="text-center">
|
|
<?php
|
|
$ranking = 1;
|
|
rsort($ranks);
|
|
foreach ($ranks as $r) {
|
|
?>
|
|
<tr>
|
|
<td class="text-center"><?= $ranking++ ?></td>
|
|
<td><?= '(' . $r['alternatifKode'] . ') ' . $r['alternatifNama'] ?></td>
|
|
<td><?= number_format($r['hasil_preferensi'], 2) ?></td>
|
|
@if ($r['hasil_preferensi'] >= 0.7)
|
|
<td class="bg-success text-white">Direkomendasikan</td>
|
|
@else
|
|
<td class="bg-danger text-white">Tidak Direkomendasikan</td>
|
|
@endif
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
@include('components.theme.pages.footer')
|